SDKD Summer Team Contest K
2015-08-11 19:24
381 查看
A:签到题, 还是很恶心的
点击打开链接
并查集
点击打开链接
点击打开链接
#include <bits/stdc++.h> using namespace std; int main () { double a[15]; int n; cin>>n; while(n--) { double sum=0; for(int i=0;i<12;i++) { cin>>a[i]; sum+=a[i]; } sum/=12; int t=sum*1000; t+=5; t/=10; sum=(double)t/100; if(t%100==0) printf("$%.0lf\n",sum); else if(t%10==0) printf("$%.1lf\n",sum); else printf("$%.2lf\n",sum); } return 0; }D:点击打开链接
并查集
#include<cstdio> #include<iostream> #include<cstring> #include<vector> #include<algorithm> using namespace std; const int maxn = 100000 + 5; struct line { int u, v; line(int u = 0, int v = 0) : u(u), v(v) {} } l[maxn]; int par[maxn]; int r[maxn]; void init() { for(int i = 0; i < maxn; ++i) { par[i] = i; r[i] = 0; } } int f(int x) { return par[x] == x ? x : par[x] = f(par[x]); } void unite(int x, int y) { x = f(x); y = f(y); if(x==y) return ; if(r[x] < r[y]) par[x] = y; else { par[y] = x; if(r[x] == r[y]) r[x]++; } return ; } int main() { int N, M; while(cin >> N >> M) { init(); for(int i = 0; i < M; ++i) { int u, v; scanf("%d%d", &u, &v); l[i].u = u; l[i].v = v; } int k = N; vector<int> res; res.clear(); for(int i = M-1; i >= 0; i--) { line tmp = l[i]; int x = f(l[i].u); int y = f(l[i].v); if(x!=y) { res.push_back(k); unite(l[i].u, l[i].v); --k; } else { res.push_back(k); } } for(int i = (int)res.size() - 1; i >= 0; --i) { cout << res[i] << endl; } } return 0; }E:自己推出来规律了,但是场上没出,忽略了l !=1 的情况;很遗憾, 但是推出来的时候很开心
点击打开链接
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int maxn = 100000 + 5; int prime[maxn]; int res[maxn]; void init() { memset(prime,0,sizeof(prime)); prime[2] = 1; for(int i = 2; i < maxn; ++i) prime[i] = 1; for(int i = 2; i < maxn; i+=2) prime[i] = 0; prime[2] = 1; for(int i = 3; i < maxn; ++i) { if(prime[i]) { for(int j = 2*i; j < maxn; j += i) { prime[j] = 0; } } } } int main() { init(); int cnt = 0; for(int i = 1; i < maxn; ++i) { if(prime[i]) { res[cnt++] = i; } } int T; cin >> T; while(T--) { int G, L; scanf("%d%d", &G, &L); __int64 ans = 1; if(L%G != 0) { cout << 0 << endl; continue;} else { L/=G; for(int i = 0; i < cnt; ++i) { int k = 0; if(L % res[i] == 0) { while(L % res[i] ==0) { ++k; L/=res[i]; } } if(k != 0) ans = ans * 6 * k; } if(L > 1) ans = ans * 6; } printf("%I64d\n", ans); } }
相关文章推荐
- Jungle Roads --hdoj
- MII
- DOS中字符串的处理
- 修改服务器远程端口号
- matplotlib 常用命令汇总
- 智渔课堂官方免费教程二十七:Java基础教程之Arrays类
- 《struts2 in action》学习问题——零配置——几点注意事项
- struts学习笔记(七)界面标签与其他标签
- I学霸官方免费教程二十七:Java基础教程之Arrays类
- 接口传递网络请求结果
- poj 2251 Dungeon Master
- Android实例-打电话、发短信和邮件,取得手机IMEI号(XE8+小米2)
- C#连接服务器验证帐号密码
- attribute & property --- jquery attr() & prop()
- 界面传值
- 蛋疼的epmd
- Linux环境进程间通信
- PAT 1048. Find Coins (25)
- OC中的文件管理
- 关于C/C++ 结构体字节的算法