题目地址

https://loj.ac/problem/2764

题解

真的想不到二分...不看tag的话...
考虑二分答案转化为判定问题,那么问题就变成了能不能组合出x个JOI/IOI,考虑贪心判定,倒着做,统计I的个数cnt,已组OI的个数tot,以及JOI/IOI个数ans。对于J显然直接找一个OI组成答案。对于O显然直接找I。对于I需要贪心考虑,假设目前的cnt+tot+ans>=x那么就组答案,否则做OI里面的那个I,让cnt++。(贪心考虑只需要造x个OI,造多了会浪费)

#include <bits/stdc++.h>
using namespace std;#define ll long long
const int N = 1000010;int n;
char s[N];bool check(int x) {int ans = 0, tot = 0, cnt = 0;for(int i = n; i; --i) {if(x == ans) return 1;if(s[i] == 'J') {if(tot) --tot, ++ans;continue;}if(s[i] == 'O') {if(cnt) --cnt, ++tot;continue;}if(s[i] == 'I') {if(ans + tot + cnt < x) cnt++;else {if(tot) --tot, ++ans;}}}if(x == ans) return 1;return 0;
}int main() {scanf("%d%s", &n, s + 1);int l = 0, r = n, ans = 0;while(l <= r) {int mid = (l + r) >> 1;if(check(mid)) ans = mid, l = mid + 1;else r = mid - 1;} printf("%d\n", ans);
}

转载于:https://www.cnblogs.com/henry-1202/p/11432873.html

LOJ#2764. 「JOI 2013 Final」JOIOI 塔相关推荐

  1. 「JOI 2016 Final」断层

    嘟嘟嘟 今天我们模拟考这题,出的是T3.实在是没想出来,就搞了个20分暴力(还WA了几发). 这题关键在于逆向思维,就是考虑最后的\(n\)的个点刚开始在哪儿,这样就减少了很多需要维护的东西. 这就让 ...

  2. Luogu P5103 「JOI 2016 Final」断层 树状数组or线段树+脑子

    太神仙了这题... 原来的地面上升,可以倒着操作(时光倒流),转化为地面沉降,最后的答案就是每个点的深度. 下面的1,2操作均定义为向下沉降(与原题意的变换相反): 首先这个题目只会操作前缀和后缀,并 ...

  3. T3:LOJ2332「JOI 2017 Final」焚风现象.cpp

    记录差值 然后每次运算一下头和尾 如果尾端是最后一次增加则不用运算尾端 详见代码 #include<iostream> #include<cstdio> #include< ...

  4. Libre OJ P2332「JOI 2017 Final」焚风现象【差分思想】By cellur925

    题目传送门 这道题开始看起来会很晕...\(qwq\).首先我们要明确题目中的海拔&&温度.温度是受海拔影响的,每次改变的是海拔,我们求的是温度. 我们开始读入的时候便可以处理出开始\ ...

  5. 【2018.10.1】「JOI 2014 Final」年轮蛋糕

    题面 一看到求"最小值的最大值"这种问题,就能想到二分了. 二分答案,然后我们要把一圈分成三块,使这三块的大小都$\geq mid$.做法是把环展开成2倍长度的链,先钦定一个起点, ...

  6. 【题解】LOJ2350:「JOI 2018 Final」月票购买

    原题传送门 可以很套路地得到一个结论,答案与月票的路径有一段连续的重复路径 以 s , t , u , v s,t,u,v s,t,u,v为起点跑四次最短路 现在我们枚举两个月票最短路上的点 x , ...

  7. 【题解】LOJ3254:「JOI 2020 Final」集邮比赛 3

    原题传送门 发现 n < = 200 n<=200 n<=200,那么我们就可以想一个 O ( n 3 ) O(n^3) O(n3)的dp 发现每次肯定是向左/右推进 可以令 d p ...

  8. Loj #2324. 「清华集训 2017」小 Y 和二叉树

    Loj #2324. 「清华集训 2017」小 Y 和二叉树 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙上, ...

  9. [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机)

    [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机) 试题描述 IOI 的比赛开始了.Jsp 和 Rlc 坐在一个角落,这时他们听到了一个异样的声音 -- 接着他们发现自己收 ...

  10. [LOJ#2329]「清华集训 2017」我的生命已如风中残烛

    [LOJ#2329]「清华集训 2017」我的生命已如风中残烛 试题描述 九条可怜是一个贪玩的女孩子. 这天她在一堵墙钉了 \(n\) 个钉子,第 \(i\) 个钉子的坐标是 \((x_i,y_i)\ ...

最新文章

  1. 字符串静态顺序结构C/C++实现(数据结构严蔚敏版)
  2. 分析BootstrapClassLoader/ExtClassLoader/AppClassLoader的加载路径 及父委托机制
  3. 【笔记】css 自定义select 元素的箭头样式
  4. MongoDB副本集同步原理
  5. Hadoop生态圈-Hbase的API常见操作
  6. Kinect 深度测量原理
  7. OA报账规范(出差专用)
  8. matlab tic和toc单位,matlab toc tic 的用法
  9. discuz php单页,Discuz! 单页制作教程
  10. Task03基于鸢尾花iris数据集的逻辑回归分类实践
  11. The Framework For Love
  12. 中国男人到底配不配得上中国…
  13. Davinci的异构多核间通信基础组件SysLink 2.0
  14. 汽车销售管理系统数据库的设计与实现
  15. turf:计算面积、折线长度和两点距离
  16. 洛谷 P1885 Moo
  17. Visual Studio 2010 简体中文旗舰版(含各版本下载地址 和KEY)
  18. 感觉这公司的面试要求还算靠谱的
  19. 将ipad作为电脑拓展屏或分屏的简单方法
  20. 购物车模块设计及实现(SSH架构)

热门文章

  1. 拓端tecdat|R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
  2. 拓端tecdat|matlab使用分位数随机森林(QRF)回归树检测异常值
  3. 拓端tecdat|R语言公交地铁路线进出站数据挖掘网络图可视化
  4. signature=b28f8fc969e82dcca916aa6ef86476cb,Method for verifying redundancy of secure systems
  5. (14)Python_SimpleImputer缺失值处理
  6. linux配置jupyterlab
  7. Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细
  8. 非极大值抑制(Non-Maximum Suppression)
  9. python数字图像处理(12):基本图形的绘制
  10. 20170917软件工程师在线笔试之员工幸福感问题