BNUOJ 29376 沙漠之旅 // 第十一届北京师范大学程序设计竞赛决赛
来源:互联网 发布:java 创建临时文件夹 编辑:程序博客网 时间:2024/04/29 04:47
沙漠之旅
Time Limit: 1000ms
Memory Limit: 65536KB
64-bit integer IO format: %lld Java class name: MainPrev
Submit Status Statistics Discuss
Next“小胖要穿越一片沙漠,小胖开着一辆大吉普,小胖的吉普油耗高,吉普能放四桶油。”
这就是人人会唱的沙漠之歌~~体现了小胖拔群的聪明才智。
小胖的问题是这样的:现在需要驾车穿越一片沙漠,总的行驶路程为L。小胖的吉普装满油能行驶X距离,同时其后备箱最多能放下四桶油。在起点有N种汽油,每种汽油都有无限桶,一桶能行驶距离Ai。现在小胖想知道:能不能恰好带四桶油,再加上出发前装满的油,使得恰好能行驶L距离。
Input
第一行一个正整数T(1 <= T <= 50),表示数据的组数。
接下来T组数据,每组数据的第一行是三个整数L(1 <= L <= 1000),X(1 <= X <= L),N(1 <= N <= 1000)。
接下来N行,每行一个正整数Ai(1 <= Ai <= 1000),表示第i种汽油一桶能行驶的距离。
Output
对于每组数据输出一行,若能输出“Yes”,否则输出“No”
Sample Input
120 9 223
Sample Output
Yes
Source
第十一届北京师范大学程序设计竞赛决赛
Author
zhaoli
题意很简单就不说啦。
思路:
1.用数组标记把任意两个Ai的和标记一下,之后看这些和中有没有相加等于L-X的,这个思路容易理解;
2.用搜索写;
代码:
#include<stdio.h>#include<string.h>int a[1005];int vis[2005];int main(){ int T; scanf("%d",&T); while(T--) { int n,l,x,m; scanf("%d %d %d",&l,&x,&n); m=l-x; memset(vis,0,sizeof(vis)); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { vis[a[i]+a[j]]=1; } } int flag=0;//不知道为什么这样写明明一样却一直RE// for(int i=1;i<=n;i++)// {// for(int j=1;j<=n;j++)// {// if(vis[m-a[i]-a[j]]==1)//m-a[j]-a[i]可能是负数所以不能这么写// {// printf("Yes\n");// flag=1;// break;// }// }// if(flag==1)// {// break;// }// } for(int i=0; i<=m; i++) { if(vis[i]==1&&vis[m-i]==1) { printf("Yes\n"); flag=1; break; } } if(flag==0) { printf("No\n"); } }}
搜索
#include<stdio.h>#include<string.h>int a[1005];int n,m,flag;void bfs(int sum,int s,int t){ int next; if(s>4||sum>m||flag==1) { return ; } if(s==4&&sum==m) { flag=1; return ; } for(int i=t;i<n;i++) { next=sum+a[i]; bfs(next,s+1,i); } return ;}int main(){ int T; scanf("%d",&T); while(T--) { int l,x; scanf("%d%d%d",&l,&x,&n); m=l-x; for(int i=0;i<n;i++) { scanf("%d",&a[i]); } flag=0; for(int i=0;i<n;i++) { if(flag==1) { break; } bfs(0,0,i); } if(flag) printf("Yes\n"); else printf("No\n"); }}
2 0
- BNUOJ 29376 沙漠之旅 // 第十一届北京师范大学程序设计竞赛决赛
- 第十一届北京师范大学程序设计竞赛(网络同步赛)+沙漠之旅
- 【BNUOJ】【第十四届北京师范大学程序设计竞赛决赛】D. Air Hockey
- bnuoj 4351题美女来找茬 (第九届北京师范大学程序设计竞赛决赛)
- bnuoj-4357 传送阵(第九届北京师范大学程序设计竞赛决赛)
- 第十一届北京师范大学程序设计竞赛解题报告
- BNUOJ--29376 沙漠之旅
- 杨辉三角形//第八届北京师范大学程序设计竞赛决赛
- 第十五届北京师范大学程序设计竞赛决赛(网络同步赛)
- 第十五届北京师范大学程序设计竞赛决赛(网络同步赛)
- 第十五届北京师范大学程序设计竞赛决赛 A.Another Server【思维】
- 第十五届北京师范大学程序设计竞赛决赛 D. Disdain Chain【思维】
- 第十五届北京师范大学程序设计竞赛决赛(网络同步赛)
- 第十五届北京师范大学程序设计竞赛决赛 D. Disdain Chain
- 第十五届北京师范大学程序设计竞赛决赛(网络同步赛)
- 第十三届北京师范大学程序设计竞赛决赛 【(6+2)/10】
- 第十二届北京师范大学程序设计竞赛决赛训练总结【7/10】
- 第十届北京师范大学程序设计竞赛
- 系统自带的搜索控制器和自己封装的带搜索记录的控制器
- 抽象类是否可以继承实体类
- onos安装
- Android硬件访问服务框架代码编写
- OC-第一个类
- BNUOJ 29376 沙漠之旅 // 第十一届北京师范大学程序设计竞赛决赛
- C#工程缺少IIS组件无法打开的解决办法
- 发送一条普通广播 有序广播 Broadcast 和 Receiver
- OC-第一个方法
- 玩转Android studio 插件开发、测试、JCenter库发布(2)
- BZOJ 4367 [IOI2014]holiday假期 分治 主席树
- mobile h5 rem.js 使用
- OC-第一个方法2
- C#无标题窗体的拖动