7.6 NOI模拟赛 灯 根号分治】的更多相关文章

比较容易想的题目~ 容易发现 点亮一种颜色的贡献=新增灯的数量-已经存在的边的条数. 用线段树维护并不容易.暴力的话复杂度是\(Q\cdot n\)的. 考虑根号分治 只单纯考虑度数<B的点的话 每次进行暴力 复杂度O(B). 考虑大于B的点的话 需要思考一下贡献如何快速求出. 这类点显然只有\(\frac{2n}{B}\)个 统计大于对大于的点的话复杂度O(B). 考虑大于和小于的贡献发现不能暴力了 考虑这个小于其实是之前的小于的点对当前的贡献. 那么当前的小于可以提前对这些点的贡献进行统计就…
正题 题目链接:http://noi.ac/problem/2266 题目大意 给出\(n\)个点的一棵树,有一些边上有中转站(边长度为\(2\),中间有一个中转站),否则就是边长为\(1\). \(m\)次询问一个东西从\(x\)出发走到\(y\),每隔\(k\)步中转站会关闭一次(\(k\)的倍数步走完后不能在中转站上).求在关闭多少次以内可以到达 \(1\leq n,m\leq 10^5\) 解题思路 发现最多只需要走\(2n\)步,然后每隔\(k\)步关闭一次,所以可以考虑根号分治. 先…
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧张起来!!! 好了不扯淡了... -------------------------------------------------------------------------------------------------------------------------------------…
算是一道比较新颖的题目 尽管好像是两年前的省选模拟赛题目.. 对于20%的分数 可以进行爆搜,对于另外20%的数据 因为k很小所以考虑上状压dp. 观察最后答案是一个连通块 从而可以发现这个连通块必然存在一个深度最浅的点且唯一 所以随便找一个点做根然后对自己子树内寻找答案就可以是正确的. 考虑另外的30%的数据k<=3 可是颜色数最多可以有n个 不知道哪个是最终答案. 一次状压dp的复杂度:\(2^{2k}\cdot n\) 容易得到可以暴力枚举一下 然后要做 \(C(n,3)\) 这样会TLE…
LINK:因懒无名 20分显然有\(n\cdot q\)的暴力. 还有20分 每次只询问一种颜色的直径不过带修改. 容易想到利用线段树维护直径就可以解决了. 当然也可以进行线段树分治 每种颜色存一下直径的端点即可. 考虑100分. 考虑到直径两个端点有区间可加性 所以直接外面套一个线段树维护区间端点即可. 修改采用上述做法两种均可.然后就做完了. code //#include<bits/stdc++.h> #include<iostream> #include<cstdio…
题目 WZJ题解 大概就是全场就我写不过 $FFT$ 系列吧……自闭 T1 奶一口,下次再写不出这种 $NTT$ 裸题题目我就艹了自己 -_-||| 而且这跟我口胡的自创模拟题 $set1$ 的 $T3$ 差不多啊……我之前口胡那题甚至还改简单了点(因为忘了 $FFT$ 可以套分治优化). 注意,分治 + $FFT$ ≠ 分治$FFT$ !!! 分治 + $FFT$ 是用分治来卷一堆背包,并且这些背包的总大小是祖传级别的!!! 分治$FFT$ 跟 $FFT$ 求的式子都不一样. 基础知识:n点无…
T1 Article 给 $m$ 个好串,定义一个字符串分割方案是好的当且仅当它分割出来的子串中"是好串的子串"的串长占原串串长超过 85%,定义一个好的分割方案的权值为这种分割方案中每个"是好串的子串"的子串的最短长度,给 $n$ 个询问串,对每个询问串求最大权值 $n,m \leq 10^5, \sum |S|,\sum |T| \leq 10^6$ sol: 二分最短长度 $L$,做一个 dp $f_i$ 表示前 $i$ 位字符串最多的"是好串的子串…
好像只有一个串串题可以做... 不会 dp 和数据结构啊 QAQ 10 + 20 + 100 = 130 T1 一棵树,每个点有一个能量的最大容量 $l_i$ 和一个增长速度 $v_i$,每次可以选一个点,给 q 个时刻,每次把这个子树里和它距离不超过 k 的点的能量全都拿走,求每次拿走了多少 $n,q \leq 152501$ $Time \space Limit : 4s$ sol: 暴力常数小即可 70,常数大(我)只有 20 被 yyc 爆踩辣 (为什么你会这么熟练啊!你到底写过多少暴力…
打开题一看,咦,两道数数,一道猫式树题 感觉树题不可做呀,暴力走人 数数题数哪个呢?感觉置换比矩阵好一些 于是数了数第一题 100 + 0 + 15 = 115 T1 bishop 给若干个环,这些环上一共有 $n$ 个点,在这 $k$ 个点上等概率放 $k$ 个人,一个点最多放一个人,求每个环都至少有一个点的概率,膜 998244353 $n,k \leq 10^5$ sol: 考虑生成函数,一个环如果有 $size$ 个点,它的答案的生成函数 $F = \sum_{k=1}^nC_{size…
得分非常惨惨,半个小时写的纯暴力 70 分竟然拿了 rank 1... 如果 OYJason 和 wxjor 在可能会被爆踩吧 嘤 T1 欧拉子图 给一个无向图,如果一个边集的导出子图是一个欧拉回路,则 ans 加上这个边集边数的平方,求 ans ,膜 998244353 $n,m \leq 152501$ sol: 考虑如果边数不是平方,而是一次方,那对于每个边,它对 ans 的贡献就是强行选它的方案数 如果是平方,贡献就是枚举两个边 $x,y$ ( $x,y$ 可以相同),计算强制选它们的方…
题目 这里必须标记一下那个傻逼问题,再不解决我人就没了! 先放一个 $T3$ $20$ 分暴力 #include<bits/stdc++.h> #define rep(i,x,y) for(int i=(x);i<=(y);++i) #define dwn(i,x,y) for(int i=(x);i>=(y);--i) #define rep_e(i,u) for(int i=hd[u];i;i=e[i].nxt) #define lc tr[o].l #define rc tr…
LINK:graph HDU题库里的原题 没做过自闭. 考虑dp 设\(f_{i,j}\)表示前i个点构成j个联通块是树的方案数. 对于一次询问答案即为\(\sum_{j}f_{n,j}j^k\) 考虑如何dp出来 显然每次枚举1号所在的连通块的大小 考虑这个连通块是否构成树 即可. 具体转移不再赘述 需要预处理一下i个点的树的个数 i个点的连通块个数 i个点不是树是连通块的个数. 复杂度\(n^3\) 利用分治NTT来优化可以到 \(n^2log^2\)比较繁杂且不是正解. 正解当然是考虑生成…
LINK:5.15 T1 对于60分的暴力 都很水 就不一一赘述了. 由于是询问所有点的这种信息 确实不太会. 想了一下 如果只是询问子树内的话 dsu on tree还是可以做的. 可以自己思考一下. 如果强行dsu的时候做 会发现点对和点对之间难以解决. 考虑正解 点分治: 当x为分治中心还是需要统计点对和点对之间的贡献. 和刚才几乎一样.不过这个时候可以发现 需要对每个点都求一个答案. 对于深度为w的点 那么 贡献为\(\sum_{j=w}^{n}c_{j-w}a_j\) 其中\(c_x\…
正题 题目链接:http://noi.ac/problem/2007 题目大意 \(n\)个格子排成一排,每个格子有一个\(0/1\)和一个颜色.开始每个格子都是\(0\),\(q\)次操作取反一个颜色的所有格子的\(0/1\),然后询问\(1\)的格子构成的连通块数量. \(1\leq n,q\leq 10^5\) 解题思路 可以理解为总共的\(1\)格子数减去相邻的\(1\)格子对数. 转换一下模型,每队相邻的颜色\(x,y\)之间连接一条边. 现在问题变为了每次删除或者加入一个点,求连通子…
T1 有and,xor,or三种操作,每个人手中一个数,求和左边进行某一种运算的最大值,当t==2时,还需要求最大值的个数. test1 20% n<=1000 O(n^2)暴力 test2 20% 运算为xor ,可以建立trie树,贪心的走,并记录到达每个节点的个数 test3 : 拿and举例,会发现当第i个数的j位是1时,我们希望走1,而是0时,0和1均可 所以考虑trie树的边一个为1,一个为1+0 但如果这样将整棵trie树全部建出复杂度会达到2^16*n 所以我们分开,前八位暴力统…
看到成绩的时候我的内心** woc第一题写错了呵呵呵呵呵呵呵呵 人不能太浪,会遭报应的** ------------------------------------------------------------------------------------------------------ T1: 傻逼题没A还是回家种田好了…
终于A题啦鼓掌~开心~ 开考看完题后,觉得第二题很好捏(傻叉上线 搞到十一点准备弃疗了然后突然发现我会做第一题 于是瞎码了码,就去准备饭票了... 好了,停止扯淡(就我一个我妹子每天不说话好难受QAQ ---------------------------------------------------- T1 题意:huffman树的过程,只不过不贪心取,随机取,问最后的期望结果 好像很多人做对的样子.. 发现其实结果和每个数是什么是没有关系的,而且每个数对答案的期望贡献是相同的 于是我们可以…
深深的感受到了自己的水 -------------------------------------------------------------------------------------------------------------------------- T1: 题意:一棵树,有k个关键点,求分成连通块,每块至少一个关键点,使连通块最大最小. woc我为啥没想到二分,不懂啊,考试的时候是在梦游吗 二分后判断是否可行 就是一个简单的树上的贪心 可以先bfs一遍倒着来,max表示改点最…
DeepDarkFantasy 从东京出发,不久便到一处驿站,写道:日暮里.  ——鲁迅<藤野先生> 定义一个置换的平方为对1~n的序列做两次该置换得到的序列.已知一个置换的平方,并且这个结果是一个排列,求该置换. 输入第一行一个数n表示排列长度,接下来一行n个数描述排列. 有解则输出一行n个数表示原排列.否则输出一行一个-1. 测试点编号 特征 0~1 n<=10 2~9 n<=1000000 [题解] 注:由于置换和排列在数学表现形式上是一样的,于是下文不对此进行详细区分. 首…
题目 题解(有些小错误) H老爷的简短题解 请无视题目 $pdf$ 的第二行,信那句话的人都已经上清华了 听说大老爷切了 $250+$ 分,然后发现是两个人分着写三道题的,然后第一题还流假了…… $xswl$ T1 $10\%,\space n\le 16$ 枚举 $20\%,\space K\le 10$ 发现影响每个位置的决策只有前 $k$ 个,将每相邻 $k$ 个位置压缩成一个二进制状态,做 $DP$. $20\%,\space Q=0$ 分数规划? 强行钦定初始时全部选择正立表演,第 $…
题目 WZJ题解 T1 T2 T3 后缀自动机+($parents$ 树)树链剖分 发现有大量子串需要考虑,考虑摁死子串的一端. 首先,这题显然是一道离线题,因为所有的询问都是 $1$ 到 某个数,也就是一个前缀和,完全可以递推处理. 所以先把所有的询问按 $m$ 从小到大排序. 然后我们画画 $KMP$ 树,发现一些神奇的性质. 设虚边下面那个点为新加入的一个点(字符),如果这个点的编号(编号 即插入的这个字符是原串的第几位) 比这棵树上面原有的那些点的编号都大的话,那它一定会成为叶子节点.…
Description 小A有N个正整数,紧接着,他打算依次在黑板上写下这N个数.对于每一个数,他可以决定将这个数写在当前数列的最左边或最右边.现在他想知道,他写下的数列的可能的最长严格上升子序列(可由不连续的元素组成)的长度是多少,同时他还想知道有多少种不同的最长的严格上升子序列. 两个子序列被认为是不同的当且仅当:两个子序列属于两个不同的写序列方案(两个写序列方案中有至少一步是不一样的)或两个子序列位于同一写序列方案的不同位置. 由于结果可能很大,所以小A只需要知道最长严格上升子序列的方案数…
Description Mirada生活的城市中有N个小镇,一开始小镇之间没有任何道路连接.随着经济发展,小镇之间陆续建起了一些双向的道路,但是由于经济不太发达,在建设过程中,会保证对于任意两个小镇,最多有一条路径能互相到达.有的时候Miranda会从某个小镇开始进行徒步旅行,每次出发前,她都想选择一个她能到达的最远的小镇作为终点,并且她在行走过程中是不会走回头路的,为了估算这次旅行的时间,她会需要你告诉她这次旅行需要的时间会是多少呢?可以假设通过每条道路都需要单位时间,并且Miranda不会在…
Description Alice和Bob在玩一个游戏,给出一张n*m的棋盘,上面有一些点是障碍,游戏的开始,Alice选定棋盘上任意一个不是障碍的格子,并且将一枚棋子放在其中,然后Bob先手,两人轮流操作棋子,每次操作必须将棋子从当前位置移动到一个相邻的无障碍且未经过的格子(即每个格子不允许经过两次),不能操作的人输,如果两人都按照最有策略操作,请问初始时Alice将棋子放在哪些格子上有必胜策略.   Input 第一行,两个正整数n,m 接下来输入一个n*m字符矩阵,n行m列,’.’表示空的…
目录 题目 考场思考 正解 题目勾起了我对我蒟蒻时代的回忆,虽然我现在也蒟蒻 题目 点这里 可能链接会挂,在网上搜题目就有. 毕竟 \(BZOJ\) 有点老了... 考场思考 本来以为十分友善的一道题...哎... 考试的时候这样想的: 定义 \(ptr[i]\) 表示从第 \(i\) 位开始,往右边遇到的第一个大于 \(a[i]\) 的数的下边. 考虑每次一轮就是把 \(a[i]\) 放到 \(ptr[i]-1\) 的位置,这样一共需要 \(ptr[i]-1-i\) 次 \(swap\) 操作…
LINK:H2O 这场比赛打的稀烂 爆蛋. 只会暴力.感觉暴力细节比较多不想写. 其实这道题的难点就在于 采取什么样的策略放海绵猫. 知道了这一点才能确定每次放完海绵猫后的答案. 暴力枚举是不行的.而我们又想不到怎么做? 此时需要考虑一维的情况 化简问题 在数轴上进行贪心. 可以发现全局最大值挡住了左右两边 也就是说左右两边是完全独立的. 继续思考 递归左边此时区间全局最大值也是如此. 一个容易观察到的是 l和r相邻 较大的那个一定在较小之后选择. 那么其实就是递归所有的地方来比较 从而进行选择…
LINK:03colors 这道题虽然绝大多数的人都获得了满分 可是我却没有. 老师讲题的时候讲到了做题答的几个技巧 这里总结一下. 数据强度大概为n=5000,m=60000的随机数据. 老师说:一部分题答是要观察数据的性质 投入时间越多得分越多. 一部分题答没有什么特点考验选手的算法的优秀程度. 不管对于前者还是后者 都可以写一个通解来先使得自己活得50~80分. 对于后者是这样的 对于前者 观察性质10几分钟 写代码十几分钟 30分钟获得10分确实不太值得. 他交了一种随机方面比较优的方法…
LINK:树论 不愧是我认识的出题人 出的题就是牛掰 == 他好像不认识我 考试的时候 只会写42 还有两个subtask写挂了 拿了37 确实两个subtask合起来只有5分的好成绩 父亲能转移到自己的子树内部的一点所以要从叶子结点往根考虑. 一个棋子的时候 单独某个点的SG函数不难推 这个点可以放到儿子任意一点 而儿子的SG函数值已知就很容易推出来了. 当然叶子结点的SG函数值为0. 显然整棵树的SG函数为异或和 可以看成若干个不交的游戏的组合. 考虑某个点两个棋子的时候的SG函数 经过不断…
LINK:生成树 这场比赛我打的真失败 T3是比较容易的 却一直刚 那道"数论" 10分其实搜一下全排列. 30分容易想到对边进行装压dp. 不过存在一些细节 可以对于一个连通块的壮大进行装压 也就是每次需要联通两个块的时候使用关键边 然后再这两个块之间加边知道加满需要其他边. 复杂度 \(2^{21}\cdot 21\cdot 6\) 可能能过或许是我的做法不太行? 值得一提的是这样是无标号的需要最后乘以一个阶乘. 可以发现之所以装压边是为了防止 一些边的添加使得最小生成树变化. 可…
LINK:qiqi20021026的T1 考场上只拿到了50分的\(nq\)暴力. 考虑一个区间和一个区间配对怎么做 二分图最大带权匹配复杂度太高. 先考虑LCS的问题 常见解决方法是后缀数组/trie树. 一个贪心是 每次让贡献最大的一对配对是最优的策略. 具体证明可以利用扰动法 或者观察法. 即设\(p,q,l,r\) 分类讨论一下情况就行辣 怎么证明全局最优?可以发现任意两个匹配都是这样最优 交换会变得更差 这样应该可以说明全局最优了吧? 这个贪心直接做复杂度还是很高 可以考虑trie树上…