
区域赛
文章平均质量分 52
ICPC
美少女zss
ccpc绵阳铜,icpc西安银,jscpc江苏金。
展开
-
2022上海-Expenditure Reduction-(二分预处理)
就是给你一个A字符串和一个B字符串,你可以把A字符串删去一些前缀和后缀,然后B字符串仍然是A字符串的一个子序列。现在问你A串最多可以删去多少,把删掉后的A串输出。特别是那种经常暴力枚举查询的,就可以先去预处理试试,然后再查询就很方便了。原创 2022-10-13 13:16:50 · 279 阅读 · 0 评论 -
2022上海-My University Is Better Than Yours-(缩点+拓扑)
就是说一共有n个大学,现在给你m种排名。现在定义x学校好于y学校,只要存在{s1, s2, …, sk} (k≥2)。s1=x, sk=y。看清题意,仔细思考,考虑所学的所有方法。原创 2022-10-12 22:25:18 · 441 阅读 · 0 评论 -
2020南京-Monster Hunter-(树上背包)
就是给你一棵树,你刚开始可以去掉i个点(i ∈ [ 0 , n ] ),然后计算剩余结点的花费,每个结点的花费为这个子树中没有被删的点的权值。那么现在问你不同的i花费分别是多少。原创 2022-10-12 21:46:49 · 147 阅读 · 0 评论 -
2022杭州-IHI‘s Homework-(组合数+球盒问题)
然后给你k次询问,每次询问把第a个数变成b后,这x个未知数有多少种不同的分配方案。,和一个数字s,然后这n个未知数的和原创 2022-10-06 20:19:39 · 215 阅读 · 2 评论 -
2016CCPCFinal-Pandaland-(无向图的最小环)
就是在一个二维平面上,给你m条边,每条边给你两个端点和一个边的权值。现在让你找出一个权值和最小的环。原创 2022-10-05 21:20:02 · 157 阅读 · 0 评论 -
2021台湾-Garden Park-(线性dp+路径计数)
就是给你n个点,n-1条边。然后每条边有一个权值,现在问你一共有多少漂亮的简单的路径,定义漂亮的简单路径为,每个点只能走一次,并且边的权值是要上升的。多多思考,深入思考,试一试。原创 2022-10-03 12:35:48 · 161 阅读 · 0 评论 -
2022ICPC网络赛第二场
PTA 然后每次操作,你可以选择一个数删掉或者不删,然后再让其中一个数变成任意其他的数。但是不能操作第一个数和最后一个数。现在让你输出操作次数分别为[1,n]的答案。就是给你一个n(n原创 2022-09-29 22:09:39 · 493 阅读 · 0 评论 -
2020长春-Strange Memory-(启发式合并+位运算)
给你一个树,每个点有个权值原创 2022-08-31 19:51:34 · 188 阅读 · 0 评论 -
2020绵阳-Joy of Handcraft-(调和级数+线段树)
t+t]亮,也就是先亮t秒再关t秒再亮t秒…然后亮的时候亮度为x。现在问你从1到m每个时间点亮的灯泡中亮度最大的亮度是多少,也就是最大的x是多少。就是给你n个灯泡,一共m个时间。每个灯泡有两个参数t和x,灯泡会在[2k。多多思考,联想联想相关的知识。原创 2022-09-07 21:19:46 · 173 阅读 · 0 评论 -
2020绵阳-Game of Cards-(博弈论+搜索)
就是给你0,1,2,3,这四个数的个数。然后你每次可以选择两个数加起来,不过加起来的值要原创 2022-09-08 15:46:59 · 452 阅读 · 0 评论 -
2022CCPC网络赛
就是给你一段区间a到b,和权值c,然后问你有多少x,使得区间[a,b]中所有是x的倍数的数组成了一个集合set,然后这个集合的所有子集的价值总和 = c。一个集合的价值就是集合内所有数的和。然后T组测试,T=100,1 ≤ L ≤ R ≤ 1e12,1原创 2022-09-13 12:18:01 · 638 阅读 · 1 评论 -
2020沈阳-The Boomsday Project-(线性dp+双指针转移理解)
就是小A会借自行车,给你m个a和b,在第a天借b次。然后借一次的价格是k,不过还有n原创 2022-09-15 17:19:03 · 199 阅读 · 2 评论 -
2022ICPC网络赛第一场
现在定义一个好数为:其二进制表示中,1的个数和后缀0的个数一样。现在给你T次查询,每次问你a到b中是否有这样的数。一定要把题目搞清楚先,先不听思路,多人多思考思考。原创 2022-09-18 12:57:38 · 524 阅读 · 0 评论 -
2022江苏省赛-Jump and Treasure-(单调队列优化dp+调和级数)
Jump and Treasure多重背包问题III题意:就是给你n个点,然后每个点有正的金币和负的金币,每次你跳跃的距离不能超过p,然后问你跳超过n的时候,最多能有多少金币。如果跳不出n,那么输出-1。然后给你q次查询,每次给你个x,然后你只能跳到是x的倍数的点上,然后请你输出答案。思考:一看n很大,查询也很大,不用想肯定预处理。然后每次查询i,那么一共n个i直接每个枚举一遍,nlogn复杂度。然后对于子问题,如何处理呢,这种求最大值的。定义dp[i]一般有两种定义状态:1.为走到i点的最大值为多少原创 2022-07-06 20:59:13 · 732 阅读 · 0 评论 -
2020浙江省赛-Bin Packing Problem-(线段树)
B题意:就是有n个物品,然后有体积为m的盒子,然后有两种算法。第一种,顺序遍历每个物品,找到第一个能装下它的盒子,如果没有,那么就新添一个盒子。第二种,顺序遍历每个物品,找到能装下它的提及剩余最小的盒子,如果没有,那么就新添一个盒子。问你两种算法分别要多少种盒子。思考:对于第二种很简单,就是multiset跑一遍就行了。对于第一种,刚开始我还想vector,但是vector要满足是升序的呀。所以就想到了线段树,如果最大值都装不下,那么新开一个盒子。如果能装下,那么就去装,对于怎么找到第一个大于它的点原创 2022-05-12 10:29:24 · 361 阅读 · 0 评论 -
2020秦皇岛-Kingdom‘s Power-(树上贪心)
K题意:就是给你一个树,然后你的大本营在1号点,每一秒你可以让一个军队移动一格,或者从大本营发出一个军队出发,问你最少多少时间可以把整个图占领完。只要军队走过的点就是被占领了。思考:首先对于占领每个点其实就是让叶子节点被占领了即可,这个很容易想到,然后就是怎么去贪心了,一个点想被占领要么直接从根节点派军队过来,要么从他的其中一个子树的最深点走过来。可以发现于一个点x,他有3个子树,每个子树的最大深度分别是a,b,c很明显的去贪心就是先走a,然后看看是否要回来,然后再走b,然后看看是否要回来,再走c。原创 2022-05-08 21:39:30 · 323 阅读 · 0 评论 -
2020秦皇岛-Exam Results-(二维偏序+树状数组+离散化)
E题意:就是给你n个人,每个人有两个值分别是最大值和最小值。然后每个人选择一个值,其中这n个人选的值最大的那个*m/100是及格线,现在问你最多有多少人可以及格。思考:刚开始还以为是啥二分题去check啥的。其实就是去考虑哪个值当最大值,然后就看一共有多少人及格就行了。所以可以先对最大值排序,然后从后往前走,枚举到i,看看1-i之间有多少最大值满足及格分,然后i+1到n中有多少最小值满足及格分这里用树状数组就行。不过值得注意的是枚举到i的最大值,如果小于后面出现的最小值,那么这个最大值就不能是最大值原创 2022-05-08 16:54:37 · 274 阅读 · 0 评论 -
2020秦皇岛-Friendly Group-(思维+set删点+并查集)
F题意:就是有n个人,然后有m对朋友关系,现在让你选出一些朋友进入派对。这个派对的友好值就是,朋友关系-点的个数,也就是边的个数减去点的个数,问你友好值最大是多少。思考:其实看到这个题就感觉和我之前做过的一道题很像,就是对于一个点如果入度为1就没有存在的意义所以就去删去,然后再把入度为1的放进set里,直到没有入读为1的点。然后还有一种思路,就是直接并查集合并,如果这个集合的边>点就拿这个集合,否则不拿,就行了,当时也没去这样想,仔细想一下确实是这样…挺简单的。代码:set删点#inc原创 2022-05-08 16:32:07 · 426 阅读 · 0 评论 -
2020湖南省赛-String Commutativity-(KMP求最小循环节)
D题意:就是给你n个字符串,问你有多少对i<j,满足si+sj = sj+si。思考:推了推发现只要两个字符串的最小循环一样,那么他俩就可以合并,那么现在就是如何去求最小循环,那么就是KMP求最小循环节的板子。代码:#include<bits/stdc++.h>#define fi first#define se second#define pb push_back#define db double#define int long long#define PII p原创 2022-05-05 14:02:40 · 228 阅读 · 0 评论 -
2021江苏省赛-Anti-merge-(思维转化+二分图)
J题意:刚开始这个题意就很难懂,就是给你n*m的格子,每个格子有个编号,如果两个相同的编号相邻那么他们就会合并,除非你对其中一个进行颜色标记。现在问你最少用多少种颜色可以不让原本的格子合并,在用这些颜色的前提下最少要颜色多少次。思考:刚开始我感觉就是先找出来最少的颜色数,然后再用这些颜色去二分最少次数,但是没法check,然后就僵住了。过了会周来了句应该就是用1种颜色染就行了,然后恍然大悟,之后我以为就是没有上司的舞会,最少的颜色次数嘛,但是这个图是可能有环的然后就不行了,之后于说就对这个图染色,奥原创 2022-05-05 13:41:09 · 559 阅读 · 0 评论 -
2019哈尔滨-Exchanging Gifts-(思维贪心+拓扑序路径)
E题意:就是给你n次操作,一种是给你直接给你一个序列,一种是这个序列为前面的某两个a和b序列拼接起来。现在问你第n个序列,这个序列是一些值,这个序列再随意排列后再相应匹配,问你最多有多少个人满足他目前的数和处理后的数不一样。思考:假如你有两个序列,排序后最多有多少人的值不同。这个就是一个数学结论,比如出现次数最大的次数为n,剩下的总和为m,如果n>m那么答案就是2*m,否则就是n+m。当n>m的时候,左边和右边相互匹配。当n<m的时候,那么就可以迭代的替代,第一大的代替第二大的,依原创 2022-05-01 21:47:15 · 229 阅读 · 0 评论 -
2021哈尔滨-Colorful Tree-(启发式合并)
C题意:就是给你一个树,所有叶子节点有一个颜色,每次你可以选择一个点进行操作,操作后会使得以这个节点代表的子树中所有的叶子节点的颜色被染成某种色。问你最少多少次操作,可以使得叶子节点满足题目给的颜色。思考:当时写的时候也没想太多,看到subtree就感觉是树上启发式,但是我没想到怎么去做。其实就是贪心的去想,对于某个节点,如果这个节点的所有叶子节点最大颜色出现的次数为多少,那么他的dp,就是在这个点颜色最多能节省多少次操作。现在就是怎么去求每个节点的子树所有颜色出现的次数,直接暴力?肯定超时或者炸空原创 2022-04-25 13:00:05 · 838 阅读 · 1 评论 -
2022昆明-Find the Maximum-(思维+贪心or二分01分数规划)
F题意:就是给你一个树,然后你需要选一些点集,这些点集任何两点只有一个简单路径,说白了就是条链,问你选的点集权值总和/点的个数的最大值或者最少值是多少。思考:当时我扫了一眼这题,一看那个公式感觉很复杂就跳过了,主要是过的人也很少,不过交的人挺多,害感觉题目的过题量和交题量太影响自己对题目的判断了。我感觉过的少,应该就没那么简单,看到平均值最大最小,立刻想到了,二分平均值mid,然后01规划树上dp去求最大值和最小值,但是wa掉了。如果eps开的更大一点,又TLE,最后到结束没调出来。我麻了,真折磨啊原创 2022-04-18 14:24:15 · 541 阅读 · 2 评论 -
2020威海-Caesar Cipher-(线段树+hash修改)
G题意:就是给你一个数组,然后有两种操作,第一个就是让一段区间加1,然后如果这个数>65535了就变成0,然后第二个就是查询两端区间序列是否相同。思考:很明显的线段树,然后对数组维护一个hash,对了取模的话自己定义一个取模,不要用ull,因为出题人想卡你就卡你。现在难点就是维护hash的同时如何操作一段区间加1?其实发现∑ a[i] * base ^ i,现在每个a都加1,那么变化值就是∑ base ^ i,所以维护一个pre对bas进行前缀和就行了。然后还有一个点就是对于如果这个数>原创 2022-04-14 16:23:50 · 234 阅读 · 0 评论 -
2020威海-Rencontre-(思维+贡献+数论期望)
C题意:就是给你一个树,然后有3个科学家,每个科学家有mi个想去的点。然后对于每次每个科学家会选择一个点,求出来一个点使得这三个科学家集合到这个点的总距离最小。然后对于所有的可能的这些距离全部加起来,最后再除以一共有多少种可能性。思考:说实话,当时看完题意就感觉又是那种假期望题,和上次济南一样,肯定有什么规律可循。对于每次是选3个点,求最小距离的话我只会枚举点后lca求出来,但是时间绝对炸了。因为每个科学家最多有n个想去的地方,这光枚举三个点都nnn的复杂度了,所以肯定不行。对于树上边距离很明显可以原创 2022-04-14 13:29:06 · 317 阅读 · 0 评论 -
2020威海-Clock Master-(数论+分组背包)
L题意:就是给你n元钱,然后让你买一些齿轮,每个齿轮有不同个数的尖角,价钱就是尖角的个数。现在问你让你花钱不超过n的情况下,(k%t1,k%t2…,k%tm)最多的方案数有多少。思考:题意转化之后发现就是让你求出来一些数,这些数加起来<=n,让这些数的最小公倍数最大。其实刚开始我以为是乘积最大,因为我以为齿轮就是指针,实际上如果两个都是两个尖头的齿轮在一起就一种可能,所以这个是看最小公倍数。就像题目给的式子,发现当k为这m个数的最小公倍的时候,这个状态又变成0000了。所以题目就转化完成了,发原创 2022-04-14 12:57:29 · 152 阅读 · 0 评论 -
2020威海-ABC Conjecture-(思维+数论)
D题意:就是给你一个数c,然后问你是否能构造出a+b==c,使rad(abc)<c。rad(n)就是n的所有质因子的乘积。c最大1e12。思考:可以发现,rad就是某个数的质因子乘积,所以如果c有个因子的次幂>1,那么很明显,abc就可以小于c了。然后如果c特别大,也就是在1e7之内找不到c的因子,那么c肯定是个很大的质数,或者是两个很大的质数乘积,所以再看看c是不是平方数,如果是就yes。记得要特判1,...原创 2022-04-13 21:48:32 · 341 阅读 · 0 评论 -
2017EC-Scapegoat-(思维+优先队列贪心)
B题意:就是给你n个压力,然后有m个人可以去承担,每个人只能承担一个,现在问你如何去分配这m个人。使得这m个人的压力方差最小。思考:刚开始我还以为是压力的方差最小,害,区域赛的题目确实都很难懂。然后题目保证了m>=n,刚开始由于我读错了,所以直接对于每个压力排序后,从后面开始尽量让当前值和va[1]一样,题意错了就不说了。那么既然保证了m>=n,很明显每个压力可以先分配一个人,然后剩下的人怎么分配?,发现对于每个压力对答案的贡献就是(当前的压力-所有人压力的平均值)✖这个压力的人数。由于原创 2022-04-11 16:43:48 · 274 阅读 · 0 评论 -
2017EC-Straight Master-(思维+差分)
J题意:就是给你一个长度为n的数组,每个点有个个数,每次你可以拿连续3个4个5个,问你是否可以全部拿完。思考:这和以前做的增减序列差不多,就是给你一个数组,每次可以让一段区间减去1,问你最少多少次整个数组变成零,就是差分后贪心即可。这道题呢加了个限制就是长度为3,4,5,刚开始我在想,是不是从前往后走,如果不够就从前面或者后面去拿,但是太复杂了,不好写,不好写的思路往往是错的。其实再仔细想想,对于说3 4 5的长度,其实就是任意长度,但是长度至少为3,所以从前往后遍历一遍,如果差分值是正的就加上,原创 2022-04-11 11:42:19 · 294 阅读 · 0 评论 -
2017EC-Chat Group-(思维+组合数)
刚开始看到直接写了个lucas,发现模数为1e9+7,肯定超了。发现n那么大,肯定是从k入手,但是好像也没有什么公式啊,怎么都想不出。其实用手写一写就发现了,C(n,m) = C(n,m-1)*(n-m+1)/m。所以可以从第一项开始递推,推到m次就可以了。答案就是2的n次方减去这些的累加和。一定要动手写一些模拟一下。就是问你C(n,0)+…C(n,k-1),n是1e9,k是1e5。原创 2022-04-11 09:53:27 · 289 阅读 · 0 评论 -
2021桂林-Tax-(spfa+dfs路径)
K题意:就是给你n点m个边,每条边被其中一个公司管理,现在你从一号点开始出发,对于到达任意一点有很多条路径,你会选择最短的路径,同时对于多个最短的路径选花费最少的那个。对于花费的计算就是,你走的这条路径,每条边走过的次数✖这条边属于那个公司的权值。思考:对于从1到任一点的最短路很明显,就是一遍spfa就行了。但是对于到某一点如何确定权值最小的怎么找呢。其实看到数据范围n为50,就可以发现,可以直接爆搜,但是要注意,只有dist[spot]==dist[now]+1的时候,才可以过去,为什么呢,既然是原创 2022-04-11 09:21:08 · 197 阅读 · 0 评论 -
2021桂林-Occupy the Cities-(思维+二分答案)
G题意:就是给你一个长度为n的01串,然后有些地方是1,有些地方是0,每次为1的可以往左或者往右扩展一个,现在问你最少多少秒,所有的都变成了1。思考:刚看到这题的时候,就是在想贪心,看到答案最小,要么是dp?或者二分,dp的话感觉状态方程不好写,二分的话check判断的时候你得拿一个最优的方案去求出来时间把,如果你知道最优的方案了直接就求出来答案了,又不行了,然后就陷入傻逼的贪心去了。这种题一看贪心就不行啊,直接一遍肯定错。直到后期,我感觉只能二分了,突然想到,一个0要么被左边的1占领,要么是右边的原创 2022-04-10 21:45:14 · 1084 阅读 · 0 评论 -
2021桂林-Buy and Delete-(思维+distra求有向图最小环)
E题意:就是给你n个点m条边,然后每条边有一个价值,小A现在又c元钱,他可以买一些边,然后放进图中。然后小B每次可以删去一些边,这些边不能构成环。小A想让小B删的次数尽量多,小B会删边次数尽量少,问你小B最终会删多少边。思考:真的绝绝子啊这题,害,当时和于讨论出题意之后,立马想到了一个想法答案就是环的数量+1,为什么这样想呢,因为我想着每次对每条环删去一条边,然后剩下的图不能构成环了再一次删掉。现在就变成了找环的题目,我一看是有向图,可以直接缩点,按所有环的大小排序看看小A最多能拿多少环。实际上题原创 2022-04-10 20:38:08 · 439 阅读 · 0 评论 -
2018深圳-Balance of the Force-(思维+二分图+孪生问题)
B题意:就是给你n个人,然后每个点有两个权值,然后有两个阵营,每个人可以进黎明阵营那么权值就是第一个,进黑暗阵营权值就是第二个。还有m个条件就是a和b不能在一个阵营。然后问你所有人分配好之后,最大的权值减去最小的权值最小为多少,如果非法输出impossible。思考:对于非法很明显就是有奇数环。然后就是分配阵营了,如何分配对吧,对于给的m条边,可以发现每个连通块的状态只有两种,一旦一个人的阵营确定的,剩下的人全部确定。对于每个连通块都有两种状态可言,对于状态我们只要最大值和最小值,因为只有最大值和最原创 2022-04-06 16:23:12 · 320 阅读 · 0 评论 -
2018深圳-Ultra Weak Goldbach‘s Conjecture-(数论+rabin)
L题意:刚开始说哥德巴赫猜想任意一个大于2的偶数都能被两个质数相加,然后又说大于5的奇数能被3个质数相加。现在问你任意大于11的数,是否能用6个质因数相加,如果不能输出impossible否则输出6个数字。思考:刚开始说的2个定理,我总感觉会用到…把2的和5的联合起来,实际上不是按这来做的。对于任意一个>11的要表示成6个数字,那为何我不先把其中4个给用掉呢,然后就变成2个数相加即可,也就是变成了哥德巴赫,但是剩余的数需要是偶数。很明显如果n是奇数那么先减去2 2 2 3,如果是偶数先减去2原创 2022-04-06 10:09:05 · 188 阅读 · 0 评论 -
2018深圳-Pastoral Life in Stardew Valley-(思维+组合数)
G题意:就是给你一个n*m的田地,这个田地的所有子矩阵,对于每个矩阵可以放多少个稻草人,稻草人放置的条件是必须周围都是草,但是占地大小随意。思考:当时我就是想只扫一维n,然后对于列m就是直接一个等差数列之类的,但是怎么推都推不出来。害,实际上不要考虑那么复杂,既然说稻草人周围必须有草,那么从n行里选4行,其中两行是草的边界,其中两行是稻草人的大小,然后同理m也是。但是还有一个就是从n行选3个,也就是只有中间一行作为稻草人。转化成这样确实太简单了,思维要多转化一下,多多思考。int T,n,m,k;原创 2022-04-05 20:49:51 · 313 阅读 · 0 评论 -
2018南京-Country Meow-(模拟退火)
D题意:就是给你n个点,问你在那个点是到所有点距离的最大值最小。思考:一看就是几何题,但是怎么做呢,好像有啥板子才行。然后答案让你输出小数点后几位的,一般答案都可以不太精确即可。所以如果能退火就退火,这个也就是先选一个点,然后随机下一个点,如果当前的最小值更优,那么就过去。跑10次退火取答案最好的时候即可。代码:struct point{ db x,y,z;}node[N];int T,n,m,k;int va[N];db anw = inf;db dis(db x,db y,d原创 2022-04-05 15:14:03 · 213 阅读 · 0 评论 -
2019焦作-Invoker-(线性dp)
I题意:就是一共有QWE3个法球,然后存满3个法球按一次R,就可以放出对应的技能,当然一个技能对应3个法球,顺序无所谓。然后当有3个法球的时候,再放一个法球,那么最开始的法球就会消失。现在给你一个技能顺序,问你最少要按多少次键盘。思考:刚开始我没看到技能的法球是任意的,直接以为是模拟。发现是任意的之后,这肯定不能模拟了,也不能搜索,只能就是dp,然后发现技能就3个字母所以也就6中状态,所以dp[i][j]代表走到i的j状态的最小操作次数。不同的状态用一下permutation就行了。值得注意的是,p原创 2022-04-05 11:49:29 · 3202 阅读 · 0 评论 -
2019秦皇岛-Forest Program-(思维+找环)
F题意:就是给你一个图,然后让你删去一些边,让它成为一个森林。思考:就是找环,找出大小为x的环,方案数为2的x次方-1,-1就是全部删去的那种情况。然后剩下的非环的边就随便弄了2的last次方。代码:int T,n,m;int va[N];int col[N],siz[N];vector<int > e[N],v;void dfs(int now,int p){ col[now] = 1; siz[now] = siz[p]+1; //累加后缀 for(auto原创 2021-12-01 13:03:19 · 146 阅读 · 0 评论 -
2021威海-Desserts-(思维+组合数)
G题意:就是给你n种糖果,每种有va[i]个,现在有m个人,每个人可以拿一些糖果,但是每种最多拿一个,现在让你当人数从1到m的所有的情况种,输出每次的方案数。思考:由于题意的意思是所有的糖果都必须被拿完,而且每个人拿的个数也无所谓,所以对于每种糖果的方案数就是C(j,va[i]),从j个人选出来va[i]个人来拿这些糖果。所以方案数就是直接乘一遍,但是要看m个人,复杂度是m*n的呀,但是发现还有一个条件就是所有va[i]的和不超过1e5,也就是不同的n最多是1e3个,所以直接map里面存起来就行了求原创 2022-04-02 17:57:06 · 226 阅读 · 0 评论