2016年中国大学生程序设计竞赛(杭州) 部分题解
来源:互联网 发布:钢铁力量天王战车数据 编辑:程序博客网 时间:2024/05/16 05:59
【题解可以看这里,我提供了部分题的代码】点击打开链接
【A】
【代码】
#include <bits/stdc++.h>using namespace std;typedef long long LL;int a[500000];LL sum[500000];int main(){ int T, ks = 1; scanf("%d",&T); while(T--) { int n, m; scanf("%d%d",&n,&m); sum[0] = 0; LL ans = 0; for(int i = 1; i <= n; i++) { scanf("%d",&a[i]); sum[i] = sum[i-1] + 1LL*a[i]; ans += a[i]; } if(ans % m) { printf("Case #%d: -1\n",ks++); continue; } int t = 0; ans = ans / m; for(int i = 1; i < n; i++) { if(sum[i] % ans == 0) t -= 2; } t = t + n - 1 + m - 1; printf("Case #%d: %d\n",ks++,t); } return 0;}
【B】
【代码】
////Created by just_sort 2016/10/28//Copyright (c) 2016 just_sort.All Rights Reserved//#include <ext/pb_ds/assoc_container.hpp>#include <ext/pb_ds/tree_policy.hpp>#include <ext/pb_ds/hash_policy.hpp>#include <set>#include <map>#include <queue>#include <stack>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;using namespace __gnu_pbds;typedef long long LL;typedef pair<int, LL> pp;#define MP(x,y) make_pair(x,y)const int maxn = 200005;const int N = 1005;const int M = 2010;const int inf = 0x3f3f3f3f;typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>order_set;//headint indgree[maxn],pre[maxn],lowlink[N],sccno[N],dfs_clock,scc_cnt,maxc[maxn],ans;struct node{ LL x, y, r; int c;}a[N];vector <int> E[N];vector <int> G[N];//new graph.stack <int> s;void init(){ memset(indgree, 0, sizeof(indgree)); ans = 0;}void dfs(int u){ pre[u] = lowlink[u] = ++dfs_clock; s.push(u); for(int i = 0; i < E[u].size(); i++) { int v = E[u][i]; if(!pre[v]) { dfs(v); lowlink[u] = min(lowlink[u], lowlink[v]); } else if(!sccno[v]) lowlink[u] = min(lowlink[u], pre[v]); } if(lowlink[u] == pre[u]) { scc_cnt++; for(;;) { int x = s.top(); s.pop(); sccno[x] = scc_cnt; maxc[scc_cnt] = min(maxc[scc_cnt], a[x].c); if(x == u) break; } }}void suodian(int n){ dfs_clock = scc_cnt = 0; memset(sccno, 0, sizeof(sccno)); memset(pre, 0, sizeof(pre)); while(!s.empty()) s.pop(); for(int i = 1; i <= n; i++) { if(!pre[i]) { dfs(i); } }}bool check(int i, int j){ double d = sqrt(1.0*(a[i].x-a[j].x)*(a[i].x-a[j].x) + 1.0*(a[i].y-a[j].y)*(a[i].y-a[j].y)); if(1.0*a[i].r >= d) return 1; else return 0;}int main(){ int T,n,ks = 1; scanf("%d",&T); while(T--) { scanf("%d",&n); init(); for(int i = 0; i <= n; i++) E[i].clear(); for(int i = 0; i <= n; i++) G[i].clear(); for(int i = 0; i <= n; i++) maxc[i] = inf; for(int i = 1; i <= n; i++) scanf("%lld%lld%lld%d",&a[i].x,&a[i].y,&a[i].r,&a[i].c); for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ if(i == j) continue; if(check(i,j)) E[i].push_back(j); } } suodian(n); for(int i = 1; i <= n; i++){ for(int j = 0; j < E[i].size(); j++){ int v = E[i][j]; if(sccno[i] != sccno[v]){ indgree[sccno[v]]++; G[sccno[i]].push_back(sccno[v]); } } } for(int i = 1; i <= scc_cnt; i++) { if(!indgree[i]) { ans += maxc[i]; } } printf("Case #%d: %d\n",ks++, ans); } return 0;}
【C】
注意卡精度!
【代码】
#include <bits/stdc++.h>using namespace std;typedef long long LL;int n, a[100010];const double eps = 1e-8;int main(){ int T,ks = 1; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i = 1; i <= n; i++) scanf("%d",&a[i]); double v = a[n] - a[n-1]; int ans = 1; double x; for(int i = n - 1; i; i--) { x = a[i] - a[i-1]; if(x <= v + eps) { v = x; ans++; } else { ans += (int(double(x - eps)/v) + 1); v = (double(x)/(int(double(x-eps)/v)+1)); } } printf("Case #%d: %d\n",ks++,ans); }}
【F】
【代码】
#include <bits/stdc++.h>using namespace std;typedef long long LL;const LL inf = 1e20;char s[22];int a[22];int main(){ int T,ks=1; scanf("%d",&T); while(T--) { scanf("%s",s); int len = strlen(s); memset(a, 0, sizeof(a)); for(int i = 0; i < len; i++){ a[i+1] = s[i] - '0'; } LL ans = -inf; LL t1 = 0; LL t2 = 0; LL t3 = 0; LL t4 = 0; LL t5 = 0; for(int i = 2; (i+3)<= len; i++){ for(int j = i+1; (j+2) <= len; j++){ int k = j + 1; int l = k + 1; t1 = t2 = t3 = t4 = t5 = 0; for(int t = 1; t < i; t++) t1 = t1*10 + 1LL*a[t]; for(int t = i; t < j; t++) t2 = t2*10 + 1LL*a[t]; for(int t = j; t < k; t++) t3 = t3*10 + 1LL*a[t]; for(int t = k; t < l; t++) t4 = t4*10 + 1LL*a[t]; for(int t = l; t <= len; t++) t5 = t5*10 + 1LL*a[t]; //cout<<t1<<" "<<t2<<" "<<t3<<" "<<t4<<" "<<t5<<endl; ans = max(ans, t1 + t2 - 1LL*(t3*t4)/t5); } } printf("Case #%d: %I64d\n",ks++,ans); }}
【K】
【代码】
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 2000;vector<int>g[maxn];int from[maxn];bool used[maxn];bool match(int x){ for(int i = 0; i < (int)g[x].size(); i++){ if(!used[g[x][i]]){ used[g[x][i]] = true; if(from[g[x][i]] == -1 || match(from[g[x][i]])) { from[g[x][i]] = x; return true; } } } return false;}int main(){ int T, ks = 1; scanf("%d",&T); while(T--) { int s, n; scanf("%d%d",&s,&n); if(s < n) swap(s, n); if(n > 500) { printf("Case #%d: No\n",ks++); continue; } for(int i = 0; i < maxn; i++) g[i].clear(); memset(from, -1, sizeof(from)); int tot = 0; for(int i = 1; i <= n; i++){ int t = i + s; for(int j = 1; j <= n; j++){ if(t % j == 0){ g[i].push_back(j); } } } for(int i = 1; i <= n; i++) { memset(used,0,sizeof(used)); if(match(i)){ tot++; } } if(tot == n){ printf("Case #%d: Yes\n",ks++); } else { printf("Case #%d: No\n",ks++); } }}
0 0
- 2016年中国大学生程序设计竞赛(杭州) 部分题解
- 2016年中国大学生程序设计竞赛(杭州)-重现赛
- 2016年中国大学生程序设计竞赛(杭州)-重现赛
- 2016年中国大学生程序设计竞赛(杭州)
- HDU5938+贪心+(2016年中国大学生程序设计竞赛(杭州))
- HDU 5934 Bomb 【图论缩点】(2016年中国大学生程序设计竞赛(杭州))
- HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
- HDU 5938 Four Operations 【贪心】(2016年中国大学生程序设计竞赛(杭州))
- HDU5935 Car (贪心) 2016年中国大学生程序设计竞赛(杭州)
- HDU5938 Four Operations (模拟) 2016年中国大学生程序设计竞赛(杭州)
- HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))
- HDU 5935 Car (贪心)——2016年中国大学生程序设计竞赛(杭州)
- HDU 5938 Four Operations(2016年中国大学生程序设计竞赛(杭州))
- 2016年中国大学生程序设计竞赛(杭州) A ArcSoft's Office Rearrangement(贪心)
- 2016年中国大学生程序设计竞赛(杭州) F Four Operations(暴力枚举)
- 2016年中国大学生程序设计竞赛(杭州)C Car(贪心算法+分数处理)
- HDU 5937 Equation 【DFS+剪枝】 (2016年中国大学生程序设计竞赛(杭州))
- (2016年中国大学生程序设计竞赛(杭州)) HDU 5938 Four Operations 思维题 + 枚举
- 数据结构——堆
- 机器学习算法调优的一般步骤
- 【LeetCode】120. Triangle
- spring和spring mvc的区别
- UVA 12166 dfs+Map库的巧用
- 2016年中国大学生程序设计竞赛(杭州) 部分题解
- 输入子系统(input subsystem)
- 《算法》第一章——栈的可生成性
- 我的JAVA日记 二
- js和jquery获取父级元素、子级元素、兄弟元素的方法
- 接口 IID 表
- hdu 2222 AC自动机入门
- LeetCode 395. Longest Substring with At Least K Repeating Characters
- html_Javascript制作简易计算器