[JOI 2013 Final]JOIOI 塔
[JOI 2013 Final]JOIOI 塔
题意
给出一个由
求最多取出多少
思路
若答案
若答案
这样就可以可行性二分。
考虑如何判断答案
发现
而问题就在于
从后往前扫描字符串,同时维护
如果扫到
对于
如果最后的
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n;
char S[N];
bool check(int x) {
int JOI = 0, IOI = 0, OI = 0;
int J = 0, O = 0, I = 0;
for (int i = n; i >= 1; i --) {
if (S[i] == 'I') {
I ++;
if (OI + JOI + IOI + I - 1 >= x && OI > 0) {
I --;
OI --;
IOI ++;
}
}
if (S[i] == 'O') {
O ++;
if (I > 0 && O > 0) {
O --;
I --;
OI ++;
}
}
if (S[i] == 'J') {
J ++;
if (J > 0 && OI > 0) {
J --;
OI --;
JOI ++;
}
}
}
return JOI + IOI >= x;
}
int main() {
freopen("joi.in","r",stdin);
freopen("joi.out","w",stdout);
scanf("%d", &n);
scanf("%s", S + 1);
int l = 0, r = n, mid, res;
while (l <= r) {
mid = (l + r) >> 1;
if (check(mid)) {
res = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
cout << res << "\n";
return 0;
}
本文来自博客园,作者:maniubi,转载请注明原文链接:https://www.cnblogs.com/maniubi/p/18456502,orz
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY