【解题报告】Codeforces Round #349 (Div. 2)
来源:互联网 发布:linux lldpad 编辑:程序博客网 时间:2024/06/05 16:34
题目链接
A. Pouring Rain(Codeforces 667A)
思路
首先把水位的上升和下降速度的单位统一,然后判断水位的上升和下降的速度哪个更大。最后就可以计算,输出了。
代码
#include <cstdio>#include <cmath>using namespace std;const double eps = 1e-10, pi = 4 * atan(1.0);double d, h, v, up, down;int main() { scanf("%lf%lf%lf%lf", &d, &h, &v, &up); down = 4 * v / pi / d / d; if(up - down >= -eps) { puts("NO"); } else { printf("YES\n%.5f\n", h / (down - up)); } return 0;}
B. Coat of Anticubism(Codeforces 667B)
思路
先拿最简单的凸多边形——三角形来思考。假如现在有两个线段
代码
#include <bits/stdc++.h>using namespace std;int n, a, m;long long sum;int main() { scanf("%d", &n); sum = m = 0; for(int i = 0; i < n; i++) { scanf("%d", &a); sum += a; m = max(m, a); } printf("%I64d\n", 2 * m - sum + 1); return 0;}
C.Reberland Linguistics(Codeforces 667C)
思路
本题是关于字符串后缀的题,
s[i+2],s[i+3],s[i+4] 组成的长度为3 的子串能加入到后缀集合中去。s[i+2],s[i+3] 组成的长度为2 的子串能加入到后缀集合中去且s[i......i+1]!=s[i+1......i+2] (题目的要求)。
假设我们用
代码
#include <bits/stdc++.h>using namespace std;const int maxn = 5e4 + 10;int n, d[maxn][4];string s;set <string> :: iterator it;set <string> ss;int main() { cin >> s; n = s.size(); d[n][2] = d[n][3] = 1; for(int i = n - 1; i >= 5; i--) { for(int j = 2; j <= 3; j++) { if(d[i][j] = d[i+j][j] && s.substr(i, j) != s.substr(i + j, j) || d[i+j][j^1]) { ss.insert(s.substr(i, j)); } } } cout << ss.size() << endl; for(it = ss.begin(); it != ss.end(); it++) { cout << *it << endl; } return 0;}
D. World Tour(Codeforces 667D)
思路
因为时间给了
代码
#include <bits/stdc++.h>using namespace std;typedef pair <int, int> p;const int maxn = 3010;bool vis[maxn];int mi, mj, pd, pv, nd, nv, res;int n, m, u, v, v1, v2, v3, v4, ans;int d[maxn][maxn];vector <int> G[maxn];vector <p> d1[maxn], d2[maxn];// 搜索并求最短路径长度void bfs(int s) { queue <p> q; q.push(p(0, s)); // 初始化访问标记 memset(vis, 0, sizeof(vis)); vis[s] = true; while(!q.empty()) { p node = q.front(); q.pop(); int u = node.second; int w = node.first; d[s][u] = w; for(int i = 0; i < G[u].size(); i++) { int v = G[u][i]; if(!vis[v]) { q.push(p(w + 1, v)); // 不能取出结点的时再修改 vis[v] = true; } } }}int main() { scanf("%d%d", &n, &m); while(m--) { scanf("%d%d", &u, &v); G[u].push_back(v); } // 预处理出每个点到其它点的最短路d[i] for(int i = 1; i <= n; i++) { bfs(i); } // 预处理出d1和d2 for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(d[j][i] > 0) { d1[i].push_back(p(d[j][i], j)); } if(d[i][j] > 0) { d2[i].push_back(p(d[i][j], j)); } } sort(d1[i].rbegin(), d1[i].rend()); sort(d2[i].rbegin(), d2[i].rend()); } // 枚举两个中间点 for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(i == j || !d[i][j]) { continue; } mi = min(3, (int)d1[i].size()); mj = min(3, (int)d2[j].size()); // 枚举起点和终点 for(int ii = 0; ii < mi; ii++) { for(int jj = 0; jj < mj; jj++) { p pre = d1[i][ii], nxt = d2[j][jj]; pd = pre.first, pv = pre.second; nd = nxt.first, nv = nxt.second; if(pv == j || nv == i || pv == nv) { continue; } res = pd + d[i][j] + nd; if(res <= ans) { continue; } // 更新最优解 v1 = pv, v4 = nv; v2 = i, v3 = j; ans = res; } } } } printf("%d %d %d %d\n", v1, v2, v3, v4); return 0;}
(其它题目略)
- 【解题报告】Codeforces Round #349 (Div. 2)
- Codeforces Round #149 (Div. 2)解题报告
- Codeforces Round #180 (Div. 2) 解题报告
- Codeforces Round #190 (Div. 2) 解题报告
- Codeforces Round #191 (Div. 2) 解题报告
- Codeforces Round #189 (Div. 2) 解题报告
- Codeforces Round #142 (Div. 2) 解题报告
- Codeforces Round #229 (Div. 2) 解题报告
- Codeforces Round #241 (Div. 2) 解题报告
- Codeforces Round #262 (Div. 2)解题报告
- Codeforces Round #267 (Div. 2) 解题报告
- Codeforces Round #266 (Div. 2)解题报告
- Codeforces Round #268 (Div. 2) 解题报告
- Codeforces Round #271 (Div. 2) 解题报告
- Codeforces Round #274 (Div. 2) 解题报告
- Codeforces Round #276 (Div. 2) 解题报告
- Codeforces Round #277 (Div. 2) 解题报告
- Codeforces Round #224 (Div. 2)解题报告
- [Servlet编程]Request,Response使用与码表原理
- Android 动画之RotateAnimation应用详解
- php与Ajax(二)—XMLHttpRequest对象的方法与属性
- 10注册RoundedDrawable2
- 怎么用Beyond Compare比较代码
- 【解题报告】Codeforces Round #349 (Div. 2)
- HTTP请求报文解剖
- FPGA入门必看资源
- 智能指针之 shared_ptr
- 原先都是用txt记技术解决方案,以后改CSDN
- Linux进程ID号--Linux进程的管理与调度(三)
- Dandelion.exe/爱淘宝/聚划算?桌面快捷方式的广告源自何处
- memcpy函数用法
- 微信&java 开发5 jsapi_ticket的获取