09 2021 档案

摘要:题意 题解 数据范围想到复杂度大概 \(O(n^2\log n)\) 。 由于复杂度的提示加上单调性比较明显,不难想到二分答案。 一开始大概能想到一种思路:记录 \(dp(k,i,j)\) 表示前 \(k\) 个节点第一根法杖用了 \(i\) 次,第二根法杖用了 \(j\) 次的可行性,但是显然三维 阅读全文
posted @ 2021-09-29 21:30 conprour 阅读(85) 评论(0) 推荐(0)
摘要:题意 题解 被思维定式坑了... 一开始想的都是怎么用矩阵转移。 等差数列很好转移,矩阵里一个 \(1\) 一个 \(d\) 即可。 组合数不好转移,只能想到 \(C_n^m=C_n^{m-1} \times \frac{n-m+1}{m}\) ,然而由于 \(m\) 是不断变化的,而且矩阵不好维护 阅读全文
posted @ 2021-09-27 08:27 conprour 阅读(155) 评论(0) 推荐(0)
摘要:前言 真不错,保留字挂分真不戳。 T1 做过。 本来 T2 暴力有 $60$pts ,结果用了 c++14 的保留字move直接 RE 了... T3 暴力被卡 TLE 了...正解的分类讨论想出来了但是没想到用树状数组和 set 维护,而且没时间了。 总分 $100$pts. 题解 着重说一下这个 阅读全文
posted @ 2021-09-25 23:26 conprour 阅读(56) 评论(0) 推荐(0)
摘要:题意 题解 首先看到 \(a,b\) 间距离很小,考虑将区间整体左移 \(a\) 位。 (实际上,这个左移的操作在记录为数组下标或者存储数字的时候 \(-a\) ,查询的最大范围是 \(b-a\) 即可) 线性筛处理完素数之后,找到第一个 \(\ge p\) 的素数 \(prime_i\). 对于集 阅读全文
posted @ 2021-09-24 17:45 conprour 阅读(76) 评论(0) 推荐(0)
摘要:题意 题解 肯定和质数筛法有关,但是 \(l,r\) 都很大所以另辟蹊径。 这里有一个常用的切入点:\(l,r\) 之间的距离很小,所以考虑将区间整体左移 \(l\) 位,这样数组可以存下。 对于任何一个合数 \(n\) ,都有一个不超过 \(\sqrt{n}\) 的约数,用 \(j\times p 阅读全文
posted @ 2021-09-24 17:32 conprour 阅读(47) 评论(0) 推荐(1)
摘要:题意 题解 首先面对这种不定方程,先转化成 \(x=k\times y\) 的形式,本题中即 \(y=\dfrac{xn!}{x-n!}\). 设 \(t=x-n!\) ,则 \(y=n!+\dfrac{(n!)^2}{t}\). 那么问题转化成求 \((n!)^2\) 的约数个数。 这里由于 \( 阅读全文
posted @ 2021-09-24 11:56 conprour 阅读(89) 评论(0) 推荐(1)
摘要:总结 突如其来的模拟。 开局先通读题意,T1感觉还行,但是没看出什么性质;T2看起来暴力很好水;T3一眼看到特判,而且期望看起来可做;T4线段树写部分分看起来可行,虽然感觉极限数据会被卡但应该不会太差。用时 30min。 先写T4,线段树板子加一点细节,写完+调完约 40min,自我感觉良好。再看T 阅读全文
posted @ 2021-09-24 11:02 conprour 阅读(40) 评论(0) 推荐(0)
摘要:迭代加深搜索! 阅读全文
posted @ 2021-09-22 21:36 conprour 阅读(140) 评论(0) 推荐(1)
摘要:题意 题目描述 袋子里有 \(n\) 个球。每次依次取出两个,把第二个球涂成第一个球的颜色,然后放回袋里搅匀。你的任务是算出让所有球的颜色相同所需要的取球次数期望。 输入格式 输入仅一行,包含一个长度小于 \(25\) 的字符串,每个字符为一个大写英文字母,代表一个球的颜色。 输出格式 输出仅一行, 阅读全文
posted @ 2021-09-22 07:58 conprour 阅读(126) 评论(0) 推荐(0)
摘要:快乐水题。 阅读全文
posted @ 2021-09-20 23:32 conprour 阅读(299) 评论(0) 推荐(0)
摘要:【水-高精】 阅读全文
posted @ 2021-09-20 22:52 conprour 阅读(39) 评论(0) 推荐(0)
摘要:找了几篇比较好的博客。 阅读全文
posted @ 2021-09-19 23:47 conprour 阅读(36) 评论(0) 推荐(0)
摘要:看似简单的期望问题,实则暗藏玄机。 阅读全文
posted @ 2021-09-18 15:30 conprour 阅读(73) 评论(0) 推荐(0)
摘要:【期望问题初步】 阅读全文
posted @ 2021-09-18 14:11 conprour 阅读(98) 评论(0) 推荐(0)
摘要:题意 题解 可以考虑转化到 KMP 相关问题。 KMP 的常规匹配是看当前字符位是否相同,而本题可以改为当前字符和前一个相同字符的距离是否相同,因为这样的字符串经过反转之后一定能变成相同的。 当前字符到前一个相同字符的距离 \(pre_i\) 数组可以预处理。 注意:当与前一个相同字符的距离大于当前 阅读全文
posted @ 2021-09-17 17:50 conprour 阅读(89) 评论(1) 推荐(1)
摘要:KMP 的灵活运用 阅读全文
posted @ 2021-09-17 14:55 conprour 阅读(252) 评论(5) 推荐(4)
摘要:题意 题解 很水的题啊。 不难想到对于每一个人当作点连边,如果一个人第一次出现就新建一个点。 然后求出每两个点之间的最短路,取最大值,特判是否不连通。 判断一个人是否出现过可以用 Hash,但是感觉 Hash 之后还要开 map 记录数值,干脆直接开map<string,int>. 所以为什么有这篇 阅读全文
posted @ 2021-09-17 10:27 conprour 阅读(161) 评论(0) 推荐(0)
摘要:题意 根据一个递推式不断求出元素,判断这个数出没出现过。 题解 以前只写过邻接表的哈希表,没写过链前的哈希表,贴一下代码。 代码 #include<bits/stdc++.h> using namespace std; #define ll long long const int INF = 0x3 阅读全文
posted @ 2021-09-17 08:45 conprour 阅读(56) 评论(1) 推荐(1)
摘要:题意 现在小泽的手上有 n 道难题,编号分别为 1∼n ,第 i 道题的难度系数是 ai 。 小泽想用这些题出比赛,他会把题目按照编号划分为若干个非空连续区间,每个区间对应了一场比赛。 特别的,如果某场比赛的题目难度系数之和超过了给定的常数 m ,这场比赛会过于毒瘤,所以他不希望出现这样的情况。 定 阅读全文
posted @ 2021-09-17 07:58 conprour 阅读(97) 评论(0) 推荐(1)
摘要:题意 小泽发了一篇博客,由 n 个小写英文字母组成,由于包含违禁词,被自动隐藏。 具体地,违禁词有 m 个,分别为 T1,T2,…,Tm 。 小泽发现,只要博客中,连续地包含了其中违禁词,那么博客就会被自动隐藏。换言之,对于任意 1≤i≤m , Ti 都不能是最终发表的博客 S 的子串。 于是小泽决 阅读全文
posted @ 2021-09-16 17:10 conprour 阅读(124) 评论(0) 推荐(2)
摘要:题意 题解 花了比较长时间的一道题... 一开始有一个思路:开两个懒标记,分别记录区间左右端点加上的值,中间就可以根据等差数列维护 样例顺利通过,但是一交 \(0pts\) ,查了很久之后发现我更新左右端点增加的值的时候把线段树里 \(l,r,x,y\) 的意义弄混,导致 \(lazy\) 异常 简 阅读全文
posted @ 2021-09-16 10:06 conprour 阅读(124) 评论(0) 推荐(0)
摘要:【良心之作】 阅读全文
posted @ 2021-09-14 11:46 conprour 阅读(176) 评论(0) 推荐(0)
摘要:矩阵查询最大值,相当于查询的时候一个矩形拆成$4$个小矩形,和一维$ST$表相差无几 #include<bits/stdc++.h> using namespace std; #define ll long long const int INF = 0x3f3f3f3f,N = 255; inlin 阅读全文
posted @ 2021-09-14 07:39 conprour 阅读(112) 评论(0) 推荐(1)
摘要:qwq 阅读全文
posted @ 2021-09-13 22:58 conprour 阅读(264) 评论(0) 推荐(2)
摘要:#题意 #题解 容易想到:开两个队列分别维护空闲内存块序列的编号$(q1)\(,被占用的内存块的的编号与过期时间\)(q2)$ 同时更新$ocu$数组,记录代码块是否被占用 但是我卡在了细节的地方很久:if(ocu[y]) ocu[y]++,q2.push(mp(y,x)); 询问的时候没有打上判断 阅读全文
posted @ 2021-09-13 15:30 conprour 阅读(42) 评论(0) 推荐(0)
摘要:#题意 #题解 本题不难,就是多种情况分类讨论比较麻烦 一开始我的思路:$map$存下每一个已知年份的编号,对于两个不连续的年份,在中间加入一个降雨量为$-1$的年份表示不知道这个这中间中断的年份的降雨量 对于询问的$[y,x]$,查询对应编号的区间$num[mp_x]-1,num[mp_y]-1$ 阅读全文
posted @ 2021-09-13 10:43 conprour 阅读(137) 评论(0) 推荐(0)
摘要:#题意 #题解 虽然在$RMQ$的章节里,但是这题的重点不在$RMQ$,只是一个优化 考虑如何找到一段完美序列 记录$lst[val]$表示val值上次出现的位置,$pre[i]$表示以$i$为结尾的完美序列的起点 那么转移式很显然,\(pre[i]=max(lst[a[i]]+1,pre[i-1] 阅读全文
posted @ 2021-09-11 16:30 conprour 阅读(96) 评论(0) 推荐(0)
摘要:#题意 #题解 首先可以想到二分答案(二分时间$mid$) 那么对答案有影响的路径就只有花费时间$>mid$的路径 考虑减少一条边,一定是在这些路径的公共部分的花费时间最大的一条边,记为A 如果$最大的路径-w[A]<=mid$,那么说明$mid$可行,否则不可行 如何记录哪些边是公共部分?考虑差分 阅读全文
posted @ 2021-09-11 15:29 conprour 阅读(71) 评论(0) 推荐(1)
摘要:#题意 #题解 首先想想删除边之后直径的变化,原直径的两个端点也一定是新直径的端点之一 再考虑删除边之后新的直径不好确定,把删边操作改成加边操作,这样新的直径一定在原来两棵树的直径的$4$个端点中选,总共$6$种情况 所以先处理出完整的树的相关信息,比如求$LCA$的$f,dis$数组,用来判断新的 阅读全文
posted @ 2021-09-10 19:35 conprour 阅读(263) 评论(0) 推荐(0)
摘要:#题意 #题解 可以很好地巩固倍增基础...(水题) 设计$sum[i][j],dis[i][j]$表示从$i$开始走了$2^j$步路径上的权值和/最小权值,初始值$sum[i][0]=dis[i][0]=w[i]$,转移过程和倍增的转移几乎完全一样 注意一下点是$0\thicksim n-1$ # 阅读全文
posted @ 2021-09-09 22:06 conprour 阅读(147) 评论(0) 推荐(0)
摘要:题意 题解 好题啊...可惜我做的时候就像嗑药了,打了乱七八糟一堆bug... 首先要看出最优路径一定是一个最大生成森林。 最大没得说,因为要尽量让权值大。 证明是森林:对于已经生成的一棵树(或者说森林),如果再加入一条非树边 $c->d$,那么原本树上 $c->d$ 的答案一定比新加入这条边的答案 阅读全文
posted @ 2021-09-09 10:38 conprour 阅读(60) 评论(0) 推荐(0)
摘要:#题意 #题解 这在洛谷上是一道紫题...不枉我费了半个上午 首先可以想到,一个环里的点,要选择的话一定一起选,所以先想到缩点形成一个DAG 考虑如何建边,注意到题目关键:一个软件最多依赖另外一个软件,那么从被依赖想依赖建边,形成的还是一棵树 问题就转化成了:在一个树上每个点都有重量和价值,你有一个 阅读全文
posted @ 2021-09-09 08:14 conprour 阅读(39) 评论(0) 推荐(0)
摘要:题意 题解 此题坑还是很大的。 一开始看到题目所说概率云云,联想到的是类似期望DP之类的方法,苦思冥想之后放弃,几乎没有思路 首先需要转化问题:求出“选出 t 个点覆盖掉所有的环”的方案数和所有选择的方案数(也就是从 n 个点中选 t 个点,即C(n,m)) 那么我们先预处理出组合数的递推 void 阅读全文
posted @ 2021-09-09 07:38 conprour 阅读(177) 评论(0) 推荐(0)
摘要:题意 题解 之前一直以为prim堆优化之后复杂度是O(nlogn)...YY了一发之后不出所料的60pts TLE了qwq(实际上是O(n+m)logn) 算法复杂度高的原因建了很多不必要的边 对于每一维空间,只有相邻的两个点才会建边,所以总边数=n*3 再跑kruskal或者prim都可以了 关键 阅读全文
posted @ 2021-09-07 12:49 conprour 阅读(72) 评论(0) 推荐(0)
摘要:题意 题解 这题我一开始根本没有思路....因为觉得 s , g 两个量会互相影响,没法做最小生成树(其实也是因为没认真看数据范围) 先想暴力: 多个变量可以“定一移一”,就是枚举其中一个的最大值,然后讨论另一个变量(在这里“讨论”就是做最小生成树) 考虑把 g 从小到大排序,每次对小于当前 max 阅读全文
posted @ 2021-09-07 11:55 conprour 阅读(58) 评论(0) 推荐(0)
摘要:题意 题解 这题不是特别难,但是有思维陷阱 题里不断给出各种祖先差异程度的计算方法(其实就是树上距离的求法),不禁让我想着根据 Da+Db=Dc这种形式来判断祖先关系,然后就没有然后了 实际上,不用管加和判断这些东西,因为每次加入最小生成树的都是直系边(因为直系边最短),而当加完直系边之后由于端点都 阅读全文
posted @ 2021-09-07 11:45 conprour 阅读(64) 评论(0) 推荐(0)
摘要:题意 题解 由于奇偶性这种性质比较简单,所以可以考虑一下不同区间的选择对于破解序列有什么影响 很显然,如果 每一个点的前缀和都已知,那么相减即可得出每一个单点的值 而每一个区间 [ L , R ] 可以转化成 sum[R]-sum[L-1] 每一个前缀和已知,就相当于 n 个点的 sum 值都要知道 阅读全文
posted @ 2021-09-07 11:31 conprour 阅读(70) 评论(0) 推荐(0)
摘要:推荐一篇dalao的博客:wind_whisper qwq特别有帮助 题解 题解 神题!!!能够大大加深对KMP的理解qwq 循环节的常用结论:nxt[i] = i - pre[i] (画画图就能推出来) 对于每一个 nxt[i] 分类讨论: p[i]>0: 此时 s[i] = s[p[i]] p[ 阅读全文
posted @ 2021-09-06 17:25 conprour 阅读(58) 评论(1) 推荐(0)
摘要:推荐一篇dalao写的博客:wind_whisper 题意 题解 首先想想题里说的周期和kmp里的 nxt 数组有没有什么关系 对于一个长度为 i 的串,i - nxt[i]就是一个周期的长度(不一定最大) 假设 i - nxt[i] > i/2 ,即一个串的最短(前缀=后缀)的长度一定小于等于这个 阅读全文
posted @ 2021-09-06 15:48 conprour 阅读(68) 评论(0) 推荐(0)
摘要:题意 题解 首先是第一问,看到题感觉是不用Hash,直接用 map<string,int>就可以,但是怀疑常数大 看了题解说先把每个单词的Hash值求出,再用 vis 数组判断是否出现过,但是我想了想这个 vis 数组也得用 map ,就感觉用Hash没什么意义,于是就没用 Hash 第二问,一开始 阅读全文
posted @ 2021-09-06 11:52 conprour 阅读(80) 评论(0) 推荐(0)
摘要:洛谷博客传送门 题意 题解 这题洛谷上有,还是个紫题 根据对称的定义,再看看范围,容易想到二分答案(Hash好像经常和二分结合在一起) 二分部分 但是具体怎么二分? 首先确定,二分成立需要单调性,所以一定是从中心点二分,但是当正方形为奇数的时候中心点在中央的格子,那么偶数呢? 实际上,边长为偶数的时 阅读全文
posted @ 2021-09-06 11:22 conprour 阅读(152) 评论(1) 推荐(0)
摘要:题意 题目描述 如果一个字符串正着读和倒着读是一样的,则称它是回文的。 给定一个长度为 N 的字符串 S,求他的最长回文子串的长度是多少。 输入格式 输入将包含最多 30 个测试用例,每个测试用例占一行,以最多 106 个小写字符的形式给出。 一个以字符串 END(不包括引号)开头的行表示输入终止。 阅读全文
posted @ 2021-09-06 07:55 conprour 阅读(119) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-09-05 23:30 conprour 阅读(1) 评论(0) 推荐(0)
摘要:题意 F. 2.最短前缀 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 提交提交记录返回课程章节 题目描述 字符串的前缀是指以字符串的开头开始的子字符串。 如 carbon 的前缀有:c、ca、car、carb、carbo、carbon。 给定一组单 阅读全文
posted @ 2021-09-05 22:08 conprour 阅读(218) 评论(0) 推荐(0)
摘要:题意 E. 1.单词拼接 题目描述 给定由一些单词组成的词典。 一个单词是特殊的,当且仅当它能由词典里的两个单词拼接而成。 求词典里特殊的单词数。 输入格式 一行一个字符串,表示词典里的一个单词。每个字符串由小写字母组成,每个字符串按字典序排列,每个字符串只会出现一次。 输出格式 一行一个字符串,按 阅读全文
posted @ 2021-09-05 21:52 conprour 阅读(299) 评论(0) 推荐(0)
摘要:前言 周末突然被拉到学校模拟 期望得分:60+30+60+60=210pts 实际得分:60+30+60+0=150pts 题解 T1 conv循环卷积 赛时代码: conv #include<bits/stdc++.h> using namespace std; #define ll long l 阅读全文
posted @ 2021-09-05 15:56 conprour 阅读(82) 评论(0) 推荐(0)