CF1526D Kill Anton(暴力)

前言

我的证明:这似乎非常对啊。
。。。

解析

直观感受:字母交错出现非常愚蠢。
然后就猜对了

为什么?
考虑两个相同但不相邻的字符 Ti,TjT_i,T_jTi,Tj,对应位置为 pi,pjp_i,p_jpi,pj
夹在中间的字符 kkk 无非三种可能。

  1. pi<pk<pjp_i<p_k<p_jpi<pk<pj,此时无论是把i移到后面还是把j移到前面都会增加一个逆序对。
  2. pk<pi<pjp_k<p_i<p_jpk<pi<pj,此时把j移到前面会增加一个逆序对,把i移到后面会减少一个逆序对。
  3. pi<pj<pkp_i<p_j<p_kpi<pj<pk,此时把i移到后面会增加一个逆序对,把j移到前面会减少一个逆序对。

那么我们只需要讨论一下2、3两种情况那种更多,按照对应策略操作,就可以把 Ti,TjT_i,T_jTi,Tj 挪到一起,且逆序对不减少。
证毕。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned ll
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("ok\n")const int N=1e5+100;
const bool Flag=1;inline ll read() {ll x(0),f(1);char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
bool mem1;int n;
char s[N],ch[5],ans[N],tmp[N];
int cnt[5],sum[N][5];
int q[5],vis[5];
ll mx;
map<char,int>mp;
queue<int>qq[5];
int f[N];
inline void add(int p,int w){for(;p<=n;p+=p&-p) f[p]+=w;return;
}
inline int ask(int p){int res(0);for(;p;p-=p&-p) res+=f[p];return res;
}
ll calc(){ll res(0);for(int i=1;i<=n;i++){qq[mp[tmp[i]]].push(i);f[i]=i&-i;}for(int i=1;i<=n;i++){int p=qq[mp[s[i]]].front();qq[mp[s[i]]].pop();int pos=i-1+ask(p);add(p,-1);res+=pos-i;}return res;
}
void dfs(int k){if(k>4){int num(0);for(int i=1;i<=4;i++){for(int j=1;j<=cnt[q[i]];j++) tmp[++num]=ch[q[i]];}//printf("%s\n",tmp+1);ll o=calc();if(o>mx){mx=o;memcpy(ans,tmp,sizeof(char)*(n+1));}return;}for(int i=1;i<=4;i++){if(vis[i]) continue;vis[i]=1;q[k]=i;dfs(k+1);vis[i]=0;}return;
}void work(){scanf(" %s",s+1);n=strlen(s+1);mx=-1;memset(cnt,0,sizeof(cnt));for(int i=1;i<=n;i++){cnt[mp[s[i]]]++;for(int j=1;j<=4;j++) sum[i][j]=sum[i-1][j];sum[i][mp[s[i]]]++;}//scanf(" %s",tmp+1);//printf("tmp=%lld\n",calc());dfs(1);for(int i=1;i<=n;i++) putchar(ans[i]);puts("");	//printf("mx=%lld\n",mx);
}bool mem2;
signed main() {#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);#endifch[1]='A';ch[2]='N';ch[3]='O';ch[4]='T';mp['A']=1;mp['N']=2;mp['O']=3;mp['T']=4;int T=read();while(T--) work();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Minimum spanning tree HDU - 6954

Minimum spanning tree HDU - 6954 题意&#xff1a; 给定n-1个点&#xff0c;编号从2到n&#xff0c;两点a和b之间的边权重为lcm&#xff08;a&#xff0c;b&#xff09;。请找出它们形成的最小生成树。 2<n<10000000 题解&#xff1a; 这题一看就眼熟。。。这不是去…

[小技巧]ASP.NET Core中如何预压缩静态文件

原文地址&#xff1a;Pre-compressed static files with ASP.NET Core作者&#xff1a;Gunnar Peipman译者&#xff1a;Lamond Lu译文&#xff1a;https://www.cnblogs.com/lwqlun/p/10552131.html示例代码&#xff1a;https://github.com/lamondlu/CompressedStaticFileSample…

CF1494F Delete The Edges(欧拉回路)

前言 走远了走远了… 一直在想翻转一条链的奇偶性怎么做&#xff0c;但没有意识到最后一定是个菊花。 解析 一状态就是走一个欧拉回路&#xff0c;合法性更容易刻画&#xff0c;所以考虑反过来想&#xff0c;如何用状态二的走法删去一些边&#xff0c;使得剩下的图存在欧拉路…

【学习笔记】简单的连通性状压DP——插头DP(不学以为是天书)

文章目录哈希链表插头DP概念括号表示法 / 最小表示法例题洛谷插头dp板题CITYParkIITonys TourEfficient Tree[CQOI2015]标识设计哈希链表 众所周知&#xff0c;哈希是有冲突的可能性的&#xff0c;而且在状态数越多&#xff0c;冲突的概率就越高。目前掌握的处理方案有多哈希&…

H - Maximal submatrix HDU - 6957

H - Maximal submatrix HDU - 6957 题意&#xff1a; 给定一个n行m列的矩阵&#xff0c;求每列上面积不减的最大子矩阵 对于每个测试用例&#xff0c;打印一个表示最大子矩阵的整数 题解&#xff1a; 要求求一个最大面积的满足每列非递减的矩阵&#xff0c;这怎么想&#…

[NewLife.XCode]实体类详解

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中。开源地址&#xff1a;https://github.com/…

CF662C Binary Table(FWT_XOR卷积)

problem 洛谷链接 solution 第二次做的时候发现自己还是不会。发现自己没有写过题解&#xff0c;看来当时是没有完全搞懂的。 nnn 与 mmm 的量级相差很大&#xff0c;nnn 的范围是完全可以状压的。 不妨考虑枚举最后翻转了哪些行&#xff0c;将操作状压为一个数 XXX。 显然…

AT5662 [AGC040D] Balance Beam(二分)

前言 人类智慧&#xff0c;不可思议。 解析 考虑画出两个人的 S−TS-TS−T 折线图&#xff0c;那么答案如何表示&#xff1f; 可以理解成把 BBB 的图像不断下移&#xff0c;直到与 AAA 的图像只剩一个交点&#xff0c;此时在 xxx 轴的截矩就是答案。 设平移后 BBB 图像与 x…

Counting Triangles

Counting Triangles 题意&#xff1a; 给你一个完全图&#xff0c;每个边被赋值为0或1&#xff0c;问这个完全图中有多少个完美三角形&#xff1f; 完美三角形定义&#xff1a;三角形的三边都为0或1 题解&#xff1a; 正着求不好求&#xff0c;我们可以倒着想 不考虑完美&a…

程序员过关斩将--论商品促销代码的优雅性

点击上方蓝色字体&#xff0c;关注我们菜菜哥&#xff0c;YY说你帮她解决了几个问题&#xff0c;也帮我解决一个呗原来是D妹子&#xff0c;来坐我身边&#xff0c;说下情况我的项目是个电商项目&#xff0c;现在产品狗要给商品做活动正常呀我一个新手初来咋到顶不住压力了&…

[WC2018]州区划分(FWT_OR卷积)

problem 洛谷链接 solution 显然题目指向&#xff1a;存在欧拉回路的州划分是不合法的。 当且仅当这个州是 联通 的且 内部没有奇数度数的点 时&#xff0c;这个州不合法。 因为 nnn 非常小&#xff0c;我们可以枚举每一种州划分方案&#xff0c;判断是否合法&#xff0c;…

P5469 [NOI2019] 机器人(拉格朗日插值、区间dp)

解析 打表可得&#xff0c;有效状态大概只有 O(m)O(nlog⁡n)O(m)O(n\log n)O(m)O(nlogn) 种。 枚举最靠右的最大值位置&#xff0c;不难得到 O(mV)O(mV)O(mV) 的做法。 期望得分 505050 分。 考虑如何做 l0,r109l0,r10^9l0,r109。&#xff0c;发现前缀和后所有的 dpi,i,xxdp_…

Math(牛客多校第三场)

Math 题意&#xff1a; 问你有多少对(x,y),1<x<y<n,满足(x2 y2)%(xy1) 0 题解&#xff1a; 这种题。。。直接打表芜湖~ 通过打表发现&#xff1a;满足情况的为(i,i * i * i),但是也有不和谐的声音出现&#xff1a;当x8时&#xff0c;会出现两个&#xff0c;一个…

[NewLife.XCode]增删改查入门

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中。开源地址&#xff1a;https://github.com/…

P5472 [NOI2019] 斗主地(期望、数学)

前言 我咋连表都没打啊。 too vegetable。 解析 题目给出的洗牌形式看着并不好看&#xff0c;合理猜测可以发现&#xff0c;这其实就等价于所有可能情况等概率出现。 然后就不会了 打表可以发现&#xff1a;当 tp1 时&#xff0c;dp 数组是一个等差数列。当 tp2 时&#xff…

[HNOI2012]集合选数(思维构造 + 状压dp)

problem 题目链接 solution 从最小一个数 xxx 开始&#xff0c;将其 2x,3x2x,3x2x,3x 放入&#xff0c;再将 2(2x),3(2x),2(3x),3(3x)2(2x),3(2x),2(3x),3(3x)2(2x),3(2x),2(3x),3(3x) 放入&#xff0c;以此类推 …\dots… 将其合并为一个集合。重复又找一个最小未进入集合的…

在实际项目中使用LiteDB NoSQL数据库

LiteDB 是一个 NoSQL 数据库&#xff0c;特点是 MongoDB like 和 0 配置。100% 原汁原味的 C# 开发, Release 只有一个 DLL&#xff0c;官方有一下适用场景&#xff1a;移动App&#xff0c;桌面小应用程序&#xff0c;特有的文件格式&#xff0c;小型的 Web 应用&#xff0c;需…

2021牛客暑期多校训练营3

2021牛客暑期多校训练营3 题号题目知识点AGuess and liesBBlack and whiteCMinimum grid二分图匹配DCountEMath数论打表找规律F24dian模拟GYu Ling(Ling YueZheng) and Colorful TreeHLing Qiu, Luna and Triple BackpackIKuriyama Mirai and Exclusive OrJCounting Triangles…

P4769 [NOI2018] 冒泡排序(组合数学)

前言 这里是线性做法。 在题解里几句话说清楚的性质愣是推了一上午。 too vegetable 解析 考虑怎样的排列是不合法的。 一个排列如果不合法&#xff0c;也就是在某次交换时其中一个元素距离目标的距离没有减少反而增大了&#xff0c;那么以后这个数一定会再换回来&#xff0…

[骗分技巧——随机化Ⅰ]CodeChef-Milestones,CF364D-Ghd

文章目录CodeChef-MilestonesproblemsolutioncodeCF364D-Ghdproblemsolutioncode设随机化一次的正确率为 ppp&#xff0c;一次的复杂度为 O(f(n))O(f(n))O(f(n))。则随机的期望次数 kkk&#xff1a;k∑i1∞p(1−p)i−1i(1)(1−p)k∑i1∞p(1−p)ii∑i2∞p(1−p)i−1(i−1)(2)(1)…