【csp模拟赛九】--dfs2

dfs
代码:
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,p,q,ans1,ans2,len;
int ans[35],sum[35];
bool ok[35];
struct haochi
{
int zl,jg,ctb;
int tot,dr[35];
friend bool operator < (const haochi &x,const haochi &y)
{ return x.zl<y.zl; }
}yu[35];
void dfs(int hao,int lei,int qian)
{
if(qian>m)return;
if(hao==n+1)
{
if((lei>ans1)||(lei==ans1&&qian>ans2))
{
len=0;
for(int i=1;i<=n;++i)
if(ok[i])ans[++len]=i;
ans1=lei;
ans2=qian;
}
return;
}
if(lei+(n-hao+1)<ans1 || (lei+(n-hao+1) ==ans1 && qian+sum[hao]<=ans2))return;
if(yu[hao].ctb)
{
dfs(hao+1,lei,qian);
return;
}
ok[hao]=1;
for(int i=1;i<=yu[hao].tot;++i)yu[yu[hao].dr[i]].ctb++;
dfs(hao+1,lei+1,qian+yu[hao].jg);
ok[hao]=0;
for(int i=1;i<=yu[hao].tot;++i)yu[yu[hao].dr[i]].ctb--; dfs(hao+1,lei,qian);
}
int main()
{
freopen("fish.in","r",stdin);
freopen("fish.out","w",stdout);
cin>>m>>n;
for(int i=1;i<=n;++i) scanf("%d%d",&yu[i].zl,&yu[i].jg);
sort(yu+1,yu+1+n);
for(int i=n;i>=1;i--)sum[i]=sum[i+1]+yu[i].jg;
while(scanf("%d%d",&p,&q)&&p&&q)
{
yu[p].dr[++yu[p].tot]=q;
yu[q].dr[++yu[q].tot]=p;
}
dfs(1,0,0);
cout<<ans1<<" "<<ans2<<endl;
for(int i=1;i<=len;i++)printf("%d\n",ans[i]);
fclose(stdin);fclose(stdout);
return 0;
}
/*
170 7
1 70
2 50
3 30
4 40
5 40
6 30
7 20
1 4
1 7
3 4
3 5
5 7
6 7
0 0
*/
【csp模拟赛九】--dfs2的更多相关文章
- 【csp模拟赛九】--dfs3
这道题贪心错误:直接dfs就行,枚举新开一个还是往之前的里面塞 贪心代码(80): #include<cstdio> #include<algorithm> #include& ...
- 【csp模拟赛九】--dfs
思路: 这道题可以宽搜,深搜,最短路 代码: #include<cstdio> #include<cstring> #include<iostream> #incl ...
- CSP模拟赛游记
时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...
- 【CSP模拟赛】Freda的迷宫(桥)
题目描述 Freda是一个迷宫爱好者,她利用业余时间建造了许多迷宫.每个迷宫都是由若干房间和走廊构成的,每条走廊都连接着两个不同的房间,两个房间之间最多只有一条走廊直接相连,走廊都是双向通过. 黄昏 ...
- 【csp模拟赛6】树上统计-启发式合并,线段树合并
30%:暴力 40%:枚举L,R从L~n枚举,R每增大一个,更新需要的边(bfs实现)60%:枚举每条边, 计算每条边的贡献另外20%的数据:枚举每条边,计算每条边的贡献100%:对于每一条边统计 有 ...
- CSP模拟赛2游记
这次由于有课迟到30min,了所以只考了70min. 调linux配置调了5min,只剩下65min了. T1:有点像标题统计,但要比他坑一点,而且我就被坑了,写了一个for(int i=1;i< ...
- 【CSP模拟赛】Freda的旗帜
题目描述 要开运动会了,Freda承担起了制作全校旗帜的工作.旗帜的制作方法是这样的:Freda一共有C种颜色的布条,每种布条都有无数个,你可以认为这些布条的长.宽.厚都相等,只有颜色可能不同.每个 ...
- 【csp模拟赛4】基站建设 (station.cpp)
[题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...
- 【CSP模拟赛】starway(玄学建边 最小生成树)
问題描述 小w伤心的走上了 Star way to heaven. 到天堂的道路是一个笛卡尔坐标系上一个n×m的长方形通道(顶点在(0,0))和(n,m)),小w从最左边任意一点进入,从右边任意一 ...
随机推荐
- shell 学习笔记1-什么是shell,shell变量
一.介绍 1.什么是shell Shell 既是一种命令语言,又是一种程序设计语言,他在操作系统得最外层,负责直接与用户对话,把用户得输入解释个OS,并处理各类操作系统得输出结果,输出到屏幕返回个i用 ...
- python多线程爬取斗图啦数据
python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...
- 你听过稀疏数组(sparseArray)吗?
稀疏数组(sparseArray) 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 1.记录数组一共有几行几列,有多少个不同的值 ...
- POJ3368(Frequent values)--线段树
题目在这里 3368 Accepted 7312K 1829MS C++ 6936B 题意为给你一组数据,再给定一组区间,问你这个区间内出现次数最多的元素的次数是多少. 我还记得这题是学校校赛基础的题 ...
- 什么是Familywise Error Rate
1.什么是Familywise Error Rate(FWE or FWER) 定义:在一系列假设检验中,至少得出一次错误结论的概率. 换句话说,是造成至少一次Type I Error的概率.术语FW ...
- Android NDK 学习之接受Java传入Object数组
本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件. 在Eclipse中添加配置NDK,路径如下Eclipse-> ...
- unittest 运行slenium(一)---创建配置类
文章主要是创建: log : 日志文件 excel :文档的读写 ini 及 yaml :文件的读取 一:创建log日志文件 主要是对logging框架进行二次封装并输出自己需要的日志格式 1. 首先 ...
- 解决用Xftp向虚拟机VMware传文件速度慢的问题
在使用Xftp向虚拟机传文件时发现很慢,之后几K,如果这个文件有几十M,这是一个非常让人头疼的问题.网上找过很多设置都试过,都没有效果,偶然发现Windows网络配置中,有个选项Large Send ...
- Bash基础——命令替换
参考:Linux 下Shell 脚本几种基本命令替换区别 Command substitution 命令替换Command substitution https://www.jb51.net/arti ...
- Linux VPS搭建蚂蚁笔记Leanote私有云笔记存储平台
一.基础环境LNMP 安装nginx: yum install epel-release -y yum install nginx -y # 启动 nginx systemctl start ngin ...