题意:给你一个长度为\(3*n\)的字符串,要求修改最少的次数,使得字符串中\(0,1,2\)的个数相同,并且在最少次数的情况下使字典序最小. 题解:贪心,\(0\)一定放在前面,\(1\)和\(2\)放后面,首先统计\(0,1,2\)的个数,因为题目要求字典序最小,所以我们先从左边开始遍历,如果\(2\)的个数大于\(n/3\),那么再看\(0\)和\(1\)的个数情况将其替换成\(0\)或\(1\),对\(1\)也是如此,然后我们再反着遍历,首先考虑\(1\)的情况,再考虑\(0\)的情况.…
You are given a string ss consisting of exactly nn characters, and each character is either '0', '1' or '2'. Such strings are called ternary strings. Your task is to replace minimum number of characters in this string with other characters to obtain…
题目链接:Balanced Ternary String 题目大意:给一个字符串,这个字符串只由0,1,2构成,然后让替换字符,使得在替换字符次数最少的前提下,使新获得的字符串中0,1,2 这三个字符的数目相同,并且新获得的字符串的字典序要尽可能的小: 直接数组做法:暴力遍历 /* */ # include <bits/stdc++.h> using namespace std; typedef long long ll; int n; ]; string s; int main() { io…
题目链接:http://codeforces.com/contest/1102/problem/D 题目大意:给你一个字符串,这个字符串是由0,1,2构成的,然后让你替换字符,使得在替换的次数最少的前提下,使得新获得的字符串中0,1,2这三个字 符的数目相同,并且新获得的字符串字典序要尽可能的小. 具体思路: 我们先统计出每个字符的个数,想一下,除了三个都相等的情况下,这三个中的某一个肯定是大于n/3的,我们就枚举每一个字符. 如果是2多的话,我们就用1和0从前面进行替换. 如果是1多的话,我们…
题目描述 A ternary string is a sequence of digits, where each digit is either 0, 1, or 2. Chiaki has a ternary string s which can self-reproduce. Every second, a digit 0 is inserted after every 1 in the string, and then a digit 1 is inserted after every…
题目链接:https://www.nowcoder.com/acm/contest/142/A 题目描述 A ternary string is a sequence of digits, where each digit is either 0, 1, or 2. Chiaki has a ternary string s which can self-reproduce. Every second, a digit 0 is inserted after every 1 in the str…
You are given a ternary string (it is a string which consists only of characters '0', '1' and '2'). You can swap any two adjacent (consecutive) characters '0' and '1' (i.e. replace "01" with "10" or vice versa) or any two adjacent (con…
链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之后第一个数字消失.求最后为空串需要多少秒. 题解: (1)如果在消除一个 0 前经过了 n 秒,那么消掉这个 0 需要 n + 1 秒. (2)如果在消除一个 1 前经过了 n 秒,那么消掉这个 1 与其产生的所有数需要 (n + 1) * 2 秒. (3)如果在消除一个 2 前经过了 n 秒,那么…
B. Minimum Ternary String time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given a ternary string (it is a string which consists only of characters '0', '1' and '2'). You can swap an…
http://codeforces.com/problemset/problem/1009/B B. Minimum Ternary String time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given a ternary string (it is a string which consists only…
Minimum Ternary String time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given a ternary string (it is a string which consists only of characters '0', '1' and '2'). You can swap any t…
Balanced Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6311    Accepted Submission(s): 1648 Problem Description Chiaki has n strings s1,s2,…,sn consisting of '(' and ')'. A string of…
http://codeforces.com/problemset/problem/1102/D 题意: 有n个字符,只能为012,现要通过变换让012的数量相等,并且使字典序最小. 解题: 由样例可以看出不能打乱原来的位置,按001122这样输出,只能一个一个替换,贪心. 1)只有0少了:优先把多余的2换成0,再把多余的1换成0. 2)只有1少了:优先把多余的2换成1,等0够了再把多余的0换成1. 3)只有2少了:等0和1够了,优先把多余的1换成2,再把多余的0换成2. 4)0和1都少了:2优先…
B. Making a String 题目连接: http://codeforces.com/contest/624/problem/B Description You are given an alphabet consisting of n letters, your task is to make a string of the maximum possible length so that the following conditions are satisfied: the i-th…
题意:对N个由(,)组成的字符串,求拼接后得到的最大的balance序列的长度.balance序列:空串/ A+B(A,B都是b序列)/ (+A+),A为b序列.此三种情况. 分析:在读入N每个字符串时,先将单独一个字符串中的b序列长度提取出来,记录其没有被使用的左弧L和右弧R的数目.因为要使其最后拼接后得到的子序列长度尽可能地大,那么按照贪心的思想,肯定希望左弧多的字符串在前,右弧多的字符串在后,所以要对其排序.但是排序时关键字的比较并不只是简单地比较二者的L与R,而且要先比较自身L与R的大小…
Rikka with string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 581    Accepted Submission(s): 227 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation,…
题意:题意一开始不是很明白...就是他给你n个串,让你重新排列组合这n个串(每个串内部顺序不变),使得匹配的括号长度最大.注意,题目要求not necessary continuous,括号匹配不需要连续. 思路:我们先把每个串里面能组合的全部抵消,比如)((()抵消完为)((.我们能知道,这样操作完只会有4种情况留下:))))),((((((((,)((((((,))))))))(.然后排序,排序的时候为了后面匹配能最大化利用所有括号,我们需要把左括号尽可能多的放在左边,右括号尽可能多的放在右…
题意 给你一个只含有0,1,2的字符串,你可以将"01"变为"10","10"变为"01","12"变为"21","21"变为"12",问通过变换可以得到的字典序最小的串是什么? 题解 一开始天真的以为,我把所有的"10"变为"01",和所有的"21"变为"12"即可.…
题意: t组测试数据,每组数据有 n 个只由 '(' 和 ')' 构成的括号串. 要求把这 n 个串排序然后组成一个大的括号串,使得能够匹配的括号数最多. 如()()答案能够匹配的括号数是 4,(()) 也是 4. 例如: n = 2 ) )(( 你可以将其排序为))((,数目为0,也可以将其排序为)((),数目为1. 解法: 贪心. 把所有字符串中本身能够匹配的括号全部去掉,然后剩下的字符串只有三种: 1.全是 '(' 2.全是 ')' 3.一串 ')' 加一串 '(' 对于每一种字符串,如果…
题意:给定n个只有左右括号的序列,要求将它们重新排序使得匹配的括号对数最大. n<=1e5 s[i]<=1e5 sum s[i]<=5e6 思路: 先把每个串内部的匹配数量减去,剩下的就是不匹配的左右括号数量 对于左括号数量大于右括号的串,按右括号数量从小到大排序 对于右括号数量大于左括号的串,按左括号数量从大到小排序 #include<cstdio> #include<cstring> #include<string> #include<cma…
题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个. 思路:贪心,先构造一个序列自动机,序列自动机指向在它后面离它最近的某个字符的位置.对于当前位置,从a开始枚举字符,如果答案串的下个位置填这个字符可以,就立马填上这个字符,最后看一下贪心构造的字符串长度是不是m就可以了. 代码: #include <bits/stdc++.h> using namespace std; const int max…
题目:戳这里 学习博客:戳这里 欧拉函数的性质: ① N是不为0的整数.φ(1)=1(唯一和1互质的数就是1本身) ② 除了N=2,φ(N)都是偶数. ③ 小于N且与N互质的所有数的和是φ(n)*n/2. ④ 欧拉函数是积性函数--若m,n互质,φ(m*n)=φ(m)*φ(n). ⑤ 当N为奇数时,φ(2*N)=φ(N) ⑥ 若N是质数p的k次幂,φ(N)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟N互质. ⑦ 当N是质数时,φ(N) = N-1 广义欧拉定…
Minimal string CodeForces - 797C Petya 收到一个长度不超过 105 的字符串 s.他拿了两个额外的空字符串 t 和 u 并决定玩一个游戏.这个游戏有两种合法操作: 将 s 串的第一个字符移动到字符串 t 的末尾. 将 t 串的最后一个字符移动到字符串 u 的末尾. Petya 希望将 s 和 t 都变为空串并且使得串 u 字典序最小. 你需要写一个代码求出最小的字典序. Input 第一行包含一个非空串 s (1 ≤ |s| ≤ 105),只包含小写字母.…
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-A.html 题目传送门 - https://www.nowcoder.com/acm/contest/142/A 题意 给定一个长度为 $n$ ,只包含 $0,1,2$ 的数列. 每一秒会依次进行如下操作: 1. 所有的 $1$ 后面生出一个 $0$ 2. 所有的 $2$ 后面生出一个 $1$ 3. 第一个数字消失了 问经过多少时间之后,数列全部消失.…
题意:你有一个长度为\(n\),且仅由012构成的字符串.每经过一秒,这个字符串所有1后面会插入一个0,所有2后面会插入一个1,然后会删除第一个元素.求这个字符串需要多少秒变为空串,对\(10^9+7\)取模. \(n \leq 10^5\) 显然这个答案是可以从左往右维护当前已经经过的时间,一位位算过来的. 设当前已经经过了\(n\)秒,那么,容易得到再删除下一个0需要1秒,再删除下一个1需要\(n+2\)秒.然而若下一个元素为2,似乎并不好处理.但至少我们能得到一个\(O(n)\)的算法:…
题目链接:http://codeforces.com/contest/1009/problem/B 解题心得: 题意就是给你一个只包含012三个字符的字符串,位置并且逻辑相邻的字符可以相互交换位置,就是相邻的01交换,12交换,不可以02交换.最后需要输出字典序最小的字符串. 其实想想就很容易明白在字符串中1是可以随便移动的,所以可以把字符串中的1全删除,就只剩下02两种字符,这两种字符的相对位置不可以改变.然后把所有的1插在第一个02之间. #include <bits/stdc++.h>…
不知道错在哪里. 是要把atop改成stop!两个弄混了.感谢自造样例. #include<bits/stdc++.h> using namespace std; typedef long long ll; int n, k; char s[100005]; int cnt[100005][26]; deque<int> pos[26]; int l[26]; int r[26]; int used[26]; char ans[100005], atop; bool check1(…
题意 给出一个字符串,只包含 \({1,2}\) 或 \({3}\) .从中找出一个长度最短的子串,要求至少包含 \({1,2,3}\) 各一次,并输出其长度. 输入格式 本题有多组测试数据 第一行一个整数 \(t\) ,表示数据组数 接下来 \({t}\) 行,每行一个字符串 \(s\) ,它的每个字符只可能是 \(1,2\) 或 \(3\) .\({s}\) 的长度不超过\(200000\). 输出格式 对于每组数据,输出一行一个整数,表示最短的符合要求的子串的长度.如果不存在,输出 \(0…
令$f_{i,j,k}$表示前$i$个位置,三种字符最后一次出现的位置为$i,j$和$k$(保证$k<j<i$)的方案数 考虑转移(递推),即分为两步-- 1.填写第$i$个字符,即从$f_{i-1,j,k}$转移到$f_{i,j,k},f_{i,i-1,j}$或$f_{i,i-1,k}$ 2.考虑以$i$为右端点的区间,即仅保留$j\in [L_{j}(i),R_{j}(i)]$且$k\in [L_{k}(i),R_{k}(i)]$的位置(其余位置清0) (关于$L/R_{j/k}(i)$显…
Codeforces Round #531 (Div. 3) 题目总链接:https://codeforces.com/contest/1102 A. Integer Sequence Dividing 题意: 给一个数n,然后要求你把1,2.....n分为两个集合,使得两个集合里面元素的和的差的绝对值最小. 题解: 分析可以发现,当n%4==0 或者 n%3==0,答案为0:其余答案为1.之后输出一下就好了. 代码如下: #include <bits/stdc++.h> using name…