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

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

A - Buttons

  1. #include <cstdio>
  2. using namespace std;
  3.  
  4. int main() {
  5. int x, y;
  6. scanf("%d%d", &x, &y);
  7. int ans = x > y ? x : y;
  8. if (x > y) x--;
  9. else y--;
  10. if (x > y) ans += x;
  11. else ans += y;
  12. printf("%d", ans);
  13. return ;
  14. }

B - Great Ocean View

  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. const int maxn = ;
  6. int a[maxn];
  7.  
  8. int main() {
  9. int n;
  10. scanf("%d", &n);
  11. for (int i = ; i < n; i++) scanf("%d", &a[i]);
  12. int ans = ;
  13. for (int i = ; i < n; i++) {
  14. bool flag = false;
  15. for (int j = i - ; j >= ; j--) {
  16. if (a[i] < a[j]) {
  17. flag = true;
  18. break;
  19. }
  20. }
  21. if (!flag) ans++;
  22. }
  23. printf("%d\n", ans);
  24. return ;
  25. }

C - Coloring Colorfully

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

跑两遍取最小就好了

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int maxn = 1e5 + ;
  5. char s[maxn];
  6.  
  7. int main() {
  8. scanf("%s", s);
  9. int len = strlen(s);
  10. if (len == ) {
  11. puts("");
  12. return ;
  13. }
  14. int now = ;
  15. int ans = ;
  16. for (int i = ; i < len; i++) {
  17. if (s[i] - '' != now) ans++;
  18. now ^= ;
  19. }
  20. int temp = ;
  21. now = ;
  22. for (int i = ; i < len; i++) {
  23. if (s[i] - '' != now) temp++;
  24. now ^= ;
  25. }
  26. printf("%d\n", min(ans, temp));
  27. return ;
  28. }

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了

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int maxn = 1e5 + ;
  5. char s[maxn];
  6. struct Point {
  7. int l, r;
  8. } G[maxn];
  9.  
  10. int main() {
  11. int len, k;
  12. scanf("%d%d", &len, &k);
  13. scanf("%s", s);
  14. int l = ;
  15. int cnt = ;
  16. s[len] = '';
  17. G[].l = G[].r = ;
  18. cnt = ;
  19. for (int i = ; i <= len; i++) {
  20. if (s[i] == '') {
  21. if (!l) G[cnt++].l = i;
  22. l++;
  23. } else {
  24. if (l) G[cnt-].r = i - ;
  25. l = ;
  26. }
  27. }
  28. G[cnt].l = G[cnt].r = len - ;
  29. cnt++;
  30. int ans = ;
  31. if (k + >= cnt) {
  32. printf("%d\n", len);
  33. return ;
  34. }
  35. for (int i = ; i < cnt; i++) {
  36. int temp = i + k;
  37. if (temp >= cnt) break;
  38. ans = max(ans, G[temp].r - G[i].l + );
  39. }
  40. ans = min(ans, len);
  41. printf("%d\n", ans);
  42. return ;
  43. }

下次再也不多开比赛了。

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. 《Odoo开发指南》精选分享—第1章-开始使用Odoo开发(1)

    引言 在进入Odoo开发之前,我们需要建立我们的开发环境,并学习它的基本管理任务. 在本章中,我们将学习如何设置工作环境,在这里我们将构建我们的Odoo应用程序.我们将学习如何设置Debian或Ubu ...

  2. TextView图文混排

    大家都知道,textView有一个setCompoundDrawables的方法来设置上下左右位置的图标,当然,也可以在xml布局文件中设置,然而问题来了,假如我们把图标放在左边,当我们让TextVi ...

  3. 转摘app测试方法总结

    app测试方法总结   一.安全测试 1.软件权限 1)扣费风险:包括短信.拨打电话.连接网络等. 2)隐私泄露风险:包括访问手机信息.访问联系人信息等. 3)对App的输入有效性校验.认证.授权.数 ...

  4. 定时删除所有文件夹下的_desktop.ini文件

    写个批处理,删除对应的文件,命名为DELDesktopIni.bat,存于D盘根目录 @echo off :delini for %%a in ( C: D: E: ) DO ( del /f/s/a ...

  5. Python+ITchart实现微信中男女比例,城市分布统计并可视化显示

    直接上代码: import itchat import os import csv import pandas as pd from pyecharts import Bar,Pie,Geo impo ...

  6. js实现横向跑马灯效果

    首先我们需要一个html代码的框架如下: <div style="position: absolute; top: 0px; left: 168px; width: 100%; mar ...

  7. 【Spring】application.xml文件配置

    什么是Spring? Spring是分层的javaEE full-stack(一站式)轻量级开源框架. ---注解配置--针对SSM <?xml version="1.0" ...

  8. Linux下添加windows字体

    在Linux下使用wqy字体,在视觉效果上就已近很好了,其实没有必要添加windows字体.但是显然有些人(比如领导,^..^)就喜欢宋体.楷体,所以添加windows字体有时还是需要的,幸运的是这件 ...

  9. Django路由(url)

    1.基本配置 from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', ...

  10. Python第二天: 变量详解及变量赋值

    目录 什么是变量? 怎么写一个好的变量? 下划线命名法及驼峰命名法 结语 目录 此文章针对刚学Python的小白,若觉得对变量有很好的掌握,可以观看其他的文章 在这里, 我说一下我对变量的简单总结: ...