Code forces Round #510 div2
来源:互联网 发布:手机火车票订票软件 编辑:程序博客网 时间:2024/03/28 19:56
A 水题: 画图
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#include <string>using namespace std;int main(){ int n, m; char s1[55], s2[55], s3[55]; cin>>n>>m; for(int i = 0; i < m; i++) { s1[i] = '#'; s2[i] = '.'; s3[i] = '.'; if(!i) s2[i] = '#'; if(i == m - 1) s3[i] = '#'; } s1[m] = 0; s2[m] = 0; s3[m] = 0; int cnt = 1, leap = 1; while(1) { if(cnt > n) break; if(cnt & 1){ cout<<s1<<endl; } else if(leap){ cout<<s3<<endl; leap = 0; } else{ cout<<s2<<endl; leap = 1; } cnt++; } return 0;}
B :dfs即可
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#include <string>using namespace std;int dx, dy;int n, m;int dir[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};int vis[55][55];char ss[55][55];int mark[55][55];bool isin(int x, int y){ if(x >= 0 && x < n && y >= 0 && y < m) return true; return false;}int dfs(int x, int y, int z){ vis[x][y] = 1; for(int i = 0; i < 4; i++) { int nx = x + dir[i][0]; int ny = y + dir[i][1]; if(nx == dx && ny == dy && z >= 3) return 1; if(isin(nx, ny) && !vis[nx][ny] && ss[nx][ny] == ss[x][y]) { if(!mark[nx][ny]) continue; if(dfs(nx, ny, z + 1)) return 1; else mark[nx][ny] = 0; } } return 0;}int main(){ cin>>n>>m; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin>>ss[i][j]; memset(mark, -1, sizeof mark); for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) { memset(vis, 0, sizeof(vis)); memset(mark, -1, sizeof mark); dx = i, dy = j; if(dfs(i, j, 1)){ cout<<"Yes"<<endl; return 0; } } cout<<"No"<<endl; return 0;}
C:相邻的字符串建图,然后拓扑排序即可
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#include <string>using namespace std;char ss[105][105];int as[30][30];int id[30];char ans[30];void init(){ memset(as, 0, sizeof as); memset(id, 0, sizeof id);}int topu_sort(){ int cnt = 0; queue<int> que; while(!que.empty()) que.pop(); for(int i = 0; i < 26; i++) { if(!id[i]) que.push(i); } while(!que.empty()) { int now = que.front(); que.pop(); ans[cnt++] = now + 'a'; for(int i = 0; i < 26; i++) { if(as[now][i]) { id[i]--; if(id[i] == 0) que.push(i); } } } ans[26] = 0; if(cnt < 26) return 0; return 1;}int main(){ int t; cin>>t; for(int i = 0; i < t; i++) cin>>ss[i]; init(); for(int i = 0; i < t - 1; i++) { int len1 = strlen(ss[i]), len2 = strlen(ss[i + 1]), p = 0; while(p < min(len1, len2) && ss[i][p] == ss[i + 1][p]) p++; if(p == len1 && len1 <= len2) continue; if(p == len2 && len2 < len1){ cout<<"Impossible"<<endl; return 0; } if(as[ss[i][p] - 'a'][ss[i + 1][p] - 'a']) continue; as[ss[i][p] - 'a'][ss[i + 1][p] - 'a'] = 1; id[ss[i + 1][p] - 'a']++; } if(topu_sort()) cout<<ans<<endl; else cout<<"Impossible"<<endl; return 0;}
D:利用map动态规划 注意输入有重边需更新
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#include <string>#include <map>using namespace std;int gcd(int a, int b){ if(b == 0) return a; return gcd(b, a % b);}int main(){ int n; cin>>n; int a[305]; long long b[305]; for(int i = 0; i < n; i++) { cin>>a[i]; } for(int i = 0; i < n; i++) { cin>>b[i]; } map<int, long long int> std; for(int i = 0; i < n; i++) { if(std.count(a[i])) { std[a[i]] = min(std[a[i]], b[i]); } else std.insert(pair<int, long long int>(a[i], b[i])); } for(int i = 1; i < n; i++) { map<int, long long int>::iterator it; for(it = std.begin(); it != std.end(); it++) { int ans = gcd(it->first, a[i]); if(std.count(ans)) { std[ans] = min((long long)it->second + b[i], std[ans]); } else { std.insert(pair<int, long long int>(ans, (long long)b[i] + it->second)); } } } if(std.count(1)) cout<<std[1]<<endl; else cout<<-1<<endl; return 0;}
0 0
- Code forces Round #510 div2
- code forces round 331 div2
- Code forces Round #292 div2
- code forces round 355 div2 b
- code forces round 372 div2.c Plus and Square Root
- code Forces 158A Next Round
- code forces Educational Codeforces Round 21
- Code forces #258 div2 A.Game With Sticks
- Code Forces Round 201 B Lucky Common Subsequence 拓展提问
- Code Forces 2 B The least round way
- 贪心-Code forces -387B -George and Round
- C. Writing Code(Codeforces Round #302(div2)
- Digital Root----code forces
- Code Forces #3
- Code Forces #4 D
- Code Forces #5C
- code forces K Indivisibility
- Code forces 612C
- 《C++精英内参之程序员高效指南》-23在走路中健身的方法
- Myeclipse2014如何设置在启动时弹出选择WorkSpace的对话框
- 最新SqueezeNet 模型详解,CNN模型参数降低50倍,压缩461倍!
- [ERP]ERP原理与应用试题(附答案)
- linux命令 sort
- Code forces Round #510 div2
- EditPlus绿色汉化破解版的注册码信息
- java sql ResultSet 如何判断ResultSet中存在记录
- 3. 装饰者模式:装饰对象
- JSON
- ListView中Item多布局
- 标题文字跑马灯效果实现
- SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <1MB model size阅读笔记
- pdksh-5.2.14 elfutils-libelf-devel-0.97 Are Missing