题意有 $n(n\le 2\times 10^5)$ 头奶牛,有 $m(m\le 10^5)$ 组关系 $(l,r)$ ,表示 $[l,r]$ 奶牛中有且仅有一头有斑点。问最多有多少头奶牛有斑点。题解第一反应就是差分约束,不过因为是从DP点进来的所以我去看题解确认了下,得知会T(除了玄学的限定次数)。方程式还好想,就是转移比较神奇。用 $f[i]$ 表示第 $i$ 头牛有斑点的前提下前 $i...
题意在 $n(n\le 100)\times m(m\le 2)$ 的矩阵中选出 $k(k\le 10)$ 个子矩阵,使得这些子矩阵中数字和最大。子矩阵之间不能重叠。题解如果做过 CF1199F 就很容易做出来。用 $f[l][r][x][y][k]$ 表示在左下角为 $(l,x)$ ,右上角为 $(r,y)$ 的区域中选 $k$ 个子矩阵的最大和。枚举横纵的中间点,以及两部分选取的子矩阵的...
A.Cards题意给 $n(n\le 10^5)$ 个字母,要求把它们组合成 one 或 zero 并输出为 1/0 。题解统计 n 和 z 的个数即可。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getchar(); int f=1,x=0;
while (...
小号rating比大号高惨案wzx真是太强辣,除了我还有人膜它,而且还AK了。A.Prefixes题意给出一个长度 $n(n\le 2\times 10^5)$ 的 $a/b$ 串,要求对于所有的 $k\le \dfrac{n}{2}$ ,$[1,2k]$ 中 $a$ 和 $b$ 个数相等。问至少要修改几个数。题解水题,判断下每相邻两个数是否相等即可。#include<bits/std...
A.City Day题意题解水题,模拟即可。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getchar(); int f=1,x=0;
while (ch<'0' || ch>'9') { if (ch=='-') f=-1; ch=getchar...
补的,这真是一场神仙Round。A.BowWow and the Timetable题意题解可以发现一般情况下答案只与最高位有关,但如果是刚好 $4^x$ 的话就需要看后面有没有 $1$ ,如果没有那答案要 $-1$ 。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=ge...
A.Yellow Cards题意题解最少的情况就是先给两个队的每个人 $k-1$ 张,然后还剩几张就是答案。最多的情况就是只给下场的人,同时还应该先给 $k$ 较小的队伍。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getchar(); int f=1,x=0;
...
感冒了没打,亏死了,后来补的。为了节约时间,洛谷上有较好翻译的我就直接贴链接了,懒得自己写了。A.Paint the Numbers题意题解每次找最小的数然后把后面的筛完就行了。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getchar(); int f=1,x=0;...
题意长度为 $N$ 的小写字母串,要求增加或删除字母使其变成回文串。每个字符的增加和删除有固定的花费,求花费的最小值。$N\le 2000$ 。题解区间DP,用 $[i][j]$ 表示将 $[i,j]$ 变成回文串的最小花费。如果 $S_i=S_j$ ,那么可以直接从 $f[i+1][j-1]$ 转移过来。对于上一个状态 $[i+1,j]$ ,可以删掉 $S_i$ ,也可以在右边添加一个 $...
题意有 $N$ 头奶牛,每头奶牛都有智商和情商,要从中选出一些奶牛参会,要求情商总和 和 智商总和 都不能 $< 0$ 。问情商和智商总和最大是多少。$N\le 400$ ,智商情商 $\le 1000$ 。题解可以把智商当作体积,情商当作价值来做背包,最后答案即为 $\max i+f[i]$ 。因为有负数所以要偏移一下,同时如果当前体积为负数要正序枚举。#include<bit...
双倍经验:洛谷2734 游戏 A Game (还不用滚动数组)题意有 $N$ 个数,两个人轮流取,每次可以取左右两端的数。两个人都绝顶聪明,问第一个人最多能取到多少。$N\le 5000$ 。空间限制 $64M$ 。题解用 $f[i][j]$ 表示在 $[i,j]$ 最多能取到多少,用 $sum[i][j]$ 表示 $[i,j]$ 的和。因为两个人都会取最优方案,所以方程式为:$$f[i][...
A.Important Exam题意有 $N$ 个人考 $M$ 道题 ,给出每个人每道题的答案,求如何安排每道题的正确答案,使得所有人获得的分数总和最大。$N,M\le 1000$ 。题解真理掌握在大多数人手中。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getcha...
A.Creating a Character题意有 $T$ 组测试数据,每组测试数据有 $str, int, exp$ 三个参数,可将 $str, int$ 增加, 增加的总和严格等于 $exp$ , 求有多少种方案使得增加后 $str > int$ 。$T\le 100 \ , \ str,int,exp\le 10^8$ 。题解可以算出增加后 $str$ 的最小值,然后给 $str...
题意给出一个数字串,要求用逗号将其分成若干个严格递增的数。如果有多解要求最后一个数最小,如果还有多解要求字典序最大。数字串长度 $\le 500$ 。题解先正着推出最后一个最小的数。用 $f[i]$ 代表以 $i$ 结尾的数的最近的开头,可以逆序枚举 $j$ ,如果 $[f[j-1],j-1] < [j,i]$ ,那么 $f[i]=j$ 。然后反着推一个最大的数。用 $g[i]$ 表示...
题意有形成环形的 $N$ 个机器人工厂,购买机器人的价格为 $V_i$ 。连接 $i\rightarrow i+1$ 的道路编号为 $i$ ,在时间 $j$ 的金币数为 $s[i][j]$ 。每次可以在任意工厂购买一个机器人,机器人最多可以走 $P$ 条边,并收集边上的金币。不能同时存在多个机器人。求 $M$ 的时间内最多能收集多少金币。$N,M\le 1000$ 。题解用 $f[i]$ 表...