题目链接 题意为求出树上任意点对的距离对3取余的和. 比赛上听到题意就知道是点分治了,但是越写越不对劲,交之前就觉得会T,果不其然T了.修修改改结果队友写了发dp直接就过了Orz. 赛后想了想维护的东西太脑残了,以为像洛谷板子题一样暴力维护就可以,实则被卡死. 赛后的想法是维护距离当前重心的距离对3取余后的距离和以及个数.然后统计的时候枚举两个点的距离取余值,然后统计贡献. 注意下传的时候要消除重复的贡献. 代码丑陋请见谅QAQ #include<bits/stdc++.h> using na…
ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval 题目大意:给一个长度为n,值域为[1, n]的序列{a},要求支持m次操作: 单点修改 1 pos val 询问子区间中某个值域的数的个数,连续的相同数字只记为一个.(即统计数字段的个数) 2 L R x y 数据范围: 1 ≤ n,m ≤ 2×10^5 1 ≤ a[i] ≤ n 解题思路: 连续重复的数字只记一次.所以考虑将每个数字段除第一个出现外的数字都删去(记为0).在读入操作的时候暴力模拟,同时维护…
ACM-ICPC 南昌网络赛F题 Megumi With String 题目描述 给一个长度为\(l\)的字符串\(S\),和关于\(x\)的\(k\)次多项式\(G[x]\).当一个字符串\(str\)是S的子串时,定义\(str\)的\(value\)值为\(G[length(str)]\),否则\(value=0\).一个字符串的\(power\)值定义为其所有子串的\(value\)之和.每次向\(S\)末尾添加一个字符,重复\(m\)次.求每次添加字符后,一个长度为\(n\)的随机串\…
这道题让我差点怀疑自己高考没考过物理 题意中 he measures the resistance of any two endpoints of it, the resistance values are all 2a2a2a 指的是在三角形中电阻为 2a2a2a 而不是边上的电阻为 2a2a2a 实际上每条边的电阻R为 1R+12R=2a\frac{1}{R} + \frac{1}{2R} = 2aR1​+2R1​=2a 可以求得R=3aR = 3aR=3a 所以可以得到递推公式 an+1=…
https://www.cnblogs.com/31415926535x/p/11520088.html 啊,,不在状态啊,,自闭一下午,,都错题,,然后背锅,,,明明这个简单的题,,, 这题题面不容易看懂,,大致意思是给你一张图,,然后从1节点开始可以任意的走,, 有些节点是 monster 节点,,这样的节点总共只能走一次,,其他的点有一个糖果,问最大的取得糖果的期望 解法很简单,,先求出从1可以不经过 monster 的点的个数,,也就是1的联通块,, 然后对于每一个和1联通块的 mons…
这题.....队里都没怎么训练差分,导致败北...写了一堆线段树嘤嘤嘤,到最后也是超时,比赛结束后看到了差分的思想于是就去学了一手. 其实了解差分思想的一眼就能看出来是差分了.但是如果对n差分的话很明显会T呢,所以我们考虑从m组询问入手. 要不我先讲一下我目前了解的差分吧. 直白说的话,差分就是用一个差分数组mark保存val[i] - val[i - 1]的值,然后利用差分的性质就可以很方便的解决一类问题. 先说一个差分的性质.差分数组的前 i 项和就是原数组元素val[i],这个想一下想不出…
题目链接 题意,求出合法的长度为n的字典序第k小字符串,合法的定义为除了最后一位,每一位的取值范围为'A'到'A'+pos-1,而最后一位的取值范围'A'到当前字符串最大值+1. 队友tql,Orz 一开始就想爆搜,但是不知道如何判断当前位为X时的合法字符串个数.然后队友就莽过去了Orz. 大致做法就是类似数位dp的方式预处理出第i位为j时有多少合法字符串,这样求答案时就可以直接判断能否满足第k个,满足就继续搜下去,不满足就k-dp[i][j]. #include<bits/stdc++.h>…
题目链接 2019.9.2更新 第二天睡醒想了想发现好像搜一遍就可以过,赛时写的花里胡哨的还错了,太菜了QAQ #include<bits/stdc++.h> using namespace std; typedef long long ll; ; struct node { int s, e, next; }edge[maxn]; int head[maxn], len; void init() { memset(head, -, sizeof(head)); len = ; } void…
这题看了三个月,终于过了,第一次看的时候没学树形DP,想用点分治但是不会 后来学了二次扫描,就有点想法了.... 这东西也真就玄学了吧... #include<iostream> #include<cstring> #include<vector> #include<algorithm> using namespace std; typedef long long ll; const int maxn = 1e5 + 7; const ll mod = 1e…
题目传送门 题意:求一颗树中所有点对(a,b)的路径长度,路径长度按照模3之后的值进行分类,最后分别求每一类的和 分析:树形DP \(dp[i][j]\) 表示以 i 为根的子树中,所有子节点到 i 的路径长度模3等于 j 的路径之和 \(c[i][j]\) 表示以 i 为根的子树中,所有子节点到 i 的路径长度模3等于 j 的点数 \(ok[i][j]\) 表示以 i 为根的子树中,是否有子节点到 i 的路径长度模3等于 j 每次只考虑所有经过根 x 的路径,并且路径的一个端点在 x 的一颗子…