这道题贪心错误:直接dfs就行,枚举新开一个还是往之前的里面塞

贪心代码(80):

#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#define N 10500
using namespace std;
int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){ if(ch=='-')f=-1;ch=getchar(); }
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int n,W,ans,wei,len1,len2,tot,c[N];
bool vis[N];
struct node{ int val,id; }a[N],b[N];
bool cmp1(const node &a,const node &b)
{
return a.val>b.val;
}
bool cmp2(const node &a,const node &b)
{
return a.val<b.val;
}
int main()
{
#ifdef yilnr
#else
freopen("climb.in","r",stdin);
freopen("climb.out","w",stdout);
#endif
n=read(); wei=read();
for(int i=1;i<=n;i++)
{
a[i].val=read(); b[i].val=a[i].val;
a[i].id=b[i].id=i;
}
sort(a+1,a+n+1,cmp2);
sort(b+1,b+n+1,cmp1);
while(tot!=n)
{
ans++;
W=wei;
len2=1;
while(W>=b[len2].val && len2<=n)
{
if(!vis[b[len2].id])
{
W-=b[len2].val; vis[b[len2].id]=1; tot++;
}
len2++;
}
for(int i=1;i<=n;i++)c[i]=a[i].val;
len1=upper_bound(c+1 , c+n+1 , W) - c;
len1--;
while(W>=a[len1].val && len1>=1)
{
if(!vis[a[len1].id])
{
W-=a[len1].val; vis[a[len1].id]=1; tot++;
}
len1--;
}
}
printf("%d\n",ans);
fclose(stdin);fclose(stdout);
return 0;
}
/*
5 1996
1
2
1994
12
29
*/

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std; int n,m;
int a[50];
int ans,sta[50]; inline void DFS(int opt,int cnt) {
if(cnt >= ans) return ;
if(opt == n + 1) {
ans = min(cnt,ans);
return ;
}
for(int i = 1;i <= cnt;i ++) {
if(sta[i] + a[opt] <= m) {
sta[i] += a[opt];
DFS(opt + 1,cnt);
sta[i] -= a[opt];
}
}
sta[cnt + 1] = a[opt];
DFS(opt + 1,cnt + 1);
sta[cnt + 1] = 0;
} int main() {
freopen("climb.in","r",stdin);
freopen("climb.out","w",stdout); scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i ++)
scanf("%d",&a[i]);
sort(a + 1,a + n + 1,greater<int>());
ans = n; DFS(1,1);
printf("%d",ans); fclose(stdin);
fclose(stdout);
return 0;
}

【csp模拟赛九】--dfs3的更多相关文章

  1. 【csp模拟赛九】--dfs2

    dfs 代码: #include<algorithm> #include<iostream> #include<cstdio> using namespace st ...

  2. 【csp模拟赛九】--dfs

    思路: 这道题可以宽搜,深搜,最短路 代码: #include<cstdio> #include<cstring> #include<iostream> #incl ...

  3. CSP模拟赛游记

    时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...

  4. 【CSP模拟赛】Freda的迷宫(桥)

    题目描述 Freda是一个迷宫爱好者,她利用业余时间建造了许多迷宫.每个迷宫都是由若干房间和走廊构成的,每条走廊都连接着两个不同的房间,两个房间之间最多只有一条走廊直接相连,走廊都是双向通过.  黄昏 ...

  5. CSP模拟赛2游记

    这次由于有课迟到30min,了所以只考了70min. 调linux配置调了5min,只剩下65min了. T1:有点像标题统计,但要比他坑一点,而且我就被坑了,写了一个for(int i=1;i< ...

  6. 【CSP模拟赛】Freda的旗帜

    题目描述  要开运动会了,Freda承担起了制作全校旗帜的工作.旗帜的制作方法是这样的:Freda一共有C种颜色的布条,每种布条都有无数个,你可以认为这些布条的长.宽.厚都相等,只有颜色可能不同.每个 ...

  7. 【csp模拟赛4】基站建设 (station.cpp)

    [题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...

  8. 【CSP模拟赛】starway(玄学建边 最小生成树)

    问題描述 小w伤心的走上了 Star way to heaven.   到天堂的道路是一个笛卡尔坐标系上一个n×m的长方形通道(顶点在(0,0))和(n,m)),小w从最左边任意一点进入,从右边任意一 ...

  9. 【CSP模拟赛】Confess(数学 玄学)

    题目描述 小w隐藏的心绪已经难以再隐藏下去了.小w有n+ 1(保证n为偶数)个心绪,每个都包含了[1,2n]的一个大小为n的子集.现在他要找到隐藏的任意两个心绪,使得他们的交大于等于n/2. 输入描述 ...

随机推荐

  1. 怎么将visual studio项目打包生成dll文件

    1.打开电脑再打开visual studio软件,在软件里面新建一个项目,文件---->新建---->项目,打开新建项目窗口. 2.选择C#类工程,并为项目命名. 3.将类库文件class ...

  2. iOS - error:unrecognized selector sent to class 导入第三方SDK .a后不识别,运行崩溃

    今天将app统计的.a静态库包含到一个app应用中,调试时报下面的错误: *** Terminating app due to uncaught exception 'NSInvalidArgumen ...

  3. Java 之 字符输出流[writer]

    一.字符输出流 java.io.Writer 抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地.   它定义了字节输出流的基本共性功能方法. void write(int c) ...

  4. Xcode11.1 踩坑备忘录

    Xcode11.1 踩坑备忘录(mac系统10.15) 1 .环信ChatDemo2.0报错 这是环信ChatDemo2.0报错 NSInteger numberOfBeforeSection = [ ...

  5. 【前端开发】nrm切换淘宝镜像&nvm管理node版本及切换

    说明:nrm是切换淘宝镜像用的,nvm是node的版本切换用的(可在自己电脑安装多个版本node,便于不同项目的支持) 一.nrm的安装及常见命令: 安装nrmnpm install -g nrm 查 ...

  6. 简单使用auth认证实现登录注册

    1 添加路由 //注册 Route::get('/register',"RegisterController@index"); Route::post('/register',&q ...

  7. Vue-filter指令全局过滤和稀有过滤

    简单介绍一下过滤器,顾名思义,过滤就是一个数据经过了这个过滤之后出来另一样东西,可以是从中取得你想要的,或者给那个数据添加点什么装饰,那么过滤器则是过滤的工具.例如,从['abc','abd','ad ...

  8. sql基本操作之增删改查

    1. 显示数据库 show databases; show databases; 2. 显示当前数据库 select current_database(); 3. 创建/删除数据库 create da ...

  9. CISCO设备配置SSH 登陆

    1. 设置设备域名CISCO ip domain name CISCO2.创建密钥Server(config)#crypto key generate rsa The name for the key ...

  10. PAT基础级-钻石段位样卷2-7-6 帅到没朋友 (20 分)

    当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤),是已知朋友圈的个数:随后N行,每行首先给出一个 ...