2014CSUACM小组练习赛1

就一道中文题,就先看这道,是一道迷宫题,BFS可以解答,路径输出部分正好昨天看最长公共子序列遇到到过。然后做题过程中发现好多人

都把第一题第二题做完了,这时候正好感觉D题有些代码量,就做A B,A题是水题,B题其实也是水题,一开始没看懂题,写了一大坨代码,结果

time limited!然后就沉下心去做D题,1A,继续看B题,同样还是time limited!然后时间就到了,结束重新看了一下题目才恍然大悟。

B题代码CodeForce 230A

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 const int maxn=1000+5;
 5 int a[maxn],b[maxn],vis[maxn];
 6 int main()
 7 {
 8     int s,n;
 9     while(scanf("%d%d",&s,&n)==2){
10         for(int i=0;i<n;i++)
11             scanf("%d%d",&a[i],&b[i]);
12         memset(vis,0,sizeof(vis));
13         for(int i=0;i<n;i++)
14         for(int j=i+1;j<n;j++){
15             if(a[i]>a[j]){
16                 int t1=a[i],t2=b[i];
17                 a[i]=a[j];
18                 a[j]=t1;
19                 b[i]=b[j];
20                 b[j]=t2;
21             }
22         }
23         for(int i=0;i<n;i++){
24             if(s>a[i] && !vis[i]){
25                 s+=b[i];
26                 vis[i]=1;
27             }
28         }
29         int flag=1;
30         for(int i=0;i<n;i++)
31             if(!vis[i])
32             flag=0;
33        if(flag)
34             printf("YES\n");
35         else
36             printf("NO\n");
37     }
38     return 0;
39 }

下面附上D题BFS代码。POJ3984

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<queue>
 4 int maze[8][8],vis[8][8],foot[8][8];
 5 int dir[5][3]={{1,0},{0,-1},{-1,0},{0,1}};
 6 struct node{
 7     int xpos;
 8     int ypos;
 9     void init(int x,int y)
10     {
11         xpos=x;
12         ypos=y;
13     }
14 }fa[30];
15 void bfs(node source,node target)
16 {
17     vis[source.xpos][source.ypos]=1;
18     std::queue<node>q;
19     q.push(source);
20     foot[0][0]=1;
21     while(!q.empty()){
22         node a=q.front();
23         q.pop();
24         for(int i=0;i<4;i++){
25         int nx=a.xpos+dir[i][0];
26         int ny=a.ypos+dir[i][1];
27              if(nx<0 || ny<0 || nx>=5 || ny>=5)
28                   continue;
29              if(nx==target.xpos && ny==target.ypos){
30                     node c;
31                     c.xpos=nx;
32                     c.ypos=ny;
33                     q.push(c);
34                     vis[nx][ny]=1;
35                     fa[nx*5+ny]=a;
36                     foot[nx][ny]=1;
37                     return;
38              }
39              if(maze[nx][ny])
40                 continue;
41              if(vis[nx][ny])
42                 continue;
43                     node c;
44                     c.xpos=nx;
45                     c.ypos=ny;
46                     q.push(c);
47                     vis[nx][ny]=1;
48                     fa[nx*5+ny]=a;
49                     foot[nx][ny]=1;
50         }
51     }
52 }
53 void printfoot(int i,int j)
54 {
55     if(i==0 && j==0)
56         return;
57     if(foot[i][j]){
58         node p=fa[i*5+j];
59         int ni=p.xpos;
60         int nj=p.ypos;
61         printfoot(ni,nj);
62         printf("(%d, %d)\n",i,j);
63     }
64 }
65 int main()
66 {
67     while(scanf("%d",&maze[0][0])!=EOF){
68         for(int i=0;i<5;i++)
69         for(int j=0;j<5;j++){
70             if(i==0 && j==0)
71             continue;
72             scanf("%d",&maze[i][j]);
73         }
74         memset(vis,0,sizeof(vis));
75         memset(foot,0,sizeof(foot));
76         node source,target;
77         source.init(0,0);
78         target.init(4,4);
79         bfs(source,target);
80         printf("(0, 0)\n");
81         printfoot(4,4);
82     }
83     return 0;
84 }

2014CSUACM小组练习赛1

时间: 2024-10-19 12:18:43

2014CSUACM小组练习赛1的相关文章

其他小组对我们的评价汇总

各组对我们的成果提出的意见如下: 1.跑男2015 七班的小同学们,恭喜你们的闹钟基本功能已经得到了实现.你们的前期目标就是这个吧?但是在演示的过程中我也发现了一些小小的额问题.首先你们的闹钟没有做出自己的花样 啊!这个需要加把劲了,在巨人的肩膀上往上走有时候也是很困难的一件事儿,在演示的过程中我没有看到你们的闹钟铃声能不能自己随意的在本地音乐库里选择,可不可以联网选择铃声呢?暂时没有看到你们的便签,由于智力有限也没想象出你们的闹钟便签会给我带来什么不一样的感觉,很期待你们下次要给我们带来的惊喜

