南阳理工学院软件月赛
2016-03-28 23:03
375 查看
七龙珠
算法:多源最短路
七龙珠散落在了各地,我们已经找到了一个龙珠并感应到了其他龙珠的所在城镇,问以某种顺序找齐七个龙珠(路过城镇可以不取走龙珠),最快几天能找齐?
输入
Input
第一行一个整数T(少于5组)表示测试数据组数,每组数据第一行 N(2<=N<=300个城镇),M(0<M<100),
之后有n+m行,前n行每行n个整数,第K行的L个数表示第K镇到第L镇的距离,之后m行每行6个整数表示取珠城市顺序(第一个整数为当前位置) 。(均在int范围内)
Output
每组数据m行,每行一个整数,最少需要的天数。
Sample Input
1
6 1
0 2 2 2 2 5
2 0 3 3 3 4
2 3 0 4 5 4
2 3 4 0 1 3
2 3 5 1 0 6
5 4 4 3 6 0
1 2 3 4 5 6
Sample Output
14
Hint
样例为1-2-3-4-5-4-6
一定要看清楚题!!
代码:
考古
考古专家发现了一个葬着多人的大墓穴,可是骨头杂乱无序堆在一起,考古学家现确定了某些对骨头应该是同一个人的,问这个洞穴中,最多葬了多少个人(木有骨头的肯定不用算了)。
Input
多组输入数据(少于100),每组第一行两个正整数N(小于1000表示骨头个数),M(之后M行会告诉你哪两个骨头是一个人的),当N为0时,输入结束,该用例不被处理。
Output
每组输出一个数,表示这里最多埋葬了多少人。
Sample Input
4 3
1 2
2 3
1 3
0
Sample Output
2
代码:
背包
有N种物品各一个,问是否能够凑成Mkg装到背包中。
Input
第一行一个整数T(T<=1000)测试数据组数,每组第一行为(1<N<=1000),M(1<m<=1000)两个正整数,第二行N个整数代表N种物品的质量Gi(小于1000)。
Output
可以凑成输出“Y”,否则输出“N”
Sample Input
2
3 5
1 2 3
3 7
1 2 3
Sample Output
Y
N
代码:
洞的编号
有N(N<1000)个洞围成一个圈编号(1-N),从1号洞开始走N次,分别走1^9步,2^9步,3^9步······N^9步,问此时所在的洞的编号。
Input
多组输入数据(不超过100组),每行一个正整数N。
Output
洞的编号
Sample Input
1
2
3
4
Sample Output
1
2
1
1
代码:
算法:多源最短路
七龙珠散落在了各地,我们已经找到了一个龙珠并感应到了其他龙珠的所在城镇,问以某种顺序找齐七个龙珠(路过城镇可以不取走龙珠),最快几天能找齐?
输入
Input
第一行一个整数T(少于5组)表示测试数据组数,每组数据第一行 N(2<=N<=300个城镇),M(0<M<100),
之后有n+m行,前n行每行n个整数,第K行的L个数表示第K镇到第L镇的距离,之后m行每行6个整数表示取珠城市顺序(第一个整数为当前位置) 。(均在int范围内)
Output
每组数据m行,每行一个整数,最少需要的天数。
Sample Input
1
6 1
0 2 2 2 2 5
2 0 3 3 3 4
2 3 0 4 5 4
2 3 4 0 1 3
2 3 5 1 0 6
5 4 4 3 6 0
1 2 3 4 5 6
Sample Output
14
Hint
样例为1-2-3-4-5-4-6
一定要看清楚题!!
代码:
#include <iostream> #include <iomanip> #include <cstring> #include <algorithm> using namespace std; int main() { int n,m,i,j,k,T; int map[305][305]; cin>>T; while(T--) { cin>>n>>m; memset(map,0,sizeof(map)); for(i=1;i<=n;i++) for(j=1;j<=n;j++) cin>>map[i][j]; for(i=1;i<=n;i++) for(j=1;j<=n;j++) for(k=1;k<=n;k++) if(map[j][k]>map[j][i]+map[i][k]) map[j][k]=map[j][i]+map[i][k]; while(m--) { int sta,en; int sum=0; cin>>sta; for(i=1;i<6;i++) { cin>>en; sum+=map[sta][en]; sta=en; } cout<<sum<<endl; } } return 0; }
考古
考古专家发现了一个葬着多人的大墓穴,可是骨头杂乱无序堆在一起,考古学家现确定了某些对骨头应该是同一个人的,问这个洞穴中,最多葬了多少个人(木有骨头的肯定不用算了)。
Input
多组输入数据(少于100),每组第一行两个正整数N(小于1000表示骨头个数),M(之后M行会告诉你哪两个骨头是一个人的),当N为0时,输入结束,该用例不被处理。
Output
每组输出一个数,表示这里最多埋葬了多少人。
Sample Input
4 3
1 2
2 3
1 3
0
Sample Output
2
代码:
This code is shared. Copy #include <iostream> #include <iomanip> #include <cstring> #include <algorithm> using namespace std; int dp[1005],n; void inct() { for(int i=1;i<=n;i++) dp[i]=i; } int find(int x) { while(x!=dp[x])x=dp[x]; return x; } void build(int x,int y) { int fx=find(x); int fy=find(y); if(fx!=fy) dp[fy]=fx; } int main() { int i,j,k,m; while(cin>>n&&n) { inct(); cin>>m; for(i=1;i<=m;i++) { cin>>j>>k; build(j,k); } int sum=0; for(i=1;i<=n;i++) if(i==dp[i]) sum++; cout<<sum<<endl; } return 0; }
背包
有N种物品各一个,问是否能够凑成Mkg装到背包中。
Input
第一行一个整数T(T<=1000)测试数据组数,每组第一行为(1<N<=1000),M(1<m<=1000)两个正整数,第二行N个整数代表N种物品的质量Gi(小于1000)。
Output
可以凑成输出“Y”,否则输出“N”
Sample Input
2
3 5
1 2 3
3 7
1 2 3
Sample Output
Y
N
代码:
#include <iostream> #include <iomanip> #include <cstring> #include <algorithm> using namespace std; int dp[1005],n,m,ok; void dfs(int x,int sum) { if(x<1) return ; if(ok) return ; if(sum==m) { ok=1; return ; } if(sum>m) return ; dfs(x-1,sum+dp[x]); dfs(x-1,sum); } int main() { int i,j,k,T; cin>>T; while(T--) { cin>>n>>m; for(i=1;i<=n;i++) cin>>dp[i]; ok=0; dfs(n,0); if(ok) cout<<"Y"<<endl; else cout<<"N"<<endl; } return 0; }
洞的编号
有N(N<1000)个洞围成一个圈编号(1-N),从1号洞开始走N次,分别走1^9步,2^9步,3^9步······N^9步,问此时所在的洞的编号。
Input
多组输入数据(不超过100组),每行一个正整数N。
Output
洞的编号
Sample Input
1
2
3
4
Sample Output
1
2
1
1
代码:
#include <iostream> #include <iomanip> #include <cstring> #include <algorithm> using namespace std; int main() { int i,j,k,n,m,p,q; while(cin>>n) { int m=0; for(i=1;i<=n;i++) { k=1; for(j=1;j<=9;j++) k=(k*i)%n; m=(m+k)%n; } cout<<m+1<<endl; } return 0; }
相关文章推荐
- HTTP深入浅出
- 如何利用gulp构建前端自动化
- 第三百六十天 how can I 坚持
- 单链表各种操作,VS2013+番茄插件写着真爽
- MyBatis关于识别器和缓存的简单理解
- 面试准备
- hdu-5637 Transform(位运算+bfs)
- linux下安装JDK和tomcat以及遇到的误区
- 【学习笔记】高性能MySQL(第三版)——第2章:MySQL基准测试
- Linux网络属性配置
- [JSTDG]JavaScript函数
- 大整数乘法-分治
- Spark-Mllib(一)数据类型
- HDOJ 2046 骨牌铺方格
- 2016春季练习——bfs简单题
- 三子棋游戏(c语言实现)
- 使用 Cocos2d-x 和粒子编辑器实现场景特效
- Oracle-04-用SQL*PLUS创建用户&新用户授权等
- Serializable和Parcelable
- iOS 富文本属性