ACM俱乐部算法基础练习赛(1)
A:
水题
代码:
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- int she[];
- int n,m,c;
- int main()
- {
- int ca=,a;
- while(scanf("%d%d%d",&n,&m,&c)&&(n+m+c))
- {
- printf("Sequence %d\n",ca++);
- for(int i=; i<=n; i++)
- scanf("%d",&she[i]);
- int ans=,ma=;
- while(m--)
- {
- scanf("%d",&a);
- ans+=she[a];
- ma=max(ma,ans);
- she[a]=-she[a];
- }
- if(ma>c)puts("Fuse was blown.");
- else
- {
- puts("Fuse was not blown.");
- printf("Maximal power consumption was %d amperes.\n",ma);
- }
- puts("");
- }
- return ;
- }
B:
模拟;
代码:
- #include<cstdio>
- #include<cstring>
- #include<queue>
- #define maxn 55
- using namespace std;
- bool map[maxn][maxn];
- int n,flag;
- struct node
- {
- int x,y;
- };
- queue<node>q;
- void move(char s)
- {
- node cur=q.back();
- node next=q.front();
- q.pop();
- map[next.x][next.y]=;
- if(s=='E')
- {
- next.x=cur.x;
- next.y=cur.y+;
- }
- else if(s=='N')
- {
- next.x=cur.x-;
- next.y=cur.y;
- }
- else if(s=='W')
- {
- next.x=cur.x;
- next.y=cur.y-;
- }
- else if(s=='S')
- {
- next.x=cur.x+;
- next.y=cur.y;
- }
- if(map[next.x][next.y]==)
- {
- flag=;
- return;
- }
- else if(next.x<=||next.x>||next.y<=||next.y>)
- {
- flag=-;
- return;
- }
- else
- {
- q.push(next);
- map[next.x][next.y]=;
- }
- }
- char s[];
- int main()
- {
- while(scanf("%d",&n)&&n)
- {
- node no;
- flag=;
- memset(map,,sizeof map);
- while(!q.empty())q.pop();
- for(int i=; i<=; i++)
- {
- no.x=;
- no.y=i;
- map[][i]=;
- q.push(no);
- }
- scanf("%s",s);
- int i;
- for(i=; i<n; i++)
- {
- move(s[i]);
- if(flag<)break;
- }
- if(flag==)printf("The worm successfully made all %d moves.\n",n);
- else if(flag==-)printf("The worm ran off the board on move %d.\n",i+);
- else if(flag==)printf("The worm ran into itself on move %d.\n",i+);
- }
- return ;
- }
C:
我用的是bfs;
代码:
- #include<cstdio>
- #include<queue>
- #include<vector>
- #define maxn 10005
- using namespace std;
- vector<int>ve[maxn];
- int di[maxn];
- queue<int>q;
- int main()
- {
- int n,x;
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- scanf("%d",&x);
- ve[x].push_back(i);
- }
- int l=ve[].size();
- for(int i=;i<l;i++)
- {
- q.push(ve[][i]);
- di[ve[][i]]=;
- }
- while(!q.empty())
- {
- int cur=q.front();
- q.pop();
- l=ve[cur].size();
- for(int i=;i<l;i++)
- {
- q.push(ve[cur][i]);
- di[ve[cur][i]]=di[cur]+;
- }
- }
- int ans=;
- for(int i=;i<=n;i++)
- if(ans<di[i])ans=di[i];
- printf("%d\n",ans);
- }
D:
dfs;
我先用一个表来存,一直都是T;
没想到用状态压缩就可以过了;
代码:
- #include<cstdio>
- #include<vector>
- #define maxn 23
- using namespace std;
- vector<int>ve[maxn];
- int n,s,m;
- bool dfs(int x,int t)
- {
- if(t==s)return x==n-;
- int l=ve[x].size();
- for(int i=;i<l;i++)
- {
- int a=ve[x][i];
- if(~(t>>a)&)
- if(dfs(a,t|(<<a)))
- return ;
- }
- return ;
- }
- int main()
- {
- int x,y;
- while(scanf("%d%d",&n,&m)!=EOF)
- {
- for(int i=;i<n;i++)
- ve[i].clear();
- for(int i=;i<m;i++)
- {
- scanf("%d%d",&x,&y);
- x--,y--;
- ve[x].push_back(y);
- ve[y].push_back(x);
- }
- s=(<<n)-;
- if(dfs(,))puts("");
- else puts("");
- }
- return ;
- }
ACM俱乐部算法基础练习赛(1)的更多相关文章
- Levenberg-Marquardt算法基础知识
Levenberg-Marquardt算法基础知识 (2013-01-07 16:56:17) 转载▼ 什么是最优化?Levenberg-Marquardt算法是最优化算法中的一种.最优化是寻找使 ...
- acm常见算法及例题
转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法: (1)枚举. (poj17 ...
- ACM常用算法及练习(2)
ACM常用算法及练习 知识类型 重要度 容易度 应掌握度 典型题 其他 数据结构(5) 链表 ★★☆ ★★★ ★★☆ 栈 stack ★★★ ★★★ ★★★ HLoj120 ...
- ACM常用算法及练习(1)
ACM常用算法及练习 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短 ...
- 解读Raft(一 算法基础)
最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理. 我会将Raft协议拆成四个部分去总结: 算法基础 选举和日志复制 安全性 节点变 ...
- 腾讯2017年暑期实习生编程题【算法基础-字符移位】(C++,Python)
算法基础-字符移位 时间限制:1秒 空间限制:32768K 题目: 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间. 你能帮帮小Q吗? ...
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
- ACM主要算法
ACM主要算法ACM主要算法介绍 初期篇 一.基本算法(1)枚举(poj1753, poj2965)(2)贪心(poj1328, poj2109, poj2586)(3)递归和分治法(4)递推(5)构 ...
- 毕业设计预习:SM3密码杂凑算法基础学习
SM3密码杂凑算法基础学习 术语与定义 1 比特串bit string 由0和1组成的二进制数字序列. 2 大端big-endian 数据在内存中的一种表示格式,规定左边为高有效位,右边为低有效位.数 ...
随机推荐
- dependencies与devDependencies的区别
npm install在安装node模块时,有两种命令参数可以把它们的信息写入package.json文件: –save –save-dev 但它的文档里1,只提到一个小区别,–save会把依赖包名称 ...
- layer.js子窗口关闭并传数据到父窗的方法
昨晚整了很晚,一直找不到方法.去官网api看了好久,又在网上搜了很久 始终找不到答案.今天自己终于找到了方法. 难点:因为 确认和取消按钮都是在父窗 调用js生成的按钮.只能从父窗回调的时候去去数据并 ...
- webstorm 如何修改背景颜色
http://www.cnblogs.com/zxyun/p/4744744.html 见文章底部有图文说明 15个必须知道的chrome开发者技巧(GIF):http://www.wtoutiao. ...
- struts2学生信息管理系统篇章②进度报告篇章
之前做这个系统的时候是什么都不懂的! 经过一个月的时间,慢慢的java的知识都捡起来了. 对struts2和mvc模式都有一一定程度的了解,汇报一下上次的进度. 这个系统我所有的功能中我暂时只做到了下 ...
- Maven 管理项目 jar出现miss
这个情况出现在包并没有下载下来就断了,这样的情况就从别人机器上copy一份完好的jar直接报错的那个根目录给覆盖就好了.
- python中关于正则表达式三
2015年8月14日 11:10 7.2正则表达式操作 正则表达式使用反斜杠字符'\'来暗示一些特殊的形式或者允许特殊的字符使用但是没有调用它们特殊的意思.在字符串常量中的相同目标的字符的python ...
- MyEclipse常见配置及调试
常见配置 1.配置workspace ----- 建议不要采用含有空格和中文目录 所有代码保存workspace空间中2.新建工程时,设置工程需要jre环境MyEclipse提供多种内置layout ...
- ACM/ICPC ZOJ1003-Crashing Balloon 解题代码
#include <iostream> using namespace std; int main() { int **array = new int *[100]; for ( int ...
- C#&JQuery非缓存式无刷新临时存储数据之仿购物车功能
感谢广大博问博友的帮助和共同研究讨论,终于实现了一个无缓存无刷新仿购物车的小功能: 一.实现效果简述: 有一种列表,是由双层Repeater嵌套,第一层用来显示类别,第二层用来显示类别下的商品数据, ...
- 安装aptana插件报Error opening the editor. java.lang.NullPointerException
Aptana的官方网站下载eclipse的插件: http://update.aptana.com/update/studio/3.2/ ,可以在线安装也可以下载插件后再安装,我是以在线的形式安装的 ...