LOJ#2764. 「JOI 2013 Final」JOIOI 塔
题目地址
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 塔相关推荐
- 「JOI 2016 Final」断层
嘟嘟嘟 今天我们模拟考这题,出的是T3.实在是没想出来,就搞了个20分暴力(还WA了几发). 这题关键在于逆向思维,就是考虑最后的\(n\)的个点刚开始在哪儿,这样就减少了很多需要维护的东西. 这就让 ...
- Luogu P5103 「JOI 2016 Final」断层 树状数组or线段树+脑子
太神仙了这题... 原来的地面上升,可以倒着操作(时光倒流),转化为地面沉降,最后的答案就是每个点的深度. 下面的1,2操作均定义为向下沉降(与原题意的变换相反): 首先这个题目只会操作前缀和后缀,并 ...
- T3:LOJ2332「JOI 2017 Final」焚风现象.cpp
记录差值 然后每次运算一下头和尾 如果尾端是最后一次增加则不用运算尾端 详见代码 #include<iostream> #include<cstdio> #include< ...
- Libre OJ P2332「JOI 2017 Final」焚风现象【差分思想】By cellur925
题目传送门 这道题开始看起来会很晕...\(qwq\).首先我们要明确题目中的海拔&&温度.温度是受海拔影响的,每次改变的是海拔,我们求的是温度. 我们开始读入的时候便可以处理出开始\ ...
- 【2018.10.1】「JOI 2014 Final」年轮蛋糕
题面 一看到求"最小值的最大值"这种问题,就能想到二分了. 二分答案,然后我们要把一圈分成三块,使这三块的大小都$\geq mid$.做法是把环展开成2倍长度的链,先钦定一个起点, ...
- 【题解】LOJ2350:「JOI 2018 Final」月票购买
原题传送门 可以很套路地得到一个结论,答案与月票的路径有一段连续的重复路径 以 s , t , u , v s,t,u,v s,t,u,v为起点跑四次最短路 现在我们枚举两个月票最短路上的点 x , ...
- 【题解】LOJ3254:「JOI 2020 Final」集邮比赛 3
原题传送门 发现 n < = 200 n<=200 n<=200,那么我们就可以想一个 O ( n 3 ) O(n^3) O(n3)的dp 发现每次肯定是向左/右推进 可以令 d p ...
- Loj #2324. 「清华集训 2017」小 Y 和二叉树
Loj #2324. 「清华集训 2017」小 Y 和二叉树 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙上, ...
- [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机)
[LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机) 试题描述 IOI 的比赛开始了.Jsp 和 Rlc 坐在一个角落,这时他们听到了一个异样的声音 -- 接着他们发现自己收 ...
- [LOJ#2329]「清华集训 2017」我的生命已如风中残烛
[LOJ#2329]「清华集训 2017」我的生命已如风中残烛 试题描述 九条可怜是一个贪玩的女孩子. 这天她在一堵墙钉了 \(n\) 个钉子,第 \(i\) 个钉子的坐标是 \((x_i,y_i)\ ...
最新文章
- 字符串静态顺序结构C/C++实现(数据结构严蔚敏版)
- 分析BootstrapClassLoader/ExtClassLoader/AppClassLoader的加载路径 及父委托机制
- 【笔记】css 自定义select 元素的箭头样式
- MongoDB副本集同步原理
- Hadoop生态圈-Hbase的API常见操作
- Kinect 深度测量原理
- OA报账规范(出差专用)
- matlab tic和toc单位,matlab toc tic 的用法
- discuz php单页,Discuz! 单页制作教程
- Task03基于鸢尾花iris数据集的逻辑回归分类实践
- The Framework For Love
- 中国男人到底配不配得上中国…
- Davinci的异构多核间通信基础组件SysLink 2.0
- 汽车销售管理系统数据库的设计与实现
- turf:计算面积、折线长度和两点距离
- 洛谷 P1885 Moo
- Visual Studio 2010 简体中文旗舰版(含各版本下载地址 和KEY)
- 感觉这公司的面试要求还算靠谱的
- 将ipad作为电脑拓展屏或分屏的简单方法
- 购物车模块设计及实现(SSH架构)
热门文章
- 拓端tecdat|R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
- 拓端tecdat|matlab使用分位数随机森林(QRF)回归树检测异常值
- 拓端tecdat|R语言公交地铁路线进出站数据挖掘网络图可视化
- signature=b28f8fc969e82dcca916aa6ef86476cb,Method for verifying redundancy of secure systems
- (14)Python_SimpleImputer缺失值处理
- linux配置jupyterlab
- Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细
- 非极大值抑制(Non-Maximum Suppression)
- python数字图像处理(12):基本图形的绘制
- 20170917软件工程师在线笔试之员工幸福感问题