![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
XCPC
文章平均质量分 75
小酒窝.
大三菜鸡一只,欢迎来交流讨论,一起进步!
展开
-
22湖北省赛 - J. Palindrome Reversion(回文,哈希拼接)
另外这道题场上的时候是想到第一种做法的,但是还是犯了上次网络赛的那个错误,有了思路没试样例就直接去写了,写完之后发现第二个样例过不去,然后就觉得自己的思路有问题,加上这道题过的人少,就觉得自己的思路不对,没有这么简单。其实第二个样例本应该是对的,只不过有点特殊,但是思路是对的,而写的时候 r 和 n 混用了,导致第二个样例没对,但是我却以为是思路问题,就没有继续往下想。如果一开始有思路的时候先看一下这个样例,发现也是能用这个思路做的,后面写挂的时候也知道自己写的有问题,而不是怀疑思路,直接不去想了!原创 2022-10-29 11:44:45 · 998 阅读 · 1 评论 -
J. Taotao Picks Apples(单调栈, 离线 / RMQ, 二分)
把对于每个位置的询问修改后的值以及询问编号都挂到每个位置下面,从后往前维护单调递减栈,每次询问后面所有位置中第一个大于 y 的值,就可以二分单调栈中的所有位置,找到第一个大于 y 的值所在位置。但是少考虑了一种情况,就是原来这个位置的值比前面最大值大,那么原数组中该位置是拿的,但是现在修改之后该位置不拿了,所以就要重新计算答案。但这种思路是错的,维护前面的时候可以继承上一位置的状态,但是维护后面的就不能继承后一位置的状态,因为是从前往后拿的,当前位置拿了后面就要找第一个大于当前值的位置,从这个位置来转移。原创 2022-10-25 11:42:30 · 368 阅读 · 0 评论 -
22河南省赛 - E. Serval 的俳句(预处理)
还有一种思路是,边走边记录每个字符出现的次数,如果有一个字符出现 5 次了,那么就满足了,清空次数重新记录,然后找首个出现 7 次的字符作为第二种 …首先遍历第一种字符,然后找到最前面的 5 个,然后遍历第二种字符,找到最前面的 7 个,然后遍历第三种字符,找到最前面的 5 个。每次都贪心找最前面满足的,给后面的字符尽量留更多的位置。这样每次找到的也是最前面满足的,满足贪心。输出一个满足的子序列。这题的思路来源于前几天模拟的一场。原创 2022-10-19 23:58:29 · 274 阅读 · 0 评论 -
22河南省赛 - J. Mex Tree(LCA,MEX)
连通块中所有点的权值的 MEX 恰好为 k,也就是说连通块中至少要出现权值为 1~k-1 的 k-1 个点,并且权值为 k 的节点不在连通块中。对于 k = 0, 1, 2,…, n,找到最大的连通块使得其中所有点权值的 MEX 恰好为 k,输出最大满足的连通块大小。需要注意的是,k = 0 时不需要满足所有小于 k 的节点都在连通块中,所以取该节点上部和下部连通块的最大值作为答案。给定 n 个节点的树,每个节点编号为 1, 2, 3, …, n,第 i 个点的权值为。场上做出来了,很激动~原创 2022-10-19 23:40:06 · 248 阅读 · 0 评论 -
22 河南省赛 - H.旋转水管(暴搜)
因为标记每个位置的时候带上了方向,可能有一种路径从一个方向经过了点 (x,y) 旋转了一次管子,后面转一圈回来又经过了这个位置,又旋转了一次管子,这种情况是非法的。从起点并不能到达 (1,1),但是经过 (1,2),(2,2),(2,3)…(1,4),(1,3) 之后,又旋转了一次 (1,2) 就能到达 (1,1) 了,是不合法的。所以需要像平常的 DFS 一样,记录路径,标记从起点到当前点路径上的所有点,不能重复经过,走不通时再。问,能否有一个旋转方案使得从起点流出的水经过管子流向终点?原创 2022-10-19 21:39:27 · 484 阅读 · 1 评论 -
22上海市赛 - E. Expenditure Reduction(预处理)
场上是这样想的,把每个字符所在的位置都存下来,B串的长度只有100,所以可以遍历第一个字符所在位置 pos,然后对于B串后面的位置,每次找到其在A串中 pos 位置后面第一次出现的位置,将 pos 更新成该位置,直到最后一个字符。后面只需要找 B串 首个字符出现的位置,然后跳到这个位置后面第二个字符首次出现的位置,直到最后一个字符。问,仍然满足 B串 为 A串 的子序列的条件下,A串 的长度最小为多少?给定长度分别为 n,m 的两个字符串 A,B,保证 B串 为 A串 的子序列。串中只包含小写字母和数字。原创 2022-10-09 12:28:03 · 524 阅读 · 0 评论 -
ICPC22网络赛(1) - A 01 Sequence(前缀和,思维)
其实接着判一下构成环的情况就行了,对于给定的这段区间,区间最左端连续的 1 和区间最右端连续的 1 会连到一起,然后同样连续的两个只看作一个,就是加起来连续 1 的个数除 2 上取整。写完之后,跑了第一个样例发现 100001 这个询问跑不过去,才发现一开始手推的时候没看这个样例,当初想的时候没有考虑环的情况,就以为这种做法不对了,没往下想。其实,现在看这个题并不是很难,但是场上一开始过的人并不多,然后心里就想着这道题很难很难,不敢去想,就算有一点思路也怀疑自己,这样对么?要敢于开题,敢想思路!原创 2022-09-22 00:13:20 · 506 阅读 · 1 评论 -
ICPC 2022网络赛(1) - D Find the Number(暴搜预处理)
后面对于每个询问,找到第一个大于等于左端点的满足的数,判断是否在区间中。一共30位,暴搜+剪枝完全可以求出所有满足的数。多用点野路子,不是它说啥就是啥。不要光跟着它的思路走。,找到区间中的任意一个好数。一共 T 次询问,每次询问给出一个区间。一共 1e9 个数,但是满足描述中。能 a 掉题目的方法都是好方法。的只有 5e5 个数。原创 2022-09-18 17:20:06 · 607 阅读 · 0 评论 -
ICPC 2020沈阳站 - D. Journey to Un‘Goro(暴搜+剪枝)
所以对于 0 到 n 这 n+1 个位置中,s[i] 为奇数的个数和 s[i] 为偶数的个数决定了一共有多少个完美区间:如果有 x 个 s[i] 为奇数,y 个 s[i] 为偶数,那么就会构成 x*y 个完美区间。如果对于一段区间 [l, r] 来说,s[r] - s[l-1] 为奇数,那么区间中红色位置个数就为奇数,这段区间就是完美区间。输出最多的完美区间数,按字典序输出所有构造方案(如果超过100种方案,只输出前100种)考虑前缀红色位置的个数:定义前 i 个位置中,红色位置的个数 s[i]。原创 2022-09-18 15:52:13 · 738 阅读 · 0 评论 -
ICPC 2020沈阳站 - H. The Boomsday Project(dp,双指针优化)
因为每种卡片免费的限制条件是使用次数和天数,而此时数组是按照时间排序的,所以对于每种卡片而言,随着遍历记录的后移,最靠前的满足条件的位置也单调往后走,所以可以用一个指针来指,每次遍历一条记录就往后走到转移位置,就省去了遍历转移位置的这一重遍历。对于当前这一天,遍历所有种类的卡片,从前面找条记录 x 使用当前卡片,能够使得从第 x 条记录开始到当前这条记录都不用花费,那么状态就可以由前 x-1 条记录的花费加上卡片的花费来转移。因为状态定义的是前 i 条记录的最小花费,那么越靠前花费越小,所以。原创 2022-09-18 11:29:44 · 373 阅读 · 0 评论 -
2020 CCPC 威海 - A. Golden Spirit(思维),D. ABC Conjecture(大数分解 / 思维)
题意一道河上有座桥,两岸分别有 nnn 个人。现这 2n2n2n 个人都要到对岸去,游玩至少 xxx 分钟后回到原来的河岸。要帮助这 2n2n2n 个人渡河。每次渡河最多带一个人,时间为 ttt。问,满足所有人的要求最少花多少时间?思路在最理想的情况下,帮助者没有一点时间浪费,当他把所有人都运到其对应对岸后,立即可以将该河岸首次运过来的人运回去。但是可能甚至首次运过来的人都没有到所需的游玩时间,所以帮助者可能需要等待。假设有河岸 A 和 B,起初帮助者在河岸 A,那么将所有人分别运到其对应河岸原创 2022-07-03 23:06:20 · 367 阅读 · 0 评论 -
2020 CCPC 秦皇岛 - K(树形dp+贪心),G(数论),E(尺取)
K. Kingdom’s Power题意给定一个树,可以从根节点发出无数个士兵。但是每个时刻只能让树中的一个士兵移动。士兵每移动一个节点该节点就被占领。问,占领所有节点至少需要多少时刻?思路.........原创 2022-05-16 09:39:45 · 1290 阅读 · 0 评论 -
2020浙江省赛 - C. Crossword Validation(mp/字典树)
C. Crossword Validation题意给定一个小写字母和字符 ‘#’ 构成的 n*n 矩阵。给定一个字典,包含 m 个单词,每个单词有一个权值 wi。可以从矩阵中得到若干个单词:按行遍历或者按列遍历,一段连续的不可扩展的小写字母串即为一个单词。如果从矩阵中得到的单词在字典中不存在,那么输出 -1;否则,输出所有得到单词的权值之和(重复单词可累加)。思路1:mp标记可以直接 mp 标记出字典中的所有单词,后面直接查询存不存在。注:用 unordered_map。Code#i原创 2022-05-12 21:45:01 · 265 阅读 · 0 评论 -
CCPC - E. Exchanging Gifts (思维+拓扑序),I(思维,组合数)
E. Exchanging Gifts题意一共 m 个人,初始每个人的手中都有一种礼物 aia_iai。两两之间可以互换礼物,如果最终每个人的手中和初始礼物不同,那么这个人是高兴的。问,最多能使多少人高兴?m 可能很大,所以将会给出 n (1≤n≤106)n \,\,\, (1≤n≤10^6)n(1≤n≤106) 个序列 sis_isi,初始礼物序列 a[]a[]a[] 为序列 sns_nsn,第 i 个序列 sis_isi 采取如下的输入方法:1 k q[1..k]原创 2022-05-02 11:18:05 · 637 阅读 · 0 评论 -
2020 江苏省赛 - H(dp), C(构造), D(思维转化, 二分)
H. Happy Morse Code题意:给定 m 个字符,每个字符对应一个 01 串 t。问,一个长度为 n 的 01 串有多少种字符对应方案?答案对 128 取模。(1≤T≤105,1≤n≤105,1≤m≤26,1≤∣t∣≤5)(1\le T\le 10^5, 1\le n\le 10^5, 1\le m\le 26, 1\le |t|\le 5)(1≤T≤105,1≤n≤105,1≤m≤26,1≤∣t∣≤5)思路定义状态 f[i] 表示前 i 个位置的字符对应方案。初始状态赋值为0,原创 2022-04-30 00:33:09 · 431 阅读 · 0 评论 -
B. Magical Subsequence —— dp
Linking题意:给定一个数列A,求出满足下面要求的最长子序列:选出 m 个位置,满足 Ab1+Ab2=Ab3+Ab4=⋯=Abm−1+AbmA_{b_1} + A_{b_2} = A_{b_3} + A_{b_4} = \cdots = A_{b_{m-1}} + A_{b_m}Ab1+Ab2=Ab3+Ab4=⋯=Abm−1+Abm。(m为偶数)(2≤n≤105,1≤Ai≤100)(2\le n \le 10^5, 1≤Ai≤100)(2≤n≤105,1≤Ai≤100)原创 2022-04-24 20:55:46 · 414 阅读 · 0 评论 -
CCPC 2021哈尔滨 - I. Power and Zero(二进制,思维),E. Power and Modulo(思维)
Linking题意:给定一个数列 A1,A2,⋯,AnA_1,A_2,⋯,A_nA1,A2,⋯,An,每次操作可以选择若干位置构成一个集合B1,B2,⋯,Bm(Bi∈1,2,⋯,n)B_1,B_2,⋯,B_m(B_i∈{1,2,⋯,n})B1,B2,⋯,Bm(Bi∈1,2,⋯,n),每个位置 ABiA_{B_i}ABi 减少 2i−12^{i-1}2i−1。其中,Bi,BjBi,BjBi,Bj 可以为同一位置。问,最少多少次操作能将数列中的所有值都变为 0 ? (1≤n≤105,原创 2022-04-24 20:22:55 · 1002 阅读 · 0 评论 -
2022 ICPC - 昆明站 —— F (思维,二分答案),D(构造,二进制)
F - Find the Maximum题意:给定一棵 n 个节点的树,每个节点有点权 wiw_iwi。选择一条点数至少为 2 的链,链上的所有点构成集合 V。求 ∑u∈V(−x2+bux)∣V∣\frac{\sum_{u \in V}\left(-x^{2}+b_{u} x\right)}{|V|}∣V∣∑u∈V(−x2+bux) 的最大值。(2≤n≤105,−105≤bi≤105)(2\le n \le 10^5,-10^5\le b_i \le 10^5)(2≤n≤105,−105≤原创 2022-04-20 20:40:46 · 784 阅读 · 0 评论 -
ccpc 桂林 - K. Tax —— 搜索
题目链接题意:给出一个 n 个点,m 条边的无向图。(2≤n≤50,n−1≤m≤n(n−1)/2)(2≤n≤50 , n−1≤m≤n(n−1)/2)(2≤n≤50,n−1≤m≤n(n−1)/2)每条边对应一种类 cic_ici,长度都为 1。每一种类 ttt 的边有价值 wtw_twt。从起点 1 出发,经过一条边的花费为:k∗wik * w_ik∗wi,其中 k 为走过的此种类的边的次数。对于每个点,问从起点到该点的最短路中,最小花费为多少?分析:一开始是这样想的:在队列中存结构体原创 2022-04-12 18:15:03 · 380 阅读 · 0 评论 -
CCPC桂林 - G. Occupy the Cities —— 二分答案
题目来源题意:给定一个长度为 n 的 01 数列。对于每轮操作,如果一个位置上为 1,那么其可以将相邻的最多一个位置上的 0 变成 1。问,将所有 0 都变成 1 至少需要多少轮操作?分析:看这道题之前先看一道简单题:给定一个长度为 n 的 01 数列,对于每轮操作,如果一个位置上为 1,那么其可以将相邻的最多两个位置上的 0 变成 1。问,将所有0 都变成 1 至少需要多少轮操作?对于这道题来说,每个 1 可以向左右两个位置扩展,可以用贪心,也可以二分答案。二分的话,每次 check原创 2022-04-11 20:10:58 · 974 阅读 · 0 评论 -
The 14th Jilin Provincial Collegiate Programming Contest 补题
The 14th Jilin Provincial Collegiate Programming ContestC. String Game(DP)题意:给出两个字符串A,B,问 A 中有多少子序列和 B 相等?思路:状态定义:dp[i,j]:A 串中的前 i 个位置中与 B 串中前 j 个位置相同的子序列个数。初始化:A 串中前 i 个位置和 B 串中前 0 个位置相同的子序列个数为1. f[i][0] = 1状态转移:A 串前 i 个位置和 B 串前j个位置相同的子序列个数dp[i,原创 2022-01-13 18:21:02 · 578 阅读 · 0 评论 -
2021ICPC江西省赛——A.Mio visits ACGN Exhibition(三维dp,滚动数组)
题目链接大意:给定一个 n*m 的 01矩阵,现要从左上角走到右下角,每次只能往下或者往右走。求走到右下角,经过 0 的数量至少为 p,1 的数量至少为 q 的路径个数。(1≤n,m≤500,0≤p,q≤10000).(1≤n,m≤500,0≤p,q≤10000).(1≤n,m≤500,0≤p,q≤10000).思路:状态表示:dp[i,j,k]:走到(i,j)点时,经过 0 的数量恰好为 k 的,路径个数。状态转移:a[i,j]=0时,dp[i,j,k]=dp[i−1,j,k−1]+原创 2021-11-17 15:41:55 · 174 阅读 · 0 评论 -
2021 广东省赛——A. An Easy Problem(堆)
为了使得结果最大,我们选第一行的n,将其与第二行的所有数相乘,将乘积作为第一元素,其对应的第一行的n作为第二元素,放到优先队列中。相当于两行数,第一行为1~n ,第二行为1~m。每次从第一行挑一个数,从第二行挑一个数,两数相乘。因为 k 不超过1e6,整个复杂度为O(klogn),可。二分最终的乘积mid,找到满足 前面至少有。累加值 就是在mid前面的个数。重复上述操作,得到第k大的数。遍历第一行的数 i :1~n,个乘积 的最左边的一个数。给定两个数 n, m。原创 2021-11-13 15:28:08 · 330 阅读 · 0 评论 -
2021 四川省赛 L. Spicy Restaurant(最短距离相互性,多源bfs)
题目链接大意:给定一个 n 个点,m 条边的无向图,每个点有点权 wi,边权都为 1。(1≤n,m≤105,1≤wi≤100)1 \le n, m \le 10^5, 1 \le w_i \le 100)1≤n,m≤105,1≤wi≤100)一共 q 次询问,每次给出一个点 x,输出不超过 x 的点权的所有点中,距 x 最近的点的距离。(1≤q≤5×105)(1≤q≤5×10^5)(1≤q≤5×105)思路:一共有5e5次询问,所以如果是每次询问都现求的话,每次求答案都需要在O(logn)的复原创 2021-11-13 12:05:07 · 589 阅读 · 0 评论 -
2021江西省赛——E. Color Sequence(高端前缀和+二进制)
题目链接题意:求长度为 n 的数列中,有多少连续的子数列,其中元素的出现次数都为偶数?数列长度 n ≤ 1e6,元素种类 m ≤ 20。思路:数列长度在1e6,所以时间复杂度要控制在 n 或者 nlogn。求满足条件的子串个数,要在O(n)的复杂内,之前遇到过:求和为7的倍数的字串个数、求01数量相等的子串个数。其做法相同,map标记边走边处理,看当前的值之前是否出现过,如果是,那么加上前面出现的次数,次数++。 这道题同样!用一个set,从前往后走,始终保证set中的元素始终都出现奇数原创 2021-11-13 10:17:05 · 646 阅读 · 0 评论 -
2021 ICPC昆明站——L-Simone and graph coloring(思维,线段树 / 二分优化LIS)
题意:给出一个长度为 n 的全排列数,对于每个逆序对之间连一条边,构成一个图(可能不连通) n≤1e6。现要将该图染色,满足任意相邻两点颜色不同。问最少用多少种颜色?输出染色方案。T组测试样例,T≤1e6; sum{n} ≤ 1e6。思路:如果建边跑的话,最坏情况下光是建边就是 N2N^2N2,所以建边不可行。最多1e6种测试样例,所以应该是思维题。对于一个位置 i 上的数 x,其需要和后面比 x 小的数所在位置相连,两个位置上颜色不能相同。为了使得染色种类最少,而且保证相邻位置不能同一颜原创 2021-11-07 23:32:28 · 233 阅读 · 0 评论