cf
文章平均质量分 67
Σ_aphasia
不要温和的走进那个良夜
展开
-
CF704D Captain America(有源汇上下界最大流)
黑题+cf3100原创 2022-10-16 14:25:23 · 706 阅读 · 3 评论 -
cf-1725 M. Moving Both Hands(反图+dij)
cf-1725 M. Moving Both Hands(反图+dij)原创 2022-09-07 14:46:33 · 460 阅读 · 0 评论 -
cf1725 H. Hot Black Hot White(魔幻数论+构造)
cf1725 H-Hot Black Hot White原创 2022-09-07 13:06:34 · 300 阅读 · 0 评论 -
codeforces 1239D-Catowice City(tarjan缩点)
difficult:2400原创 2022-08-13 16:07:07 · 174 阅读 · 0 评论 -
codeforces 27D-Ring Road 2(远古二分图染色)
difficult:2200洛谷:紫原创 2022-08-13 15:31:18 · 104 阅读 · 0 评论 -
codeforces 1635E-Cars (二分图染色+拓扑排序)
difficult:2200二分图染色+拓扑排序原创 2022-08-12 20:36:55 · 316 阅读 · 0 评论 -
codeforces 1572B. Xor of 3 (div1)
diffcult:2500原创 2022-07-30 00:30:56 · 165 阅读 · 0 评论 -
cf1702G. Passable Paths(欧拉序+LCA+ST表)
传送门题意询问给出的点是否在树的一条路径上。选取两点 pos1pos1pos1 、 pos2pos2pos2 假设存在该路径,之后遍历所有点判断是否都存在于该路径上,这样的路径共有两种情况:1.该路径是一条链2.该路径挂在了某一结点上其中 pos1pos1pos1 为当前询问中深度最深的点,若所有点与 pos1pos1pos1 的 LCALCALCA 为该点本身,为情况 111,此时 pos2pos2pos2 为根节点;否则 pos2pos2pos2 为不在该链上且深度最深的点。通过计算所有点与 pos1p原创 2022-07-13 20:15:20 · 358 阅读 · 0 评论 -
cf1699D. Almost Triple Deletions(dp)
difficult:2300原创 2022-07-08 15:05:06 · 251 阅读 · 0 评论 -
cf1699C. The Third Problem(思维)
cf1699C. The Third Problem(思维)原创 2022-07-08 10:20:25 · 262 阅读 · 0 评论 -
cf1688C. Manipulating History/D. The Enchanted Forest
codeforces1688 C+D原创 2022-07-08 04:03:09 · 195 阅读 · 0 评论 -
cf1608C. Game Master(搜索+神仙思维)
codeforces1608C. Game Master又名:如何通过神仙思维将 tarjan直接转成简单搜索原创 2022-07-07 14:35:59 · 312 阅读 · 0 评论 -
cf1693C. Keshi in Search of AmShZ(div1)【最短路,反向建图】
传送门题意在一个有向图上需要从点 111 到点 nnn,每次可以选择以下一种操作:1、删除一条边2、随机移动到当前点能够通向的另一点求所需操作次数到达终点的最大值的最小值看到求最大值的最小值,第一想法:二分!于是卒但借助该特性,可以将操作 222 中的随机理解成:一定选择最到终点的最长路径,而如果希望不走最长路径,则需要删去该路上的边。由于正向建图处理环问题更麻烦,因此采用反向建图跑最短路,而从这个点到达终点所需要删除的较长路径上的边即为额外代价。在反向图中,该额外代价的表现为该点的入度(在原图中表现为,原创 2022-06-30 09:23:48 · 390 阅读 · 1 评论 -
cf1693B. Fake Plastic Trees(div1)【树形dp】
传送门题意一棵树上每个结点的初始值均为 000 ,需要进过若干次操作后使每个结点都落在规定的范围内。每次操作可以选择一个结点及一个非下降正整数序列,并让根节点 111 到该结点之间的 所有结点 依次加上对应的数字。问需要的最少操作次数。正向思维可以考虑对于任一结点,其最小值是否超过了所有儿子的最大值,否则就可以选择一子结点延续操作。鉴于正向建树和遍历实在是太麻烦了, 还可以由反向将所有结点的最大值向父亲推,若父亲得到的值仍然小于父亲结点要求的最小值,则说明还需要在父亲及之前增加操作次数。由于本题建树数据的特原创 2022-06-27 21:07:28 · 415 阅读 · 2 评论 -
cf1695D1. Tree Queries (Easy Version)(div2)【树上问题】
传送门题意给定一棵树,并在树上任选一个节点 xxx (未知),每次都可以询问树上另一指定结点 vvv 到 xxx 的最短路径,问最少需要几次询问,使得不论 xxx 是哪一个结点,都可以在询问次数及之内确认该点。脑模可以发现,如果树的形状是一条链,可以仅通过询问一次叶子结点确认。不属于该结构的第一个例子是拥有 444 个结点的菊花图,假设以结点 222 为菊花中心,则确认其他三个结点中的任意一个都需要经历:1.1.1.确定该点不是菊花中心 2.2.2.确定该点 两次询问。此时若以 222 为根,则结点 1,3原创 2022-06-27 15:41:46 · 380 阅读 · 2 评论 -
cf1695C. Zero Path(div2)【贪心,伪dp】
传送门题意在 nnn * mmm 的网格中,每个格子上的数字仅为 111 或 −1-1−1,每次只能向下或向右走,问从左上到右下是否存在一条路径使得路径上所有数字之和正好等于 000 ?第一反应是和 2021ICPC江西省赛A 一样的做法,三维滚动数组记录当前在第 iii 行第 jjj 列且拥有 kkk 个 111 的状态是否存在,最后判断处于右下角时 kkk 是否等于 (n+m−1)/2(n+m-1)/2(n+m−1)/2 。容易看出当 n+mn+mn+m 为偶数时可以特判无解。然而本题的侧重点是最后和为原创 2022-06-26 23:49:28 · 201 阅读 · 0 评论 -
cf1700D. River Locks(div2)【思维,贪心】
传送门题意给定 nnn 个水槽的容量,每个水槽装满水后,多余的水将向下一个水槽转移(转移不耗费时间),每个水槽仅对接一个注水管,开启后每秒可以注入 111 单位的水。问是否能在 ttt 秒内将所有水槽都装满,以及能够装满的情况下需要打开注水管的最少数目。容易想到在确定能够装满的情况下,最少数目即 水槽总容量时间\frac{水槽总容量}{时间}时间水槽总容量 上取整。由于水的转移具有前效性,考虑用前缀和的思想预处理前 iii 个水槽被装满所需要的时间,由于每个水槽仅对接一个注水管,维护 maxx=max(m原创 2022-06-26 18:37:42 · 129 阅读 · 0 评论 -
cf1700C. Helping the Nature(div2)【差分,贪心】
传送门题意对一个数组每次可以进行以下三种操作之一:1.选择区间 [1,i][1,i][1,i] 之间的所有数 −1-1−12.选择区间 [i,n][i,n][i,n] 之间的所有数 −1-1−13.对整个数组中的所有数 +1+1+1求使整个数组变为 000 的最少操作次数经典差分操作:连续区间加减同样的数,因此直接构造差分数组...原创 2022-06-24 17:43:09 · 142 阅读 · 0 评论 -
cf1690F. Shifting String(div3)
传送门题意给定一个长度为 n 的字符串和数组 p,字符串的每次变换都将以数组 p 中的数字作为基准,问在经过最少几次(不可以为 000 )变换后,该字符串能够变换为与初始字符串相同。对样例 3 手模后,可以得到如上表格(眼瞎了,可能有错,凑合看看规律 ),发现其中是以若干个环进行滚动的,如下标(1,8,3),(2,6),(4,7,9,10),(5)(1,8,3),(2,6),(4,7,9,10),(5)(1,8,3),(2,6),(4,7,9,10),(5) ,在最坏情况下求出每个环的长度的最小公倍数即为操原创 2022-06-12 21:46:15 · 337 阅读 · 0 评论 -
cf1607G. Banquet Preparations 1(贪心逼近答案)
传送门题意给定 nnn 道菜,第 iii 道菜中含有 aia_iai 份 aaa 型原材料和 bib_ibi 份 bbb 型原材料。现在需要从每道菜中必须吃掉 mmm 份原材料,求最终 aaa 型原材料总份数与 bbb 型原材料总份数绝对值之差的最小值,以及达成该最小值的过程中,每道菜的吃法。考虑开始时直接优先吃 aaa 型原材料,若在该情况下,最终 suma≥sumbsuma ≥ sumbsuma≥sumb,则一定不可能更优,suma−sumbsuma-sumbsuma−sumb 即为答案。而当 su原创 2022-06-02 22:43:36 · 111 阅读 · 1 评论 -
cf387 D. George and Interesting Graph(思维+二分图)
传送门题意给定一个有向图,每次操作可以随意添加或删除任一条边。求让该无向图满足:1.1.1. 存在一个中心点 vvv(自由指定),从该点到其他任一一点 uuu 都存在边 (v,u) (u,v)(v,u)\ (u,v)(v,u) (u,v),并且该点存在自环。2.2.2. 除中心点外的所有点,出度和入度均为 222。所需要的最少操作次数。在确定了中心点之后,去掉该中心点及所有与该点有关的边,剩下的所有点的出度和入度均为 1,则此时剩下的图是由若干个环组成。鉴于此时所有点入边原创 2022-05-30 19:41:31 · 127 阅读 · 0 评论 -
cf1685 B. Linguistics(div1)字符串+规律
传送门题意给定一个仅包含 AAA 或 BBB 的字符串 sss ,并给出 444 个数字分别代表字符串 AAA 、BBB 、ABABAB、BABABA 的个数,现需要用这四种字符串正好拼成字符串 sss ,问是否可行。由于取单独的 AAA、BBB 能够组合成 ABABAB 或 BABABA,因此考虑先使用 ABABAB 和 BABABA,最后再使用单独的 AAA、BBB 进行插空。个人思路:当某一段子序列的两端与相邻字符相同(或为边界)时,将该子序列划分出来,并判断该子序列的长度。若长度 nnn原创 2022-05-27 19:39:31 · 298 阅读 · 0 评论 -
B2. Tokitsukaze and Good 01-String (hard version)
传送门题面描述输入样例51011100110008110011112002116100110输出样例3 20 30 10 13 1题意给定一个长度为偶数且仅包含 000 和 111 的字符串,每次操作可以任选一个字符并翻转,要求最后该字符串能够划分为若干段,每一段内都是偶数个相同字符,问符合题意的最小操作次数,以及在该操作次数下划分得到的最少段的数量。结论妙妙题(即使标的知识点是 dpdpdp)由于最终需要形成每一段内为偶数个相同字符,因此可以考虑遍历所原创 2022-05-24 17:10:47 · 288 阅读 · 0 评论 -
cf 1220E.Tourism(Tarjan缩点+树形dp)
传送门题意在一个无向图上有 nnn 个城市,每个城市都有一个价值 wiw_iwi,现从起点 sss 出发,过程中不能连续两次经过同一条边,问能够得到的最大价值。由于不能连续两次经过同一条边,因此一定会贪心的选择所有带有环的路,最后再选择一条贡献最大但没有环的路走到底。采用 TarjanTarjanTarjan 缩点转化为有向无环图之后,与起点 sss 在同一连通块的可以看作是以 sss 为根的有向树(返祖边可以在 dfsdfsdfs 中特判掉)。在 TarjanTarjanTarjan 中处理每个原创 2022-05-16 22:17:20 · 186 阅读 · 1 评论 -
cf 999-E. Reachability from the Capital(Tarjan缩点)
传送门什么 2000 分裸题啊题意给定一个有向图和点 sss,问让该点 s 能够到达其余所有点最少需要加上多少条有向边。tarjantarjantarjan 缩点后判各强连通分量的入度,入度为 000 则答案 +1+1+1,对 sss 所在的强连通分量特判。#include <bits/stdc++.h>#define int long long#define PII pair<int,int>using namespace std;const int N=5e3原创 2022-05-16 15:13:32 · 132 阅读 · 3 评论 -
Codeforces Round #790 (Div. 4)(快乐AK场)
A. Lucky?题意给定一个长度为 666 的字符串,判断前三位的加和与后三位的加和是否相等。#include <bits/stdc++.h>#define int long longusing namespace std;void solve(){ string s; cin>>s; int a=(s[0]-'0')+(s[1]-'0')+(s[2]-'0'); int b=(s[3]-'0')+(s[4]-'0')+(s[5]-'0'); if(a==b原创 2022-05-11 19:25:57 · 241 阅读 · 2 评论 -
CF1674 F.Desktop Rearrangement(模拟)
传送门这种小模拟题怎么能被评为 1800 的啊题意给定一个含有 000 和 111 的矩阵,需要将其中的 111 按电脑桌面进行排列(即每个 111 的左侧和上侧都为 111 ),每次可以选择桌面上的任意两点进行交换,问将矩阵变换成电脑桌面排列需要多少次操作。预处理出在初始状况下共有多少个 1 (cnt)1\ (cnt)1 (cnt) ,以及有多少个 1 (count)1\ (count)1 (count) 处于不需要操作的范围内,则最终答案为 cnt−cou原创 2022-05-08 12:59:06 · 520 阅读 · 0 评论 -
cf1675 F.Vlad and Unfinished Business
传送门和 202220222022 天梯的 龙龙送外卖 简直是一模一样的题对每个需要跑的点(把 yyy 也加入)向父节点进行染色,最终答案即为 2∗(染色点−1)2*(染色点-1)2∗(染色点−1) − dis[y]-\ dis[y]− dis[y] ,因为最终需要走到 yyy 的位置上什么嘛,原来天梯里 L2 就放 cf1800 了吗#include <bits/stdc++.h>#define int long long#define endl "\n"us原创 2022-05-07 15:25:56 · 373 阅读 · 0 评论 -
cf1675-D. Vertical Paths/E. Replace With the Previous, Minimize(div 3)
D. Vertical Paths题目大意给定一棵树,问树上有多少条路径。容易发现路径数 = 叶结点的个数,因此可以从每个叶结点开始往上爬并染色,染到不能染时则当前染完的这一段算一条路径,也可以反向通过每个结点有多少个分支儿子思考。#include <bits/stdc++.h>#define int long long#define endl "\n"using namespace std;const int N=2e5+10;int n,fa[N],root,in[N];原创 2022-05-06 20:59:25 · 442 阅读 · 0 评论 -
cf1649D-Integral Array(数学+枚举+前缀和)
传送门题意给定一个含有 nnn 个元素的数组,其中的最大元素不超过 ccc,在该数组中任取两个数 xxx 、yyy(允许 x==yx==yx==y ),要求 ⌊xy⌋\lfloor \frac{x}{y} \rfloor⌊yx⌋ 所得结果也在该数组中,问该数组是否满足条件。D题了怎么可能还用暴力就能过呢 ,设 ⌊xy⌋\lfloor \frac{x}{y} \rfloor⌊yx⌋ 所得结果为 iii ,那么可以反推出 xxx 的范围为 i∗y≤x<(i+1)∗yi*y≤x<(i+1)*yi∗y≤x原创 2022-04-04 21:25:26 · 449 阅读 · 0 评论 -
cf1187E-Tree Painting(换根dp)
传送门题意给定一棵具有 nnn 个结点,且初始状态全为白色的树,最初可选择任意一个点将其染为黑色,之后的操作只能选择某个黑色点相邻的白色点进行染色。每次操作之后,将得到包含该顶点的白色连通块中结点个数的贡献值,求染黑所有结点后能够得到的最大贡献值是多少。发现最后的答案值只与起手时选择染黑的第一个点有关,考虑将第一个被染色的点看作根,那么染色过程就是从根节点开始进行 dfsdfsdfs 操作。而每次得到的贡献值其实就是以该节点为根的子树的结点数,由此转化为计数换根 dpdpdp 题(这不是显而易见的吗)原创 2022-04-03 23:32:46 · 422 阅读 · 0 评论 -
hdu2376-Average distance(树上平均距离)+ cf429A-Xor-tree
hdu2376-Average distance题意求数上任意两点之间距离的总和并计算其平均值。两种方法:①求每条边的贡献,即这条边的两侧分别有多少端点,则该边在答案中被计算的次数即为两侧端点的数量的乘积。②直接暴力每个点到其他点的距离,由于会重复计算,除 222 后即与方法①中得到的结果相同。#include <bits/stdc++.h>#define int long long#define PII pair<int,int>using namespace st原创 2022-04-03 12:01:48 · 438 阅读 · 0 评论 -
cf 1153D-Serval and Rooted Tree(思维,树形dp)
传送门题意给定一棵具有 nnn 个结点的数,每个结点都被标有 maxmaxmax 或 minminmin 标记,分别表示该点的值将取其所有儿子结点中的最大值或最小值(对于叶子结点可忽略该标记)。该树共有 kkk 个叶子结点,可以对这 kkk 个叶子进行 [1,k][1,k][1,k] 范围内的赋值,求最后根节点可取的最大值。本题中并未要求精确到所有叶子的构造方案,因此可以考虑从 maxmaxmax 和 minminmin 的性质入手。对于任一为 maxmaxmax 的结点,若其的儿子有 iii 个,则原创 2022-03-29 10:43:52 · 359 阅读 · 1 评论 -
cf1646c Factorials and Powers of Two(状态暴力枚举)
传送门题意给定一个数,问是否能将成拆分为不同的阶乘及 222 的幂次方之和,且最少需要几个这样的数字。根据二进制的特点,容易得到本题一定有解,且所需数字最多的方案即为二进制中 111 的个数。因此简化答案需要用阶乘替换若干个 222 的幂次方。由于本题的数据范围为 101210^{12}1012 ,因此能取到的最高阶乘为 141414 ,可以对是否取某个阶乘的状态进行枚举,并用__builtin_popcount()\_\_builtin\_popcount()__builtin_popcount(原创 2022-03-20 20:20:54 · 269 阅读 · 0 评论 -
cf1644-C/D(思维)
C-Increase Subarray Sums题意给定一个数组,可以对其中的 kkk 个不同元素都加上 xxx,( kkk,xxx 题目已给出),求 kkk 的取值为 000 到 nnn 时,该数组内连续子段之和的最大值是多少。考虑用前缀和的思想,求出长度从 111 到 nnn 时能够拥有的最大连续子段之和,再枚举 kkk 的取值,则该连续子段能够加上的 xxx 的个数为 min(k,j)min(k,j)min(k,j),其中 jjj 表示当前枚举的子段的长度。#include <bits/原创 2022-03-19 16:03:51 · 171 阅读 · 0 评论 -
Yet Another Minimization Problem(cf1637D)数学+dp
传送门题意给定两个数组 aaa,bbb 并可进行若干次操作,每次操作可取任意数 iii 并将 aia_iai 与 bib_ibi 交换,问最终可取得的∑i=1n\quad\sum\limits_{i=1}^ni=1∑n∑j=i+1n[(ai+aj)2+(bi+bj)2]\sum\limits_{j=i+1}^n [(a_i+a_j)^2+(b_i+b_j)^2]j=i+1∑n[(ai+aj)2+(bi+bj)2] 的最小值为多少。分析首先对该公式进行化简,可以发现其中 (n−2)∗原创 2022-03-03 17:12:35 · 368 阅读 · 1 评论 -
Make Them Equal(cf1633D)【变形01背包】
传送门题意给定一个长度为 nnn 且元素全为 111 的数组 aaa ,并可对该数组进行最多 kkk 次操作,每次操作可以任取一个 iii 及一个整数 xxx ,并执行以下公式:ai=ai+⌊ai/x⌋a_i=a_i+⌊a_i/x⌋ai=ai+⌊ai/x⌋ ,在所有的操作之后,同时将给定数组 bbb 和 ccc ,若 ai=bia_i=b_iai=bi ,则可获得 cic_ici 的得分,求最后能够获得的最大得分。分析首先通过打表得出令 ai=bia_i=b_iai=bi 所需次数的原创 2022-02-27 21:27:14 · 111 阅读 · 3 评论 -
Repetitions Decoding(cf1642D)【规律,暴力构造】
传送门题意给定一个数组,可通过若干次在任意位置添加两个相同数的操作,使该数组能够被拆分成若干个平方串,其中如 “1321324545”“1321324545”“1321324545” 即可拆为两个平方串,而 “135531”“135531”“135531” 则不是(该概念可类比于周期函数)。并输出操作的次数及每一次操作在什么位置插入了什么数,以及最终组成的若干个平方串分别的长度,如 “1321324545”“1321324545”“1321324545” 的长度分别为 666 和 444。分析由于本原创 2022-02-24 21:01:03 · 1254 阅读 · 0 评论 -
Arpa’s overnight party and Mehrdad’s silent entering【cf741C】(二分图匹配)
传送门题目描述输入描述输出描述输入样例31 42 53 6输出样例1 22 11 2题意有 nnn 对情侣( 2n2n2n 个人)围成一圈坐在桌子边上,每个人占据一个位置,要求情侣不能吃同一种食物,且桌子上相邻的三个人的食物必须有两个人是不同的,且只有两种食物( 1or21or21or2 ),构造一种可行分配方式。二分图问题,将吃不同食物的人分别分到两个集合。由于相邻的三个人不能吃同一种食物,因此考虑相邻食物不同,即偶数吃同一种,奇数吃同一种。且由情侣间不能吃同一种食原创 2022-01-26 00:25:10 · 230 阅读 · 0 评论 -
Codeforces Round #767 (Div. 2) ABCD
A-Download More RAM传送门题目描述输入描述输出描述输入样例43 1020 30 109 100 105 11 1 5 1 11 1 1 1 15 12 2 2 2 2100 100 100 100 1005 8128 64 32 16 8128 64 32 16 8输出样例2961256样例解释采用 pair 排序即可,大于 first 则对 second 进行累加。参考代码#include <bits/stdc++原创 2022-01-23 01:15:37 · 518 阅读 · 2 评论