Codeforces Round #401 (Div. 2)(C,D,E)
来源:互联网 发布:桌面网络图标不见了 编辑:程序博客网 时间:2024/05/25 19:55
/*C. Alyona and Spreadsheet时间: 2017/02/25题意:给出q个询问,问第l行到第r行是否存在一列是非单调递减的。题解:建一个数组:f[i] 代表i行最多能非单调递减到达的行数对于每列不断更新这个数组即可,*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<map>using namespace std;#define LL long long#define N 100010#define INF 0x3f3f3f3fint a[N],f[N];int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { for(int i = 1; i <= n*m ; i++) scanf("%d",&a[i]); int k; for(int i = 1; i <= m; i++) { for(int j = 1; j <= n; j = k) { for(k = j+1; k <= n ; k++) if(a[(k-2)*m+i] > a[(k-1)*m+i]) break; for(int p = j; p < k; p++) f[p] = max(f[p],k-1); } } int q; scanf("%d",&q); int l,r; while(q--) { scanf("%d%d",&l,&r); if(f[l] >= r) puts("Yes"); else puts("No"); } } return 0;}
/*D. Cloud of Hashtags时间: 2017/02/25题意:删去最少的字符,使其满足字典序排序题解:这题我以为会爆迟迟不敢动手,明显需要从后往前推,记录其删去到的字符长度比较方便。*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<map>using namespace std;#define LL long long#define N 500010#define INF 0x3f3f3f3fstring s[N];int l[N];int main(){ int n; while(~scanf("%d",&n)) { for(int i = 0; i < n; i++) { cin >> s[i]; l[i] = s[i].size(); } for(int i = n-2; i >= 0; i--) { int len = min(l[i],l[i+1]); int flag = 0; int j; for(j = 0; j < len; j++) { if(s[i][j] > s[i+1][j]) { l[i] = j; break; } else if(s[i][j] < s[i+1][j]) { flag = 1; break; } } if(!flag && j == len) l[i] = len; } for(int i = 0; i < n; i++) { for(int j = 0; j < l[i]; j++) printf("%c",s[i][j]); puts(""); } } return 0;}
/*E. Hanoi Factory时间: 2017/02/25题意:叠塔,但要满足a(i+1) < bi <= b(i+1)题解:标程是线段树+LIS群里说贪心也能做,排序b从小到大,在b相同排序a从小到大,使其满足如果i-1不能取,那么i-2也不能取,这样从后往前推入栈,如果不满足推出栈直到满足再推入栈,每次推入的答案记录最大值即可。*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<stack>#include<map>using namespace std;#define LL long long#define N 100010#define INF 0x3f3f3f3fstruct point{ int x,y,h;} a[N];bool cmp(point a,point b){ if(a.y != b.y) return a.y < b.y; return a.x < b.x;}int dp[N];int main(){ int n; while(~scanf("%d",&n)) { for(int i = 0; i < n; i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].h); sort(a,a+n,cmp); stack<point> p; LL ans = 0; LL mx = 0; for(int i = n-1; i >= 0; i--) { while(1) { if(p.empty()) break; point f = p.top(); if(f.y >= a[i].y && f.x < a[i].y) break; ans -= f.h; p.pop(); } p.push(a[i]); ans += a[i].h; mx = max(mx,ans); } printf("%I64d\n",mx); } return 0;}
0 0
- Codeforces Round #401 (Div. 2)(C,D,E)
- Codeforces Round #186 (Div. 2)A、B、C、D、E
- Codeforces Round #258 (Div. 2)-(A,B,C,D,E)
- Codeforces Round #261 (Div. 2) A,B,C,D,E
- Codeforces Round #263 (Div. 2) A,B,C,D,E
- Codeforces Round #264 (Div. 2) A,B,C,D,E
- Codeforces Round #274 (Div. 2) 解题报告 (C D E)
- Codeforces Round #277 (Div. 2) A,B,C,D,E
- Codeforces Round #280 (Div. 2 A,B,C,D,E)
- Codeforces Round #287 (Div. 2) A、B、C、D、E
- Codeforces Round #287 (Div. 2)A,B,C,D,E
- Codeforces Round #288 (Div. 2) A,B,C,D,E
- Codeforces Round #293 (Div. 2) (A B C D E)
- Codeforces Round #294 (Div. 2) (C D E)
- Codeforces Round #297 (Div. 2) C,D,E
- Codeforces Round #297 (Div. 2) C、D、E
- Codeforces Round #308 (Div. 2) A B C D E
- Codeforces Round #312 (Div. 2) A B C D E
- 什么是线程?
- Android 存储区划分
- 使用listview注意事项
- 高通将在MWC推出骁龙835 VR一体机方案,整合Leap Motion手部追踪
- 24、C++在给定的字符串中查找指定的字符
- Codeforces Round #401 (Div. 2)(C,D,E)
- ServletConfig与ServletContext
- 指纹传感器和假指纹攻防技术
- 动态规划 数字三角形
- C#引用一例Form2调用Form1的函数包含 serialPort1.Write时
- 2.25 日常(位运算)
- esri-leaflet入门教程(4)-加载各类图层
- 树莓派常用配置集合
- android studio的安装过程