博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #568 (div. 2)
阅读量:4507 次
发布时间:2019-06-08

本文共 5294 字,大约阅读时间需要 17 分钟。

题目链接:


A:

水。

1 /* basic header */ 2 #include 
3 /* define */ 4 #define ll long long 5 #define dou double 6 #define pb emplace_back 7 #define mp make_pair 8 #define sot(a,b) sort(a+1,a+1+b) 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)10 #define rep0(i,a,b) for(int i=a;i
>1)17 /* namespace */18 using namespace std;19 /* header end */20 21 int a[4], d;22 23 int main() {24 cin >> a[1] >> a[2] >> a[3] >> d;25 sot(a, 3);26 cout << (d - (a[2] - a[1]) >= 0 ? d - (a[2] - a[1]) : 0) + (d - (a[3] - a[2]) >= 0 ? d - (a[3] - a[2]) : 0) << endl;27 return 0;28 }
View Code

B:

扫一遍完事。

1 /* basic header */ 2 #include 
3 /* define */ 4 #define ll long long 5 #define dou double 6 #define pb emplace_back 7 #define mp make_pair 8 #define sot(a,b) sort(a+1,a+1+b) 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)10 #define rep0(i,a,b) for(int i=a;i
>1)17 /* namespace */18 using namespace std;19 /* header end */20 21 int n;22 23 int main() {24 cin >> n;25 while (n--) {26 string a, b; cin >> a >> b;27 int i = 0, j = 0, aLen = a.size(), bLen = b.size();28 while (i < aLen || j < bLen) {29 if (a[i] == b[j]) i++, j++;30 else if (j && b[j] == b[j - 1]) j++;31 else break;32 }33 if (i == aLen && j == bLen) puts("YES");34 else puts("NO");35 }36 return 0;37 }
View Code

C1:

贪心。每读一个就sort一次,然后扫一遍维护ans[i]和sum。

1 /* basic header */ 2 #include 
3 /* define */ 4 #define ll long long 5 #define dou double 6 #define pb emplace_back 7 #define mp make_pair 8 #define sot(a,b) sort(a+1,a+1+b) 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)10 #define rep0(i,a,b) for(int i=a;i
>1)17 /* namespace */18 using namespace std;19 /* header end */20 21 const int maxn = 2e5 + 10;22 int n, m, a[maxn] = {
0}, b[maxn] = {
0};23 24 int main() {25 scanf("%d%d", &n, &m);26 rep0(i, 0, n) {27 cin >> a[i];28 sort(a, a + i);29 ll sum = 0;30 rep1(j, 0, i)31 if (sum + a[i] + a[j] > m) {32 b[i] = i - j;33 break;34 } else sum += a[j];35 }36 rep0(i, 0, n) printf("%d ", b[i]);37 puts("");38 return 0;39 }
View Code

C2:

贪心+枚举时间戳。

1 /* basic header */ 2 #include 
3 /* define */ 4 #define ll long long 5 #define dou double 6 #define pb emplace_back 7 #define mp make_pair 8 #define sot(a,b) sort(a+1,a+1+b) 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)10 #define rep0(i,a,b) for(int i=a;i
>1)17 /* namespace */18 using namespace std;19 /* header end */20 21 const int maxn = 2e5 + 10;22 int n, m, a[maxn], b[maxn], time[110];23 24 int main() {25 scanf("%d%d", &n, &m);26 rep0(i, 0, n) scanf("%d", &a[i]);27 rep0(i, 0, 110) time[i] = 0;28 int s = 0, sum = 0, ss = 0, delta1 = 0, delta2 = 0;29 rep0(i, 0, n) {30 s += a[i];31 if (s > m) {32 delta1 = s - m;33 ss = 0;34 for (int j = 100; j >= 1; j--) // enum each time slot35 if (time[j]) {36 sum += j * time[j];37 ss += time[j];38 if (sum > delta1) {39 delta2 = sum - delta1;40 ss -= delta2 / j;41 break;42 }43 }44 b[i] = ss;45 sum = 0;46 } else b[i] = 0;47 time[a[i]]++;48 }49 rep0(i, 0, n) printf("%d ", b[i]);50 puts("");51 return 0;52 }
View Code

D:

暴力。n==2时必定成立。sort一遍,枚举三种状态即可:删了最小的、删了最大的、删了中间某个。然后分别检查是否成立即可。

1 /* basic header */ 2 #include 
3 /* define */ 4 #define ll long long 5 #define dou double 6 #define pb emplace_back 7 #define mp make_pair 8 #define sot(a,b) sort(a+1,a+1+b) 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)10 #define rep0(i,a,b) for(int i=a;i
>1)17 /* namespace */18 using namespace std;19 /* header end */20 21 const int maxn = 2e5 + 10;22 struct Node {23 Node() {}24 int val, posi;25 bool operator<(const Node &rhs)const {26 return val < rhs.val;27 }28 } a[maxn];29 int n;30 vector
b;31 32 int main() {33 scanf("%d", &n);34 rep1(i, 1, n) {35 scanf("%d", &a[i].val);36 a[i].posi = i;37 }38 if (n == 2) return puts("1"), 0;39 sot(a, n);40 int s = a[n].val - a[1].val, pos = 1, d = s / (n - 2), cnt = 0;41 rep1(i, 1, n)42 if (a[i].val != a[1].val + d * (i - cnt - 1)) {43 pos = a[i].posi;44 cnt++;45 }46 if (cnt == 1) return printf("%d\n", pos), 0;47 s = a[n - 1].val - a[1].val; d = s / (n - 2);48 int flag = 0;49 rep1(i, 1, n - 1)50 if (a[i].val != a[1].val + d * (i - 1))51 flag = 1;52 if (!flag) return printf("%d\n", a[n].posi), 0;53 flag = 0; s = a[n].val - a[2].val; d = s / (n - 2);54 rep1(i, 2, n)55 if (a[i].val != a[2].val + d * (i - 2))56 flag = 1;57 if (!flag) return printf("%d\n", a[1].posi), 0;58 puts("-1");59 return 0;60 }
View Code

E:

大模拟,不是很好写,我实在是写不动这种东西……

F:

位运算暴力题。

G1 && G2:

这个就真的不会了.

 

转载于:https://www.cnblogs.com/JHSeng/p/11204093.html

你可能感兴趣的文章
新东方6级听写考点笔记
查看>>
MySQL积累
查看>>
gulp详细入门教程
查看>>
学习中 C 相关一些试题和答案
查看>>
python中的可迭代对象与迭代器
查看>>
WebKit的已实施srcset图像响应属性
查看>>
suggestion开发小结以及 对键盘事件的总结(针对中文输入法状态)
查看>>
Nio Client
查看>>
数据库 chapter 16 XML数据库
查看>>
spring mvc jsp运行不起来的问题
查看>>
tkinter笔记005-输入框
查看>>
大数据概述
查看>>
SpringBoot 密码MD5加密
查看>>
Mac MySQL启动不了解决办法(MySQL卸载重新安装教程)
查看>>
连通块
查看>>
servlet.txt笔记
查看>>
jquery设置select选中
查看>>
今天说一下DML触发器的顺序
查看>>
Memcached学习(一)--网络模型
查看>>
FragmentTransaction add 和 replace 区别 转
查看>>