补题
文章平均质量分 83
canxuezhinuanyang
这个作者很懒,什么都没留下…
展开
-
A - Appearance Analysis Gym - 101173A
https://vj.e949.cn/ac69a6cced5131fcb0617bc659755d0e?v=1540621216 题目大意就是问以# 分割的窗户有多少种,一个窗户以旋转90度的整数倍后能够完全的与另一个窗户重合则这两种窗户是同一种 分析,实际上我们只要把每个窗户的所有旋转状态求出来 然后用map记录最后求出总数除以每个窗户的状态数就是结果, 关键在于怎么存储每种状态 刚...原创 2018-11-01 17:34:06 · 165 阅读 · 0 评论 -
2019杭电多校第六场(C/E)
C:求出本质不同的回文串中能构成一个串为另一个串的子串所有字符串对的pair数 做法: 考虑每个点和他的fail点的贡献 , 在偶回文树和奇回文树上分别dfs, 求出该点和他的子节点的size, 然后该点的贡献就等于该点和他的fail点的未标记数,因为某个点和他的fail 点一定是该点的子节点的子串,那为什么不在fail链上继续往前找,因为根据回文树的性质,在一个节点fail链上往前找最后一定会...原创 2019-08-07 22:20:29 · 176 阅读 · 0 评论 -
2019牛客第三场(D/F)
D.Big Integer 题意: 当1<=p,n,m<=1e9时 求有多少对满足 做法: 考虑 则 则 Case1(p不为2,5,3) 然后由欧拉定理当p和10的时候有 则我们知道在i为0和p-1时 所以在0~p-1中间有没有可能有一个i=d 满足这个式子 ...原创 2019-07-26 12:24:58 · 169 阅读 · 0 评论 -
2019牛客第二场补题(F/H)
F. 把2*n个人分成 两个人数相等的队伍,每两个人之间都有一个竞争值,当分成两个队伍后,两个队伍之间的竞争值之和最大为多少 做法: 对每个人进行搜索将它放在a或b队里,每放一个人就计算一下当前的竞争值,这样往后搜索的时候就可以利用一下前面的竞争值,避免重复计算,(还有一个小优化,可以把第一个人固定放在第一个队伍里,可以减少一半的状态空间) #include<bits/stdc++....原创 2019-07-22 00:07:28 · 185 阅读 · 0 评论 -
2019牛客多校第四场A/K
A.给你一张n个点n-1条边的图,和k个关键点。求一个点到所有关键点距离最大值的最小为多少。 乍一看像是对答案二分,但是考虑两个相距最远的关键点,假设他们的距离为d,那么答案肯定为(d+1)/2 如果有一点到中心点的距离超过了(d+1)/2 ,那么这个点会成为最远关键点对中的一个。矛盾。 所以题目就变成了如何求最远的两个关键点的距离。 考虑如何求树的直径,首先取一个根节点通过bfs找到离他...原创 2019-07-29 20:01:11 · 243 阅读 · 0 评论 -
2019杭电多校第一场题解
1004 题意: 给你n+1辆车的车头距离终点的位置和车身长度, 以及每辆车的初始速度, 车子不会加速,当遇到前面一辆车的时候车子会瞬间减速并且和前面一辆速度相等,并且通过了终点线的车辆并不会停下来会继续行驶,问第0辆车的车头到达终点线所需要的总时间。 理解:当第0辆车经过终点线的时候无疑只有两种状态,1.以原来的速度行驶,2.与前面一辆车靠在一起并且以前面一辆车的速度行驶 做法1: 注意...原创 2019-07-23 23:33:16 · 279 阅读 · 0 评论 -
max answer 和 牛客多校第四场C
max answer 题意:给出一组数,求一个区间(l,r)中所有数之和与这个区间的最小数之积最大 做法:对于每个数a[i], 我们可以求出满足a[i]是最小数的 合法区间左边界l[i] 和 右边界r[i]; 然后对于每个a[i]接下来我们只要求 包含a[i]在内的在范围l[i]到r[i]内 最大子序列和为多少. 对于l[i]和r[i]我们可以通过单调栈求出, 每次加入一个元素的时候如果...原创 2019-07-28 23:40:30 · 170 阅读 · 0 评论 -
Educational Codeforces Round 69 D
题意: 求 做法: 可以发现 在m,m*2,m*3 长度的区间内的K是 相等的分别为k ,k*2,k*3 所以我们可以在余数为0~m-1 的位置枚举起点, 然后以每个点作为终点求出cost 然后每到达一个可能为新的起点 维护最小前缀和,将该点作为新的起点或者还是继续作为终点 每次计算得到的cost-维护的最小前缀和便可以得到以i, i+m, i+m*2... 为起点的最大的连续...原创 2019-07-23 22:09:12 · 126 阅读 · 0 评论 -
codeforces Round#563 D
http://codeforces.com/contest/1174/problem/D 任意的两子段异或和 的 异或 等价于任意两个 前缀异或和 si 和 sj , si≠sj 并且 si^sj≠x 也等价于si只能出现一次 si^x 也只能出现一次,所以只要从1到2的n次方 进行枚举前缀异或和 然后 用 s[i+1] ^s[i] 求出 a[i+1] 就是结果 代码: #incl...原创 2019-06-04 16:51:26 · 130 阅读 · 0 评论 -
ACM ICPC 2008–2009, Northeastern European Regional Contest St Petersburg –Problem J(补题)
题意就是给你很多个字符串, 让你找到一种大写字母的替换方式,使替换后的每个字符串的字母为元音字母和辅音 字母交替出现。求出替换后的字符串。 比赛的时候没有明确的想法 以为必须要O(n)的算法(果然该暴力还是要暴力) 赛后看题解, 枚举每个字母当做元音然后 直接判断是否满足条件,满足就输出,终止循环, 否则就继续 循环结束 就输出 impossible ; 似乎还可以用二分图染色(看不懂代码...原创 2019-04-06 22:34:46 · 260 阅读 · 0 评论 -
Codeforces Round #577 (Div. 2) D(DP)
给你一张n*m个的表格和k个点有宝藏, 以及只有b列的位置可以往上走,在其他列只能往左或者往右走,每次只能往左往右或者往上选择一个方向走一格,问从(1,1)找到所有宝藏最少需要多少步 做法: 考虑走完每层所有有宝藏的时候,必然是位于最左边有宝藏的位置和最右边有宝藏的位置 设dp[i][0], dp[i][1] 分别为从1到第i层找到所有宝藏后位于最左边宝藏的位置时的最短路径和最右边宝藏位置的...原创 2019-09-17 23:28:19 · 131 阅读 · 0 评论