Codeforces Round #419 (Div. 2)
来源:互联网 发布:数据追溯软件怎么编 编辑:程序博客网 时间:2024/05/17 21:59
A题
题意:
给定一个时间,求下一个特定时间之前要睡的时间(回文串)
顺序模拟下就可
#include <bits/stdc++.h>using namespace std;char s[6];int d[4];void tran(char *s){ if(++s[3] > '9'){ s[3] = '0'; if(++s[2] > '5'){ s[2] = '0'; ++s[1]; if(s[0] == '2' && s[1] == '4'){ s[0] = s[1] = '0'; } if(s[1] > '9'){ s[1] = '0'; ++s[0]; } } }}bool test(char *s){ return s[0] == s[3] && s[1] == s[2];}int main(){ // freopen("ce.in", "r", stdin); cin >> s; s[2] = s[3]; s[3] = s[4]; s[4] = 0; int ans = 0; while(!test(s)) ++ans, tran(s); cout << ans << endl; return 0;}
B题
[x, y]染色, 差分数组:
++d[x], –d[y + 1];
d[i] = a[i] - [i - 1];
a[0] = 0;
所以
前缀和:
令sum[i]为[1, n]中满足的个数
则
则对于查询[x, y],
ans = sump[y] - sum[x - 1]
当时用线段树做的..
#include <bits/stdc++.h>using namespace std;const int N = 200010;int a[200010];int main(){ //freopen("ce.in", "r", stdin); memset(a, 0, sizeof a); int n, k, q, l, r; cin >> n >> k >> q; while(n--){ cin >> l >> r; ++a[l], --a[r + 1]; } for(int i = 1; i < 200001; ++i) a[i] += a[i - 1]; for(int i = 1; i < 200001; ++i) { a[i] = a[i] >= k ? 1:0; a[i] += a[i - 1]; } while(q--){ cin >> l >> r; cout << a[r] - a[l - 1] << endl; } return 0;}
C题
1首先比较行数, 列数;
较大的优先删;
2存每一行/列的multiset
3取第一行/列的最大最小, 如果两值相等, 则判断每一行/列是不是都相同,
如果相同按数目删行/列, 不同无解;
第一行/列两值不相等, 找最大的书局那列/行删, 记下列/行号;
重复3直至两值相等
code:
#include <bits/stdc++.h>using namespace std;int n;int g[110][110];int ansr[110];multiset<int> s[110];map<int, set<int> >mp;multiset<int> ansl;int main(){ //freopen("ce.in", "r", stdin); int r, c; scanf("%d%d", &r, &c); for(int i = 1; i <= r; ++i) for(int j = 1; j <= c; ++j) { scanf("%d", &g[i][j]); // printf("%d\n", g[i][j]); } if(r >= c) { for(int i = 1; i <= c; ++i) for(int j = 1; j <= r; ++j) { s[i].insert(g[j][i]); } for(int i = 1; i <= r; ++i) mp[g[i][1]].insert(i); multiset<int>::iterator op, ed; set<int>::iterator it; op = s[1].begin(); ed = --s[1].end(); int sum = 0; while(*op < *ed) { // printf("%d %d\n", *op, *ed); int v = *ed; it = --mp[v].end(); int row = *it; ansl.insert(row); for(int i = 1; i <= c; ++i) { s[i].erase(--s[i].end()); s[i].insert(g[row][i] - 1); if(--g[row][i] < 0) { printf("-1\n"); return 0; } } mp[v].erase(row); mp[v - 1].insert(row); ++sum; op = s[1].begin(); ed = --s[1].end(); // printf("%d %d\n", *op, *ed); } for(int i = 1; i <= c; ++i) { op = s[i].begin(); ed = --s[i].end(); if(*op < *ed) { printf("-1\n"); return 0; } ansr[i] = *op; sum += ansr[i]; } printf("%d\n", sum); for(op = ansl.begin(); op != ansl.end(); ++op) printf("row %d\n", *op); for(int i = 1; i <= c; ++i) { for(int j = 1; j <= ansr[i]; ++j) { printf("col %d\n", i); } } }else{ for(int i = 1; i <= r; ++i) for(int j = 1; j <= c; ++j) { s[i].insert(g[i][j]); } for(int i = 1; i <= c; ++i) mp[g[1][i]].insert(i); multiset<int>::iterator op, ed; set<int>::iterator it; op = s[1].begin(); ed = --s[1].end(); int sum = 0; while(*op < *ed) { // printf("%d %d\n", *op, *ed); int v = *ed; it = --mp[v].end(); int col = *it; ansl.insert(col); for(int i = 1; i <= r; ++i) { s[i].erase(--s[i].end()); s[i].insert(g[i][col] - 1); if(--g[i][col] < 0) { printf("-1\n"); return 0; } } mp[v].erase(col); mp[v - 1].insert(col); ++sum; op = s[1].begin(); ed = --s[1].end(); // printf("%d %d\n", *op, *ed); } for(int i = 1; i <= r; ++i) { op = s[i].begin(); ed = --s[i].end(); if(*op < *ed) { printf("-1\n"); return 0; } ansr[i] = *op; sum += ansr[i]; } printf("%d\n", sum); for(op = ansl.begin(); op != ansl.end(); ++op) printf("col %d\n", *op); for(int i = 1; i <= r; ++i) { for(int j = 1; j <= ansr[i]; ++j) { printf("row %d\n", i); } } } return 0;}
阅读全文
0 0
- Codeforces Round #419 (Div. 2)
- Codeforces Round #419 (Div. 2)
- Codeforces Round #419 (Div. 2)
- Codeforces Round #419 (Div. 2)
- Codeforces Round #419 (Div. 2)
- Codeforces Round #419 (Div. 2)(A+B)
- Codeforces Round #419 (Div. 2) D
- Codeforces Round #419 (Div. 2) 题解
- Codeforces Round #419 (Div. 2) A
- Codeforces Round#419 (div.1)
- Codeforces Round #102 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #104 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #107 (Div. 2)
- Codeforces Round #108 (Div. 2)
- Hadoop遇到Browse the filesystem链接打不开
- 软件包管理
- Window环境变量
- 线程同步与互斥——实现互斥锁
- POJ 2528 线段树区间更新
- Codeforces Round #419 (Div. 2)
- 先来看看什么是Lambdas
- 面试官员提出:148个资源让你成为CSS专家(上)
- Java面向对象的理解
- C++设计模式:简单工厂模式
- 使用 webpack + react + redux + es6 开发组件化前端项目
- Android中用GifView显示Gif动画及Gifview简介
- 关于多用户时hadoop的权限问题
- 锋利的jQuery读书笔记-第11章 jQuery性能优化和技巧