ACM——竞赛内容
文章平均质量分 58
~
一只酷酷光儿( CoolGuang)
桃李不言 下自成蹊
展开
-
【2021洛谷多校 T176273】 Hazardous | 树上启发式合并、思维
题目大意:给出一个以111为根的树,对于每个节点,需要输出每个节点的子树中,相同颜色的距离之和。题目思路:群友给的,一听数据结构,啪就站起来了。静态子树询问,颜色,要么虚树,要么dsudsudsu,这个题虚树可能更好写一下而且复杂度比启发式合并(dsu)(dsu)(dsu)是优秀许多的。想了想,dsudsudsu好写,就冲了下dsudsudsu。可以把每个节点下的答案分为两部分:每个子树下的答案不同子树下的答案因为第一部分由第二部分产生,所以只需要考虑第二部分怎么搞,就是dsudsu原创 2021-04-26 17:15:14 · 303 阅读 · 2 评论 -
【ICPC】2020ICPC南京 Just Another Game of Stones| 博弈、SegmentTreeBeats
题目大意:博弈论题目思路:队友推了一波维护的东西我一看这不是吉老师线段树?Code:/*** keep hungry and calm CoolGuang! ***/#pragma GCC optimize(3)#include <bits/stdc++.h>#include<stdio.h>#include<queue>#include<algorithm>#include<string.h>#include<i原创 2021-03-12 20:47:12 · 245 阅读 · 0 评论 -
【Nowcoder】2020ICPC·小米 网络选拔赛第一场 E Phone Network | 线段树、思维、二分
题目大意:给出一段长度为NNN的序列,对于每一个aia_iai,满足1≤ai≤M1 \le a_i \le M1≤ai≤M。需要输出MMM行,第i行的答案代表包含数字[1,i][1,i][1,i]的最小区间长度。题目思路:这是学弟给的一个数据结构题,当时口胡秒了,但是写了222天。开始拿到题的思路是显然的,对于每一个位置,用sr[i]sr[i]sr[i]表示。sr[i]sr[i]sr[i]表示满足以i为右端点,满足当前条件的最近的右端点是多少。然后依次从小到大枚举1−j1-j1−j所有出原创 2021-03-10 10:36:07 · 134 阅读 · 0 评论 -
【ICPC】2019徐州 H Yuuki and a problem | 树套树、思维
题目大意:给出一段序列NNN,现在要求维护下面两种操作:将axa_xax替换为 yyy询问[l,r][l,r][l,r]内所有子集能组成数的集合的mexmexmex题目思路:一般这种问题,首先需要考虑,无修改操作怎么办?很简单的方法:背包dpdpdp解决但是明显复杂度不可,所以考虑从背包dpdpdp的本质上出发,因为只需要求mexmexmex,没必要求所有解。考虑如果知道[1,x][1,x][1,x]内的所有数都可以表示,那么对于新来的一个数yyy,就会使得[1,x+y][1,x+y]原创 2021-03-07 19:38:18 · 245 阅读 · 1 评论 -
【传智杯】第三届“传智杯”全国大学生IT技能大赛(初赛A组)G - 森林 | 并查集、思维
题目大意:清蒸鱼是一个尽职尽责的 YYH Land 护林者。他负责每天维护 YYH Land 的森林。在最开始的时候,YYH Land 只有一棵具有 nnn 个节点的树,每个节点有一个灵力值 vvv。由于 YYH Land 是一片神奇的国度,YYH Land 的树也有一些神奇的能力,具体来说它满足如下操作:1 e编号为 eee 的边突然消失,使得它所在的那棵树变成了两棵树。2 uuu valvalval编号为 uu 的节点的灵力值变成了 valval。3 uuu清蒸鱼进行了一次查原创 2020-12-25 14:51:53 · 1699 阅读 · 3 评论 -
【ICPC】2020ICPC上海 Sum of Log | 数位dp
赛时(志愿者):这不是裸的数位dp?赛后(疯狂敲代码):woc,怎么T了..题目大意:就是求一下上面式子的和题目思路:首先考虑双线程,0~X,0~Y去进行数位dp,与2020牛客多校某题类似所以很容易可以求出的是 0~X,0~Y中,(i&j) == 0的数量仔细观察这个式子,因为 i&j == 0,所以每一位必不相同,所以其实就是求对于每一对(i&j) == 0,max( f(i) , f(j) ) 的和,f(x)代表x的二进制最高位所以就可以在数原创 2020-12-13 18:35:02 · 827 阅读 · 2 评论 -
【CCPC】2020CCPC长春 F - Strange Memory | 树上启发式合并(dsu on a tree)、主席树
人均会dsu的赛区..早知道就把数组开大一点了..差20分钟就银了呀..最后一场ccpc留下遗憾了...题目大意:给出一个树让你求出:题目思路:看到lca,那就只能是枚举每个点作为lca的贡献所以枚举当前节点作为lca时,所以能够产生贡献的就是,他的任意两棵子树的贡献所以直接枚举当前这个子树的所有点,然后和之前的权值去匹配这里需要按位拆分一下:a^(b+c) != a^b + a^c但是把数按位拆分之后,对于当前lca权值是ai = c,当前点是ak =原创 2020-11-08 20:31:42 · 2915 阅读 · 13 评论 -
【CCPC】2020CCPC秦皇岛 K. Kingdom‘s Power | 树上贪心
题目链接:https://codeforces.com/gym/102769/problem/K题目大意:抽象一下:从根节点出发有无数个机器人,假设机器人从u->v那么u->v路径中所有的点都会被覆盖问最少移动几步可以将所有的点全部覆盖题目思路:可以考虑每个叶子节点的贡献(这个非常容易想到)叶子节点覆盖之后所有点必然会全部覆盖所以考虑每个叶子节点的状态:1.从根节点直接到达该节点u2.从上一个节点转移过来分析状态2从上一个节点转移过来,其实并不太.原创 2020-10-30 14:50:17 · 573 阅读 · 0 评论 -
【CCPC】2020CCPC威海补题 部分题解 ABCDGHL
首先说明,思路都是自己与队友联合想的..不过是写了太久 补了三天...AGolden Spirit题目大意:有2*n个老人过河,每个老人都希望去河对面休息x分钟后,然后再回到当前位置,你每次可以扶一个老人过河,过河时间为t问最少需要多长时间可以使得所有老人都满足要求?题目思路:模拟题考虑最终结果,一定是先把所有老人送完注意有2*n个所以送完之后是在刚开始的位置所以判断一下第二个送完的老人休息够了没有,休息够了,那么*2即可,因为任意老人间隔差都为t否则,你有两种选择.原创 2020-10-28 15:13:23 · 2240 阅读 · 1 评论 -
【超级码力】密钥 | 思维
题目大意:如图所示题目思路:经典问题—— 考虑数字的组合情况即可那么接下来就需要对于每一个右端点 ,记录i的出现次数-j的出现次数 - 之前(记录i的出现次数-j的出现次数)的最小值这是一个普通的枚举思路,复杂度:10*(10-1)/2 * n但是此时会发现,全是一个数字的情况会产生最大值题目也要求必须要大于等于2个数字那么当枚举 i,j出现次数差值时令a[x] 为 i的出现次数前缀和 ,b[x]为k的出现次数前缀和 x表示当前在第x个位置对于此位置:...原创 2020-09-13 12:27:18 · 186 阅读 · 0 评论 -
【智算之道】2020总决赛 A Vivid Theory | AC自动机
用暴力哈希过了90,最后一直在写AC自动机.. 写出锅了 ,最后发现原来是这么sb(初始化错误)的错误...首先根据题意即可得答案:只要知道T串在S串中的起始位置,就可以知道(x,y)的答案具体关系为:void work(int t,int len,int slen){///终止位置,T串长度,S串长度 if(t>slen){ int y = (t-len+1)>slen?(t-len+1)-slen:(t-len+1); prin...原创 2020-09-06 12:32:37 · 320 阅读 · 0 评论 -
【智算之道】2020智算之道复赛题解
发挥不好的一场只包含ABCD ,E 过两日会update!A.数字签到题吧,枚举前三位即可Code:/*** keep hungry and calm CoolGuang!***/#pragma GCC optimize(3)#include <bits/stdc++.h>using namespace std;typedef long long ll;ll n,m,p;int main(){ read(n);read(m); int ans原创 2020-08-09 23:01:14 · 828 阅读 · 3 评论 -
【智算之道】2020智算之道初赛第三场题解
A.水杯一个模拟的水题..Code:int main(){ ll water_templat = -1,water_val = -1; ll L,A,B; read(n);read(L);read(A);read(B); for(int i=1;i<=n;i++){ int opt,x;scanf("%d",&opt); if(opt!=3) scanf("%d",&x); if(opt =原创 2020-07-26 21:24:30 · 2125 阅读 · 5 评论 -
【百度之星】2020初赛第三场 1005(hdu6787) | 经典dp
题目思路:如果掷骰子得话,会最多向前移动11位,所以说如果有连续的11个传送器,那无论结果如何都是过不去得所以题目转换为给你m个传送器,构造长度为n不能有m个连续的传送器得方案数如果没有传送方向,是一个很经典的dp考虑dp j,i,k 代表以i结尾连续的传送器有j个,当前已经放了k个不放:考虑当前位置放还是不放,不放的话应该加上之前连续0~10个:放:首先考虑如何放!第i个连续j个放k个的方案数 应该有dp[i-1][j-1][k-1]转移过来因为此时目的地...原创 2020-07-26 17:50:14 · 437 阅读 · 3 评论 -
【百度之星】2020初赛第一场1007 Mosquito (hdu6749) | 最大流、状态压缩、优化建图
题目大意:中文题意题目思路:首先可以肯定,如果,肯定-1否则的话一定可以跑满所有点。既然一定可以跑满所有点,那么剩下的即为检验问题。可以发现当前的t满足二分的单调性,如果最小的t可以,那么t+1一定也可以。所以说就可以二分当前的时间t,看t是否存在一种合法的分配方案。考虑到一个性质,一个蚊子只能占据一个,所以和网络流相关。接下来就变成了,使用网络流检验当前t是否合法如何建图呢?我们可以这么想:首先S点对k个窗户的流量为a[k],之后每个窗户可以对当前t时间内...原创 2020-07-23 01:43:09 · 416 阅读 · 0 评论 -
【智算之道】2020智算之道初赛第二场题解
A.声控灯主要是考虑分类讨论,代码比较繁琐一直想减少情况还是到不了0ms#pragma GCC optimize(2)#include<stdio.h>int main(){ int T;scanf("%d",&T); while(T--){ int n,m;scanf("%d%d",&n,&m); int num[10]; for(register int i=1;i<=m;i++原创 2020-07-19 21:14:22 · 2740 阅读 · 5 评论 -
【智算之道】2020智算之道初赛第一场题解
A、B都是伪代码A.排队:是个水题吧,但是可以优化一小下:/**Code:**/read(n)for(int i=1;i<=n;i++) read(a[i])for(int i=1;i<=m;i++){ if(!vis[a[i]]{ for(int i=1;i<=n;i++){ vis[k] = 1; } }}ll ans = 0;for(int i=1;i<=n;i++){ ...原创 2020-07-12 22:36:21 · 825 阅读 · 0 评论