【洛谷 P1371】NOI元丹(枚举+乱搞)
来源:互联网 发布:网站诊断与优化的作用 编辑:程序博客网 时间:2024/04/27 22:32
【题解】【乱搞】
【水题来袭!】
【先预处理出不添加元素时可以组成的"NOI"的个数。N[i]表示正序计算到第i位'N'的个数,I[i]表示倒序计算到第i位'I'的个数。然后从前往后枚举‘O’,每次将N[i]*I[i]加入答案】
【然后,从前往后枚举在每个位置放'O'所多出来的方案数,或是当当前位置是‘O’时,在它前面多加一个'N'或在它后面多加一个'I'所多出来的方案数,在这三种情况中取最优值】
#include<cstdio>#include<cstring>#include<algorithm>#define ll long longusing namespace std;char s[100010];int n,N[100010],I[100010],tot;ll ans,maxn;int main(){ int i,j; scanf("%d\n",&n); gets(s+1); for(i=1;i<=n;++i) if(s[i]=='N') N[i]=N[i-1]+1; else N[i]=N[i-1]; for(i=n;i>0;--i) if(s[i]=='I') I[i]=I[i+1]+1; else I[i]=I[i+1]; for(i=2;i<n;++i) if(s[i]=='O') ans+=(N[i]*I[i]); for(i=1;i<=n;++i) { ll s3=N[i]*I[i+1]; maxn=max(s3,maxn); } ll s1=0,s2=0; for(i=1;i<=n;++i) if(s[i]=='O') s1+=I[i]; for(i=n;i>0;--i) if(s[i]=='O') s2+=N[i]; s1=max(s1,s2); maxn=max(maxn,s1); printf("%lld\n",maxn+ans); return 0;}
0 0
- 【洛谷 P1371】NOI元丹(枚举+乱搞)
- 洛谷 P1371 NOI元丹
- 洛谷 P1371 NOI元丹
- 洛谷 P1371 NOI元丹
- 洛谷P1371 NOI元丹
- 洛谷1371 NOI元丹
- 【前缀和】 洛谷1371 NOI元丹
- NOI元丹
- NOI 2010 COGS 468 BZOJ 2006 超级钢琴 RMQ 堆 => 乱搞 (脑洞要大大的)
- CF 254D Rats(枚举+bfs+各种乱搞)
- hdu5225---Tom and permutation(规律,枚举+乱搞)
- 【UOJ 测试】C. 【#246 UER #7】套路(乱搞+枚举)
- POJ 1222 EXTENDED LIGHTS OUT (noi OpenJudge 1813)枚举
- Tyvj p1371 蛇灵迷宫 (博弈 输出路径)
- 高斯消元异或枚举变元(poj1681)
- 【Openjudge, NOI,枚举】1749数字方格
- 【Openjudge, NOI, 枚举】1812完美立方
- 【Openjudge, NOI, 枚举】1813熄灯问题
- mysql insert into 数组
- android app性能优化大汇总(内存性能优化)
- 单调队列 poj2823
- 【求两个数异或的最大值】01字典树求解
- Java连接数据库
- 【洛谷 P1371】NOI元丹(枚举+乱搞)
- jdk版本更换
- 一些收藏
- jquery操作select(取值,设置选中)
- .NET Framework 4和.NET Framework 4 Client Profile的区别与联系
- 【JZOJ4832】【NOIP2016提高A组集训第3场10.31】高维宇宙
- 编译器的选择(x86_amd64, amd64等的区别)
- 纪念我曾经的 Java 知识
- qt下odbc驱动中文乱码解决