心态爆炸。本来能全做出来的。但是由于双开了Comet oj一个比赛,写了ABC就去搞那个的B题 还被搞死了。

回来写了一会D就过了。可惜比赛已经结束了。真的是作死。

A - Buttons

#include <cstdio>
using namespace std; int main() {
int x, y;
scanf("%d%d", &x, &y);
int ans = x > y ? x : y;
if (x > y) x--;
else y--;
if (x > y) ans += x;
else ans += y;
printf("%d", ans);
return ;
}

B - Great Ocean View

#include <cstdio>
#include <algorithm>
using namespace std; const int maxn = ;
int a[maxn]; int main() {
int n;
scanf("%d", &n);
for (int i = ; i < n; i++) scanf("%d", &a[i]);
int ans = ;
for (int i = ; i < n; i++) {
bool flag = false;
for (int j = i - ; j >= ; j--) {
if (a[i] < a[j]) {
flag = true;
break;
}
}
if (!flag) ans++;
}
printf("%d\n", ans);
return ;
}

C - Coloring Colorfully

只有两种排列方式 第一种为0或者第一种为1

跑两遍取最小就好了

#include <bits/stdc++.h>
using namespace std; const int maxn = 1e5 + ;
char s[maxn]; int main() {
scanf("%s", s);
int len = strlen(s);
if (len == ) {
puts("");
return ;
}
int now = ;
int ans = ;
for (int i = ; i < len; i++) {
if (s[i] - '' != now) ans++;
now ^= ;
}
int temp = ;
now = ;
for (int i = ; i < len; i++) {
if (s[i] - '' != now) temp++;
now ^= ;
}
printf("%d\n", min(ans, temp));
return ;
}

D - Handstand

题意是一个长为N的01串,可以至多操作K次,每次操作任选一个区间都变成另一个颜色

求最长连续1的长度

问题就等价于有x个连续1的区间(遍历统计一下)把 k+1 个区间并起来有多长(中间的0也得统计上)

区间用结构体存上l,r 统计答案就是G[i+k].r - G[i].l + 1

有多种情况要考虑

一是 0000000000001010101010101000000 这样统计答案的时候

我们会忽略掉这些前导0和后导0 因为我们是从G[0].l开始统计的 所以不是正解

解决方案就是 G数组给加上头和尾 G{0].l = G[0].r = 0 G[x].l = G[x].r = len-1

遍历统计答案的时候就会把这些前导0后导0给算上

二是 000000000000000100000001000000000  k = 500 的情况

这是特殊情况 如果连续1的区间没有k + 1大的话 答案就是len了

#include <bits/stdc++.h>
using namespace std; const int maxn = 1e5 + ;
char s[maxn];
struct Point {
int l, r;
} G[maxn]; int main() {
int len, k;
scanf("%d%d", &len, &k);
scanf("%s", s);
int l = ;
int cnt = ;
s[len] = '';
G[].l = G[].r = ;
cnt = ;
for (int i = ; i <= len; i++) {
if (s[i] == '') {
if (!l) G[cnt++].l = i;
l++;
} else {
if (l) G[cnt-].r = i - ;
l = ;
}
}
G[cnt].l = G[cnt].r = len - ;
cnt++;
int ans = ;
if (k + >= cnt) {
printf("%d\n", len);
return ;
}
for (int i = ; i < cnt; i++) {
int temp = i + k;
if (temp >= cnt) break;
ans = max(ans, G[temp].r - G[i].l + );
}
ans = min(ans, len);
printf("%d\n", ans);
return ;
}

下次再也不多开比赛了。

Atcoder Beginner Contest 124 解题报告的更多相关文章

  1. AtCoder Beginner Contest 122 解题报告

    手速选手成功混进rated only里面的前30名,但是总排名就到110+了... A - Double Helix #include <bits/stdc++.h> #define ll ...

  2. AtCoder Beginner Contest 146解题报告

    题目地址 https://atcoder.jp/contests/abc146/tasks 感觉没有什么有意思的题... 题解 A #include <bits/stdc++.h> usi ...

  3. AtCoder Beginner Contest 118 解题报告

    A - B +/- A #include <bits/stdc++.h> int main() { int a, b; std::cin >> a >> b; b ...

  4. AtCoder Beginner Contest 120 解题报告

    为啥最近都没有arc啊... A - Favorite Sound #include <algorithm> #include <iostream> #include < ...

  5. AtCoder Beginner Contest 117 解题报告

    果然abc都是手速场. 倒序开的qwq. D题因为忘记1e12二进制几位上界爆了一发. A - Entrance Examination 就是除一下就行了... 看样例猜题意系列. #include& ...

  6. AtCoder Beginner Contest 132 解题报告

    前四题都好水.后面两道题好难. C Divide the Problems #include <cstdio> #include <algorithm> using names ...

  7. AtCoder Beginner Contest 129 解题报告

    传送门 写了四个题就跑去打球了.第五题应该能肝出来的. A - Airplane #include <bits/stdc++.h> using namespace std; inline ...

  8. AtCoder Beginner Contest 127 解题报告

    传送门 非常遗憾.当天晚上错过这一场.不过感觉也会掉分的吧.后面两题偏结论题,打了的话应该想不出来. A - Ferris Wheel #include <bits/stdc++.h> u ...

  9. AtCoder Beginner Contest 126 解题报告

    突然6道题.有点慌.比赛写了五个.罚时爆炸.最后一个时间不太够+没敢写就放弃了. 两道题奇奇怪怪的WJ和20/20.今天的评测机是怎么了. A Changing a Character #includ ...

随机推荐

  1. 关于git的简单操作

    首先这篇随笔我是不太想写的,因为网上有很多教程,我也是看廖雪峰大神的git教程自学的.还是一个小学生,就当一个学习笔记了,如果你想看大神的原版,请点击这里.我们原来都是用svn的,但是越来越觉得svn ...

  2. JSONObject.parseObject

    { "data":{ "shop_uid":"123"; “id”:"123" } } 将上面的json字符串转换为JS ...

  3. matlab练习程序(对应点集配准的四元数法)

    这个算是ICP算法中的一个关键步骤,单独拿出来看一下. 算法流程如下: 1.首先得到同名点集P和X. 2.计算P和X的均值up和ux. 3.由P和X构造协方差矩阵sigma. 4.由协方差矩阵sigm ...

  4. Spark读Hbase优化 --手动划分region提高并行数

    一. Hbase的region 我们先简单介绍下Hbase的架构和Hbase的region: 从物理集群的角度看,Hbase集群中,由一个Hmaster管理多个HRegionServer,其中每个HR ...

  5. java中split特殊符号

    关于点的问题是用string.split("[.]") 解决. 关于竖线的问题用 string.split("\\|")解决. 关于星号的问题用 string. ...

  6. 【转贴】一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历

    原文:https://juejin.im/post/5902e087da2f60005df05c3d ------------------------------------------------- ...

  7. Redis持久化的方式

    Redis小知识: redis是键值对的数据库,有5中主要数据类型: 字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset) Redis持 ...

  8. mmz-asio4delphi死链接的解决办法

    最近一段时间,因为忙于网络的项目,特意到网上找了些例子,特意花时间研究了一下马敏钊写的 mmz-asio4delphi 感觉很好用,不过深入研究之后,发现一个问题. 马大的这个代码,会产生死链接.   ...

  9. SQLServer之修改存储过程

    修改存储过程注意事项 只能修改先前在 SQL Server 中通过执行 CREATE PROCEDURE 语句创建的过程. Transact-SQL 存储过程修改为 CLR 存储过程,反之亦然. AL ...

  10. LSB和MSB

    最低有效位(the least significant bit,lsb)是指一个二进制数字中的第0位(即最低位),具有权值为2^0,可以用它来检测数的奇偶性.与之相反的称之为最高有效位.在大端序中,l ...