2016 第七届福建省大学生程序设计竞赛
来源:互联网 发布:js定义map对象 编辑:程序博客网 时间:2024/04/29 22:06
A.
B.
C.
题意:两人轮流玩卡片,共n*2张,每次随机抽一张,比较大小,赢了的话加一分胜点,求Fat brother的期望胜点。
思路:两人获胜的期望是相等的,所以直接n/2就是结果了
#include<iostream>#include<cstdio>using namespace std;const int N = 2e4+5;int a[N];int main(){ int t,n; cin >> t; for(int ca = 1;ca <= t;ca++) { scanf("%d",&n); for(int i = 0;i < n*2;i++) scanf("%d",&a[i]); printf("Case %d: %.2f\n",ca,0.5*n); } return 0;}
D.
题意:两人轮流玩卡片,每人n张,每次随机抽一张,比较大小,赢了的话加一分胜点,求Fat brother的期望胜点。
思路:排序后,每次二分找位置就行了
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N = 2e4+5;int a[N],b[N];int main(){ int t,n; cin >> t; for(int ca = 1;ca <= t;ca++) { scanf("%d",&n); for(int i = 0;i < n;i++) scanf("%d",&a[i]); for(int i = 0;i < n;i++) scanf("%d",&b[i]); printf("Case %d: ",ca); sort(a,a+n); sort(b,b+n); double ans = 0; for(int i = 0;i < n;i++) ans += lower_bound(b,b+n,a[i])-b; printf("%.2f\n",ans/n); } return 0;}
E.
题意:两人轮流玩卡片,每人n张,按照栈的特性放置,每次按顺序抽一张,比较大小,赢了的话加一分胜点,求Fat brother的期望胜点。
思路:直接挨个比大小就行了。
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N = 2e4+5;int a[N],b[N];int main(){ int t,n; cin >> t; for(int ca = 1;ca <= t;ca++) { scanf("%d",&n); for(int i = 0;i < n;i++) scanf("%d",&a[i]); for(int i = 0;i < n;i++) scanf("%d",&b[i]); printf("Case %d: ",ca); int ans = 0; for(int i = 0;i < n;i++) if(a[i] + b[i] > 10) ans++; printf("%d\n",ans); } return 0;}
F.
G.
题意:你有长度为n的金子,要将其分成若干块(整数),使得小于等于n的所有长度都能凑够(不找零)
思路:
1 2 4 8 16这种的数可以将所有的数覆盖,这个又分别对应数的二进制,所以直接看n的二进制位数就是结果了。
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){ int t,n; cin >> t; for(int ca = 1;ca <= t;ca++) { scanf("%d",&n); printf("Case %d: ",ca); int ans = 0; while(n > 0) { ans++; n >>= 1; } printf("%d\n",ans); } return 0;}//1 2 4 8 16
H.
I.
J.
题意:让你在保证原有各点联通的情况下,求至多可以去掉的边数
思路:100点数,明显floyd。
如果有重边,肯定要去掉;
如果原来直接相连,floyd可以松弛掉,原来的边去掉。
开始以为可以直接用真值floyd,石乐志
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int INF = 0x3f3f3f3f;int d[105][105];bool vis[105][105],v[105][105];void floyd(int n){ for(int k = 1;k <= n;k++) for(int i = 1;i <= n;i++) for(int j = 1;j <= n;j++) if(d[i][j] >= d[i][k] + d[k][j]) { d[i][j] = d[i][k] + d[k][j]; vis[i][j] = true; }}int main(){ int t,n,m; cin >> t; for(int ca = 1;ca <= t;ca++) { int ans = 0; memset(v,false,sizeof(v)); memset(vis,false,sizeof(vis)); memset(d,0x3f,sizeof(d)); scanf("%d%d",&n,&m); int x,y,s; while(m--) { scanf("%d%d%d",&x,&y,&s); v[x][y] = v[y][x] = true; if(d[x][y] < INF) ans++; d[x][y] = d[y][x] = min(d[x][y],s); } floyd(n); printf("Case %d: ",ca); for(int i = 1;i <= n;i++) for(int j = i+1;j <= n;j++) if(v[i][j] && vis[i][j]) ans++; printf("%d\n",ans); } return 0;}
阅读全文
0 0
- 2016 第七届福建省大学生程序设计竞赛
- 福建省第七届大学生程序设计竞赛 ---- 赛后总结
- 第四届福建省大学生程序设计竞赛
- 第六届福建省大学生程序设计竞赛
- 第八届福建省大学生程序设计竞赛
- 第七届福建省大学生程序设计竞赛-重现赛(感谢承办方闽江学院)
- FZU2271 X(最短路,Folyd变形)(第七届福建省大学生程序设计竞赛)
- FZU2268 Cutting Game(数学,规律)(第七届福建省大学生程序设计竞赛)
- FZU2264,2265,2266 Card Game 系列 (数学,规律)(第七届福建省大学生程序设计竞赛)
- 第七届福建省大学生程序设计竞赛 Problem J- X(floyd)
- FZU 2271 X (Floyd)(第七届福建省大学生程序设计竞赛)
- “高教社杯”第三届福建省大学生程序设计竞赛
- 第四届(2013年十月)福建省大学生程序设计竞赛
- “高教社杯”第三届福建省大学生程序设计竞赛
- 第六届福建省大学生程序设计竞赛 Problem J RunningMan【数学】
- 第六届福建省大学生程序设计竞赛 Super Mobile Charger
- 第六届福建省大学生程序设计竞赛 Common Tangents
- 第六届福建省大学生程序设计竞赛(FZU2212—FZU2221)
- 串口开发类
- maven用jetty启动工程
- 文本溢出省略号
- ajax请求中contentType与dataType含义
- Error:(1, 1) java: 非法字符: '\ufeff'
- 2016 第七届福建省大学生程序设计竞赛
- 小程序开发技术
- RabbitMQ的使用(可以实现商品数据的同步)
- Ext4.2 如何实现点击一按钮,页面跳转
- IO流面试题
- Spark结构式流编程指南
- 内存描述符
- spring的组件扫描和自动装配
- logback-Appender 自定义详解