怎样增加Dave 英语学习小组

一.     增加小组 英语对IT 是非常重要的,但非常多人都不能坚持去学习,Dave 英语学习小组成立与已经超过半年,如今进行扩招.欢迎想提高英语,而且能够坚持每天学习的人,增加Dave 的小组.并坚持每天学习. 要求: (1)  从增加小组当天開始,计算打卡率. (2)   打卡率低于85%的,会被剔出小组,须要又一次增加. (3)  能够安装手机client.利用上下班的零碎时间来学习. (4)  每天学习英语时间控制在1小时左右. 注冊扇贝帐号: http://www.shanbay.c

第九小组

一:PTA题目集 1 删除单链表偶数节点实现在pta上未能满分,运行后如果第一位数是偶数则输出错误,一下为我们的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 struct ListNode *createlist() {     struct ListNode *r,*s,*L,*head;     int n,i=0;     L=(struct L

alpha发布之小组评论

经过今天的alpha发布后,看到了很多优秀的作品,对我的触动很大.平时看似都在一起上课的同学大家都在努力的完成自己的项目,但是自己也美其名曰没有闲着,但是在今天的发布日期上却没有拿出可展示的成果.其实不必管别人通过什么手段完成的项目,或许功能没有全部做完,但是他们能在规定的日期内拿出初步的成果,在这一点上是我学习的榜样.不能将追求完美当做自己今天没有发布的的借口,因为大家的成果都不是完美的,在相同的时间和条件下,我们做的没有其他组好.可以想象在真实的股东评价会议上,我们这个产品已经被pass掉了

2.采用四象限法将你小组的四则运算软件的需求功能进行分类。阐述其优势与不足。------------答题人:张立鹏

如果把要做的事情按照紧急.不紧急.重要.不重要的排列组合分成四个象限,这四个象限的划分有利于我们对时间进行深刻的认识及有效的管理. 第一象限 这个象限包含的是一些紧急而重要的事情,这一类的事情具有时间的紧迫性和影响的重要性,无法回避也不能拖延,必须首先处理优先解决.它表现为重大项目的谈判,重要的会议工作等. 第二象限 这二象限不同于第一象限,这一象限的事件不具有时间上的紧迫性,但是,它具有重大的影响,对于个人或者企业的存在和发展以及周围环境的建立维护,都具有重大的意义. 第三象限 第三象限包含的

连连看的设计与实现——四人小组项目(NABCD)

小组名称:天天向上 成员:王森.张政,张金生,栾骄阳 题目:连连看游戏 NABCD N(需求) 游戏最大的乐趣在于玩法,我们要想在众多的连连看游戏当中脱颖而出,就需要增加更多富有乐趣.吸引用户的玩法. A( 做法) 讲过小组讨论以及咨询同学,想了一些具有趣味性的玩法,如下: 玩法1:增加时间图标按钮,如果时间图标按钮消除,系统会增加游戏时间. 玩法2:用户在系统提供的图片中选择喜欢的按钮图片,系统根据用户的选择生成一关. 玩法3:系统设有排行榜功能.在一局游戏中,当两个按钮消除成功时,增加游戏积

第四题:根据邹欣老师的教材相关内容,确定小组成员的角色,细化项目需求、时间计划、列出产品积压工作项和预计开发时间

根据小组的详细讨论,以个人爱好与特长结合,最后确定了每个成员担当的角色 小组成员 角色分工   尤心心 组长,项目每周管理与总结,开发工程师   徐萧瑞 结构设计与数据库设计,开发工程师   杨宇杰 需求分析,开发工程师   张立鹏 前端开发,开发工程师   张鹏 测试与开发工程师   细化项目需求: 基本需求是:学生注册登录系统,开始答小学生四则运算题(题目随机产生20道),时间限定,分数产生 可能拓展需求:题目难度选择(带真分数运算,最大数值等),题目产生数量选择,查看答题,错题重新考试,分

四人小组项目——连连看

小组名称:天天向上 组长:王森 组员:张政,张金生,栾骄阳 题目:连连看游戏 项目期限:十周内,暂定2016.9.10-2016.11.19 需求分析: 1.概要:玩家可以将2个相同图案的牌连接起来,连接不多于3根直线,就可以成功的将两个图片消除. 2.操作:第一次使用鼠标点击游戏界面中的牌,该牌此时为“被选中”以特殊方式显示:再次以鼠标点击其他牌,若该牌与被选中的牌图案相同,且把第一个牌到第二个牌连起来,中间的直线不超过3根,则消掉这一对牌,否则第一个牌变为未被选中状态,而第二张牌变成选中状态

暑假练习赛 003 F Mishka and trip

F - Mishka and trip Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Description Input Output Sample Input Sample Output Hint Description Peter Parker wants to play a g