Atcoder Beginner Contest 124 解题报告
心态爆炸。本来能全做出来的。但是由于双开了Comet oj一个比赛,写了ABC就去搞那个的B题 还被搞死了。
回来写了一会D就过了。可惜比赛已经结束了。真的是作死。
#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 ;
}
#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 ;
}
只有两种排列方式 第一种为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 ;
}
题意是一个长为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 解题报告的更多相关文章
- AtCoder Beginner Contest 122 解题报告
手速选手成功混进rated only里面的前30名,但是总排名就到110+了... A - Double Helix #include <bits/stdc++.h> #define ll ...
- AtCoder Beginner Contest 146解题报告
题目地址 https://atcoder.jp/contests/abc146/tasks 感觉没有什么有意思的题... 题解 A #include <bits/stdc++.h> usi ...
- AtCoder Beginner Contest 118 解题报告
A - B +/- A #include <bits/stdc++.h> int main() { int a, b; std::cin >> a >> b; b ...
- AtCoder Beginner Contest 120 解题报告
为啥最近都没有arc啊... A - Favorite Sound #include <algorithm> #include <iostream> #include < ...
- AtCoder Beginner Contest 117 解题报告
果然abc都是手速场. 倒序开的qwq. D题因为忘记1e12二进制几位上界爆了一发. A - Entrance Examination 就是除一下就行了... 看样例猜题意系列. #include& ...
- AtCoder Beginner Contest 132 解题报告
前四题都好水.后面两道题好难. C Divide the Problems #include <cstdio> #include <algorithm> using names ...
- AtCoder Beginner Contest 129 解题报告
传送门 写了四个题就跑去打球了.第五题应该能肝出来的. A - Airplane #include <bits/stdc++.h> using namespace std; inline ...
- AtCoder Beginner Contest 127 解题报告
传送门 非常遗憾.当天晚上错过这一场.不过感觉也会掉分的吧.后面两题偏结论题,打了的话应该想不出来. A - Ferris Wheel #include <bits/stdc++.h> u ...
- AtCoder Beginner Contest 126 解题报告
突然6道题.有点慌.比赛写了五个.罚时爆炸.最后一个时间不太够+没敢写就放弃了. 两道题奇奇怪怪的WJ和20/20.今天的评测机是怎么了. A Changing a Character #includ ...
随机推荐
- finereport报表--动态格间运算 二
报表输出
- JavaScript(转载自 计科学院 慕课网)
什么是脚本语言? ①脚本语言介于HTML和C,C++,Java,C#等编程语言之间 ②脚本语言与编程语言有相似地方,其函数与编程语言类似,也有变量.与编程语言之间最大的区别是编程语言的语法和规则更为严 ...
- JavaScript类型化数组(二进制数组)
0.前言 对于前端程序员来说,平时很少和二进制数据打交道,所以基本上用不到ArrayBuffer,大家对它很陌生,但是在使用WebGL的时候,ArrayBuffer无处不在.浏览器通过WebGL和显卡 ...
- 谷歌浏览器扩展程序manifest.json参数详解
{ // Required "manifest_version": 2, // manifest编写规范版本,目前主流2 "name": "My Ex ...
- SQL server常用函数使用示例
select convert(nvarchar(10),id)+name from t //convert():数据类型转换,将“id”列转换为“nvarchar”. select cast(id a ...
- 爬虫基础--IO多路复用单线程异步非阻塞
最近一直的学习爬虫 ,进行基础的学习 性能相关 参考 https://www.cnblogs.com/wupeiqi/p/6229292.html # 目标:单线程实现并发HTTP请求 # # so ...
- C#字符串转二进制、二进制转字符串
最近公司要做一个操作日志的模块,如果将操作日志以字符串的形式存到后台数据库,非常浪费内存,不可取,特意写了字符串与二进制相互转换的函数. 1.字符串转二进制 private string String ...
- Linux中删除特殊名称文件的多种方式
今日分享:我们在肉体的疾病方面花了不少钱,精神的病害方面却没有花什么,现在已经到了时候,我们应该有不平凡的学校.--<瓦尔登湖> 前言 我们都知道,在linux删除一个文件可以使用rm命令 ...
- Linux Mysql 每天定时备份
1.创建脚本 dbback.sh,内容如下: #!/bin/bash mysqldump -uroot -p123456 hexin>/work/db_back/hexin_$(date +%Y ...
- kernel笔记——进程调度
调度器完成以下任务: 时钟中断(或类似的定时器)时间内刷新进程的时间片,设置进程调度标志 系统调用返回或中断完成时检查调度标志 schedule函数 内核代码中完成进程调度的函数为schedule() ...