【洛谷P1371】NOI元丹

不考虑insert

则NOI的个数可通过O(n)递推得到:

sum_NOI<--sum_NO<--sum_N

考虑insert:

首先预处理对于每个N,其后面的O和I各有多少个

N:显然插入在最前面

I:最后面

O:枚举断点,前面的N*后面的I,取max

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 #define ll long long
 5 const int L=100100;
 6 int n,nn,ii,oo;
 7 ll ans,sum_N,sum_NO,sum_NOI;
 8 char s[L];
 9 struct fax{
10     int loc,o,i;//loc???°μ? O£???oóμ? I
11 }N[L];
12 struct fbx{
13     int loc,i;//loc??oóμ? I
14 }O[L];
15 ll max(ll x,ll y){
16     return x>y?x:y;
17 }
18 void addN(){
19     ll n0=0;
20     for (int j=1;j<=oo;j++)
21         n0+=O[j].i;
22     ans=max(ans,sum_NOI+n0);
23 }
24 void addI(){
25     ll ooo,i0=0;
26     for (int i=1;i<=nn;i++){
27         ooo=N[i].o;
28         i0+=oo-ooo;
29     }
30     ans=max(ans,sum_NOI+i0);
31 }
32 void addO(){
33     ll o0=0;
34     for (int j=1;j<=nn;j++)
35         o0=max(o0,(ll)j*N[j].i);
36     ans=max(ans,sum_NOI+o0);
37 }
38 int main(){
39     sum_N=sum_NO=sum_NOI=ii=oo=nn=ans=0;
40     scanf("%d",&n);
41     scanf("%s",s);
42     for (int i=0;i<n;i++){
43         if (s[i]==‘N‘){
44             nn++;
45             N[nn].loc=i;
46             N[nn].o=oo;
47             N[nn].i=ii;
48             sum_N++;
49         }
50         if (s[i]==‘O‘){
51             oo++;
52             O[oo].loc=i;
53             O[oo].i=ii;
54             sum_NO+=sum_N;
55         }
56         if (s[i]==‘I‘){
57             ii++;
58             sum_NOI+=sum_NO;
59         }
60     }
61     for (int j=1;j<=nn;j++)
62         N[j].i=ii-N[j].i;
63     for (int j=1;j<=oo;j++)
64         O[j].i=ii-O[j].i;
65     addN();
66     addO();
67     addI();
68     printf("%lld",ans);
69     return 0;
70 }

STD

时间: 2024-08-25 01:58:28

【洛谷P1371】NOI元丹的相关文章

[洛谷]P3613 睡觉困难综合征

题目大意:给出一棵n个点的树,每个点有一个运算符(与.或.异或)和一个数,支持两种操作,第一种修改一个点的运算符和数,第二种给出x,y,z,询问若有一个0~z之间的数从点x走到点y(简单路径),并且对路径上经过的点做对应的运算,最终最大能是多少.(n,操作数<=100,000,数字在[0,2^64)之间) 思路:洛谷改编NOI的一道神题,树剖/LCT维护若一开始全是0/全是1,经过一条链后各位会变成什么,用位运算合并信息,然后每个询问,从高位往低位贪心,每次取0和1中经过这条链后得到的较大值,若

洛谷10月月赛Round.3

Rank11:260=60+100+100 P2409 Y的积木 题目背景 Y是个大建筑师,他总能用最简单的积木拼出最有创意的造型. 题目描述 Y手上有n盒积木,每个积木有个重量.现在他想从每盒积木中拿一块积木,放在一起,这一堆积木的重量为每块积木的重量和.现在他想知道重量和最小的k种取法的重量分别是多少.(只要任意更换一块积木,就视为一种不同的取法.如果多种取法重量总和一样,我们需要输出多次.) 输入输出格式 输入格式: 第一行输入两个整数,n,k,意义如题目所描述. 每组数据接下来的n行,第

洛谷1001 A+B Problem

洛谷1001 A+B Problem 本题地址:http://www.luogu.org/problem/show?pid=1001 题目描述 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9).注意1.pascal使用integer会爆掉哦!2.有负数哦!3.c/c++的main函数必须是int类型,而且最后要return 0.这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求! 好吧,同志们,我们就从这一题开始,向着大牛的路进发.“任何一个伟大的思想,都有一个微不足道的

[NOI2010] [洛谷P2046] 海拔 [50&#39;]

题目描述 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路(简称道路),每条双向 道路连接主干道上两个相邻的交叉路口.下图为一张YT市的地图(n = 2),城市被划分为2×2个区域,包括3×3个交叉路口和12条双向道路.小Z作为该市的市长,他根据统计信息得到了每天上班高峰期间YT市每条道路两个方向

洛谷 P1001 A+B Problem

题目描述 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9). 注意 1.pascal使用integer会爆掉哦! 2.有负数哦! 3.c/c++的main函数必须是int类型,而且最后要return 0.这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求! 好吧,同志们,我们就从这一题开始,向着大牛的路进发. “任何一个伟大的思想,都有一个微不足道的开始.” 输入输出格式 输入格式: 两个整数以空格分开 输出格式: 一个数 输入输出样例 输入样例#1: 20 30 输出样

城堡——搜索,稍微有点水,令人惊异的是被洛谷评为提高+

此题在Openjudge NOI 上面还有一个阉割版,也就是只求最大房间大小和房间总数量,在2.5搜索专题里面.阉割版不需要多思考就可以做出来,不过原版也只是在想一步而已,鉴于数据不是特别大.可以看到我的做法就是先BFS 算房间,把每个块所属的房间和大小记录好,然后再 按 顺 序 枚举每个块,从而得出做大合并房间和推倒位置.判断墙的存在时用了位运算,因为题目的1248明显就是暗示要这么搞最方便. 1 #include<queue> 2 #include<iostream> 3 us

洛谷冬令营随想

洛谷春令营结束不久,就我个人而言实在是收益良多. 课后与洛谷的讲师们略有交谈,并且稍微接触了别地的信竞生,顿感弱小--决定把一些了解到的信息和感想放在这里.比较杂,将就着看吧. 首先说下近年竞赛的发展吧. 近年信息学竞赛带来的升学优势增大了不少,机会增加了,这是好事.但这同样也意味着竞争将激烈许多. 举几个例子: 浙江小学便培育"种子选手",浙江初赛分数线一度达到90分. 著名的南山中学,C类买不停,此处不细说. 很大一部分选手以完全停课备战比赛. 切实参与到竞赛中,能感觉到许多学校已

洛谷 P2709 BZOJ 3781 小B的询问

题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数.小B请你帮助他回答询问. 输入输出格式 输入格式: 第一行,三个整数N.M.K. 第二行,N个整数,表示小B的序列. 接下来的M行,每行两个整数L.R. 输出格式: M行,每行一个整数,其中第i行的整数表示第i个询问的答案. 输入输出样例 输入样例#1: 6 4 3 1 3 2 1 1 3

洛谷1231 教辅的组成

洛谷1231 教辅的组成 https://www.luogu.org/problem/show?pid=1231 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书多得数不胜数,其中有书,有答案,有练习册.已知一个完整的书册均应该包含且仅包含一本书.一本练习册和一份答案,然而现在全都乱做了一团.许多书上面的字迹都已经模糊了,然而HansBug还是可