[Atcoder Code Festival 2017 QualB/At3575] 101 to 010 有一个01序列,每次可以选出一个101,使其变成010,问最优策略下能操作几次? 考虑像 1111101 或者 1011111 这样的东西,它们最多能被操作的次数为长度-2 设\(l[i]\) 表示 \(i\) 左边第一个 \(0\) 的位置 设 \(f[i]\) 表示前缀的最大操作数 对于每个 \(a[i]=1\) 的位置,我们考虑进行转移 对于 \([i-2,i]\) 为 101 的情况…
题目链接 题意 对于一个\(01\)串,如果其中存在子串\(101\),则可以将它变成\(010\). 问最多能进行多少次这样的操作. 思路 官方题解 转化 倒过来考虑. 考虑,最终得到的串中的\('1'\)的来源 1-1 | -101--101 | --1011----1011 | | | ----10111---------- --1101----1101 | ----11101---------- 所以,最终的\('1'\)对应着最初的串中的 \(1\) \(111...11101\) \…
题目:https://atcoder.jp/contests/code-festival-2017-qualb/tasks/code_festival_2017_qualb_d 题意:给一个 01 串,每次可以把 101 换成 010,问最多能换多少次 . 题解: 令 \(dp_i\) 表示 \(1\sim i\) 最多换多少次,记录一个 \(l_i\) 表示 \(i\) 左边最接近的 \(0\),\(r_i\) 表示 \(i\) 右边最接近的 \(0\),从而: \[dp_i=\max\beg…
除非人品好,能碰巧想到思路,否则基本是做不出来dp的,除了那几个经典的dp模型.. 看了几个前几名的代码,还是t神的代码比较清晰.膜tourist 代码的思路和题解思路基本一致..... #include <bits/stdc++.h> using namespace std; const int MAXN = 1234567; char s[MAXN]; int f[MAXN]; int nxt[MAXN],prv[MAXN]; int main() { int n; scanf("…
给你一个n个点m条边的无向图,进行以下操作 如果存在两个点u和v,使得从u走三步能恰好到达v,那么在u和v之间连接一条边 重复这个操作直到不能再连接新的边,问最后有多少条边? n, m <= 100000 如果一个连通块包含奇环它一定会变成完全图 如果一个连通块没有奇环,那么它一定是二分图,二分图一定会变成"完全二分图" #include <bits/stdc++.h> using namespace std; #define int long long const…
https://www.luogu.org/problemnew/show/AT3575 题解 根本不会.. 错误记录:缺少32行的转移.显然这个转移是必要的 #include<cstdio> #include<algorithm> #include<cstring> #include<vector> using namespace std; #define fi first #define se second #define mp make_pair #d…
蒟蒻__stdcall终于更新博客辣~ 一下午+一晚上=一道计数题QAQ 为什么计数题都这么玄学啊QAQ Prelude 题目链接:这里是传送门= ̄ω ̄= 下面我将分几个步骤讲一下这个题的做法,大家不必一次看完,可以一点一点地推进思路,希望对锻炼大家的思维能力有帮助o( ̄▽ ̄)ブ. Step 1 首先要看出来这是一个计数题对吧... 计数题有很多做法,对于这个题,我们考虑合理枚举,即不重复不遗漏地枚举所有情况,然后乘上一个组合数,并通过前缀和优化来降低复杂度. Step 2 枚举什么东西呢? 我…
题目大意:共$2n$个价格$p_i$.两人轮流取.你每次取最大的,对方每次随机取.问你取的期望和是多少. 题解:从小到大排序,$\sum\limits_{i=0}^{2n-1} \frac{i*p_i}{2n-1}$ 卡点:无 C++ Code: #include<cstdio> #include<algorithm> using namespace std; long long n,s[200005]; long long ans; int main(){ scanf("…
题目链接:http://code-festival-2017-qualb.contest.atcoder.jp/tasks/code_festival_2017_qualb_c 题意:给出一个含 n 个顶点 m 条边的图,对于图中两点 u, v 之间可以添加一条边当且仅当 u, v 是通过三条边连接在一起时,求最多可以添加多少条边. 思路:猜结论,当给出的图是二分图时,sol = st1.size() * st2.size() - m,其中 st1.size(), st2.size() 二分图两…
题目链接 题意 给定一个字符串(长度\(\leq 2e5\)),将其划分成尽量少的段,使得每段内重新排列后可以成为一个回文串. 题解 分析 每段内重新排列后是一个回文串\(\rightarrow\)该段内至多只有一个字符出现过奇数次 考虑哈希到一个\(26\)位的\(01\)串,出现过奇数次的元素位置上的值为\(1\),否则为\(0\). 于是可以继续往下推:\(\rightarrow\)该段的哈希值为\(0\)或者是\(2\)的幂次. 转化 于是问题转化为:将字符串切割成尽量少的若干段,使得每…