[cf1458D]Flip and Reverse
将$s$中的01分别变为$1,-1$,即得到一个序列$a_{i}$(设其长度为$n$,下标范围为$[1,n]$)
对$a_{i}$建立一张有向图,其点集合为$Z$,并对$\forall 0\le k<n$从$\sum_{i=1}^{k}a_{i}$向$\sum_{i=1}^{k+1}a_{i}$连边(允许重边),那么$a_{i}$即对应于其中一条以0为起点的欧拉路
若对区间$[l,r]$操作,记操作后的序列为$a'_{i}$,则有$\sum_{i=l}^{r}a_{i}=0(=\sum_{i=l}^{r}a'_{i})$且$\forall l\le i\le r,a'_{i}=-a_{r-(i-l)}$
根据此性质,简单来分析前缀和的变化:
1.对于$k\not\in [l,r),\sum_{i=1}^{k}a'_{i}=\sum_{i=1}^{k}a_{i}$
2.对于$k\in [l,r),\sum_{i=1}^{k}a'_{i}=\sum_{i=1}^{l-1}a_{i}-\sum_{i=l}^{k}a_{r-(i-l)}=\sum_{i=1}^{r-(k-l)-1}a_{i}$
进一步的,再来分析这条欧拉路的变化,结合前缀和的变化即是将原本从$\sum_{i=1}^{l-1}a_{i}$到$\sum_{i=1}^{r}a_{i}$这一个环(注意两值相同)反转(将所有边变为反向边)并倒序经过
另一方面,显然每一个环(包括非简单环)都可以以此法操作(注意这里的操作是对欧拉路)
换言之,问题即通过这样的操作最小化这条欧拉路的字典序
实际上,问题也可以看作:将图中的边看作无向边后,最小化以0为起点的欧拉路字典序
注意到操作只是反转边的方向,那么得到的欧拉路一定是新问题中的欧拉路
另一方面,即要通过这条欧拉路(通过操作)构造出所有新问题中的欧拉路
对其归纳,若其第一步与这条欧拉路方向不同,分类讨论:
1.若该边仅存在一条(指无向边),那么起点的另一个方向即必然不存在边(否则这不是欧拉路),进而显然方向不会不同
2.若该边存在多条,之后总有一次从该边返回起点,从最初到该位置全部反转后方向即相同
进一步的,将两者第一步均删除后即变为归纳的问题(边数减少),也即得证
而对于这个新问题,可以利用图的特殊性直接贪心:初始$x=0$,每一次优先向$x-1$移动(除非该边仅存在一条且$x$到$x+1$仍有边,此时向$x+1$移动),最终显然字典序最小
时间复杂度为$o(n)$,可以通过

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 500005
4 int t,n,x,sum,cnt[N<<1];
5 char s[N];
6 int main(){
7 scanf("%d",&t);
8 while (t--){
9 scanf("%s",s+1);
10 n=strlen(s+1),x=sum=n;
11 for(int i=0;i<=(n<<1);i++)cnt[i]=0;
12 for(int i=1;i<=n;i++){
13 if (s[i]=='0')cnt[--sum]++;
14 else cnt[sum++]++;
15 }
16 for(int i=1;i<=n;i++){
17 if ((cnt[x-1]>1)||(!cnt[x])){
18 putchar('0');
19 cnt[--x]--;
20 }
21 else{
22 putchar('1');
23 cnt[x++]--;
24 }
25 }
26 putchar('\n');
27 }
28 return 0;
29 }
[cf1458D]Flip and Reverse的更多相关文章
- CF1458D Flip and Reverse[题解]
Flip and Reverse 题目大意 给定一个 \(01\) 字符串,有机会进行若干次操作,对于每一次操作: 选择该字符串的子串,要求是该子串内包含数量相同的 \(0\) , \(1\) 字符. ...
- 多校联训 DS 专题
CF1039D You Are Given a Tree 容易发现,当 \(k\) 不断增大时,答案不断减小,且 \(k\) 的答案不超过 \(\lfloor\frac {n}{k}\rfloor\) ...
- 小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载四(场景切换)
作为一款真正有使用价值的应用,首先应该至少有两个页面,通过页面的切换来实现更多的交互.比如手机人人网,打开以后先是进入登录页面,登录后会有新鲜事,然后拉开左边的面板,能看到相册.悄悄话.应用之类的其他 ...
- bzoj 2631: tree 动态树+常数优化
2631: tree Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 1716 Solved: 576[Submit][Status] Descrip ...
- 白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》串行4(场景变化)
作为一个真正的利用价格值应用,首先,你应该至少有两页,通过切换页面来实现很多其他互动.比如手机人人网,首先,打开后进入登录页面,将有登录后,新的东西.然后拉左侧面板.你可以看到相册.私人信息.像其他应 ...
- css3 翻牌动画
最近做了一个特效,css是从网上找的,地址是这个: CSS3 animate flip下的纸牌翻转效果实例页面 把其中核心的css代码扒出来如下: /* The properties in this ...
- MOG插件(葡萄牙语,略作翻译)
这次记录下MOG大神的插件,自从我发现了这个插件,似乎开启了一个新世界诶~~~ 网址 https://atelierrgss.wordpress.com 1. MOG_YuruYuri.js CARA ...
- WebApp之H5登录注册
代码indexhtml <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...
- 平衡树 & LCT
1. 非旋 Treap(FHQ Treap) 1.1. 算法简介 FHQ Treap 的功能非常强大.它涵盖了 Treap 几乎所有的功能 所以我非常后悔学了 Treap,浪费时间. FHQ 的核心思 ...
随机推荐
- C++中string和char字符串的异同与使用方法
C++中string和char声明字符串的异同和使用 string类 必须在头文件中包含<string> 隐藏了字符串的数组性质,可以像处理普通变量那样处理字符串 string类位于名称空 ...
- 使用python -m pip install 和 pip install 安装包有什么区别?
如果去看源码的话,你会发现 pip 作为执行文件的入口点是 pip._internal.main. 另一方面,pip 作为模块运行时入口是 _main.py,而该模块也只是调用 pip.interna ...
- Dapr + .NET Core实战(十二)服务调用之GRPC
什么是GRPC gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的 ...
- 一文读懂 Serverless,将配置化思想复用到平台系统中
作者 | 春哥大魔王 来源 | Serverless 公众号 写在前面 在 SaaS 领域 Salesforce 是佼佼者,其 CRM 的概念已经扩展到了 Marketing.Sales.Servic ...
- FastAPI 学习之路(十)请求体的字段
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- 如何在印刷品中使用遵循SIL Open Font License协议的字体
如何在印刷品中使用遵循SIL Open Font License协议的字体 昨天在知乎看到了一个问题,( 如何在设计中声明字体开源许可证? - 知乎 (zhihu.com),恰好最近在研究一些开源协议 ...
- Using C++ in VS Code
Using C++ in VS Code Get Started with C++ and Windows Subsystem for Linux in Visual Studio Code ...
- 精准测试系列分享之一:JaCoCo 企业级应用的优缺点分析
一.JaCoCo简介 JaCoCo是Eclipse平台下的开源产品,以小型,轻量化著称,常见集成在Eclipse Workbench中,除此之外的启动方式包括对接Ant和Maven,或是命令行的方式进 ...
- systemverilog 字符串类型
转载:https://blog.csdn.net/Holden_Liu/article/details/100727957 传统的Veriog仅仅支持文字表述上的字符串, 而SystemVerilog ...
- [转]DDR3基本概念5 - DDR仿真中出现的Memory overflow错误的处理
ERROR: Memory overflow. Write to Address 7000fe with data xxxxxxxxxxxxxxxx4634899aabe03499 will be l ...