#10 //I [HNOI/AHOI2018]毒瘤】的更多相关文章

题解: 80分做法还是听简单的 对于非树边枚举一下端点状态 然而我也不知道为什么就多t了一个点 具体实现上 最暴力的是3^n次 但是我们可以发现对于i不取,j取 i不取,j不取是可以等效成i不取,j没有限制,这样是2^n 或者直接容斥一下搞i取j取 这样C(n,1)+C(n,2)...=2^n一样的吧 100pts应该是虚树处理一下系数吧 代码: #include <bits/stdc++.h> using namespace std; #define N 300000 #define rg…
题目 神仙题. 首先我们可以把题意转化为图的独立集计数.显然这个东西是个NP-Hard的. 然后我们可以注意到\(m\le n+10\),也就是说最多有\(11\)条非树边. 我们现在先考虑一下,树上独立集计数怎么做. 设\(f_{u,0/1}\)表示\(u\)点选/不选的方案数. 那么转移方程就是: \(f_{u,0}=\prod\limits_{v\in son_u}(f_{v,0}+f_{v,1})\) \(f_{u,1}=\prod\limits_{v\in son_u}f_{v,0}\…
题目传送门 题目大意 给出一个 \(n\) 个点 \(m\) 条边的无向图,问有多少个点集满足点集中任意两点均不存在边相连. \(n\le 10^5,m-n\le 10\),答案对 \(998244353\) 取模. 思路 妙啊!!! 首先我们从树的形态开始考虑,你发现答案其实就是独立集的个数,具体来说我们可以设 \(f_{u,0/1}\) 表示 \(u\) 点选或不选的方案数,可以得到: \[f_{u,0}=\prod_{v\in son_u} (f_{v,0}+f_{v,1}) \] \[f…
题面传送门 神仙虚树题. 首先考虑最 trival 的情况:\(m=n-1\),也就是一棵树的情况.这个我相信刚学树形 \(dp\) 的都能够秒掉罢(确信).直接设 \(dp_{i,0/1}\) 在表示 \(i\) 的子树内选择,\(i\) 选/不选的方案数.转移就 \(dp_{u,0}=\prod\limits_{v\in son_u}(dp_{v,0}+dp_{v,1}),dp_{u,1}=\prod\limits_{v\in son_u}dp_{v,0}\) 即可. 接下来考虑有非树边的情…
题目描述 https://www.lydsy.com/JudgeOnline/upload/201804/%E6%B9%96%E5%8D%97%E4%B8%80%E8%AF%95%E8%AF%95%E9%A2%98.pdf 题解 大意:给出一张n个点n+x条边的无向连通图,x很小,求出这个图上最大独立集的方案数. 感觉就是NOIP保卫王国那题的加强版吧. 暴力的话,我们可以考虑在图上随便找一颗生成树,然后把非树边连接的点设置为关键点,然后2^x枚举这些点的选择情况,每次做一遍树形dp就好了. 如…
挺不错的一个题. 题意即为求一个图的独立集方案数. 如果原图是一棵树,可以直接大力f[x][0/1]来dp. 由于非树边很少,考虑2^11容斥,强制某些点必选,然后再O(n)dp,这样应该过不了. 发现这个容斥本质上是对一些点进行修改,修改的形式是强制它必须选. 直接xjb上一个ddp就没了. 这里由于有可能会/0,考虑维护一下结尾0的个数就行. 复杂度的话,直接乱写是3^11*log^2的,但是实际上我们可以优化加点和删点的顺序. 考虑按照某一个特定的顺序去容斥. 我的想法是一个简单的贪心,每…
[LG4437][HNOI/AHOI2018]排列 题面 洛谷 题解 题面里这个毒瘤的东西我们转化一下: 对于\(\forall k,j\),若\(p_k=a_{p_j}\),则\(k<j\). 也就是说若\(y=a_x\),则\(y\)排在\(x\)前面, 那么我们在原数组编号中\(a_x\)向\(x\)连边可以表示出这种拓扑关系. 那么我们连玩边后肯定是以\(0\)为根的一颗有根树,否则一定会形成一个环,无解. 贪心地想一下,对于权值最小的点,我们肯定让它尽量往前选,那么在它父亲选完后,我们…
P4424 [HNOI/AHOI2018]寻宝游戏 某大学每年都会有一次Mystery Hunt的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生的你,对这个活动非常感兴趣.你每天都要从西向东经过教学楼一条很长的走廊,这条走廊是如此的长,以至于它被人戏称为infinite corridor.一次,你经过这条走廊时注意到在走廊的墙壁上隐藏着nn 个等长的二进制的数字,长度均为mm .你从西向东将这些数字记录了下来,形成一个含有nn 个数的二进制…
gugu  bz lei了lei了,事独流体毒瘤题 一句话题意:任选一个点开始,每个时刻向前走一步或者站着不动 问实现每一个点都在$T_i$之后被访问到的最短时间 Step 1 该题可证: 最优方案必然是从某一格开始后一直等着然后走一圈正好全部访问到 证明: 如果时间倒流那就是从时刻T开始每一时刻向前走或是停着不动,每个元素过了T[i]会消失 如果这样的话你肯定是马不停蹄往前走对吧 所以反过来就是上面的结论 Q.E.D 上面的结论还有其他正确的表示方法,该方法仅供参考 如果您能想出其他证明,那么…
原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建议JSOI的出题人好好学学) #include <bits/stdc++.h> #define N 1000005 #define getchar nc using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*…
正解:虚树+树上dp 解题报告: 传送门! 首先解释一下题意趴,,,语文70pts选手已经开始看不懂题辣QAQ 大概就是个给一个图,求独立集方案,且保证图是联通的,边的数量最多只比点多10 首先思考如果边的数量=点的数量-1,也就是一棵树的时候怎么搞? 直接树上dp就好,f[i][0/1]:选/不选第i个点方案数,转移就f[i][0]=∏(f[son][0]+f[son][1]),f[i][1]=∏f[son][0] 然后考虑多的边怎么搞呢 从上面那个思路自然而然地可以考虑到,可以暴力枚举非树边…
题意 题目链接 Sol 每当出题人想起他出的HNOI 2018 Day2T3,他都会激动的拍打着轮椅 读题比做题用时长系列... \(f[i][a][b]\)表示从根到\(i\)的路径上,有\(a\)条公路未被翻修,\(b\)条铁路未被翻修 然后xjb转移一下 比较好奇为啥不会MLE.. #include<bits/stdc++.h> #define LL long long using namespace std; const int MAXN = 1e5 + 10; const LL IN…
作为一名高二老年选手来补一下我省去年的省选题. D1T1:寻宝游戏 按顺序给出\(n\)个\(m\)位的二进制数\(a_i\),再在最前方添一个\(0\), 给出\(q\)次询问,每次询问给出一个同样长为\(m\)的二进制数\(r_i\), 要求在之前给出的\(n+1\)个二进制数的每相邻两个数的空位添加按位与运算符或按位或运算符, 一共\(n\)个,并使得这个算式得到的值为\(r_i\),求方案数. \(n,q\le 1000,m\le 5000\) 暴力\(30\%\)不提. 对每一位分开考…
原题传送门 实际就是一道简单的树形dp 设f[u][i][j]表示从根结点到结点u经过i条未翻修公路,j条未翻修铁路的贡献最小值 边界条件:f[leaf][i][j]=(A+i)(B+j)C (题目上公式给的是c(a+i)(b+j),而不是a(b+i)(c+j)) 转移方程:f[x][i][j]=min(f[ls][i+1][j]+f[rs][i][j],f[ls][i][j]+f[rs][i][j+1]) (ls,rs表示公路/铁路的起点) 这题有点卡空间qwqwq #include <bit…
Description: W 国的交通呈一棵树的形状.W 国一共有\(n - 1\)个城市和\(n\)个乡村,其中城市从\(1\)到\(n - 1\) 编号,乡村从\(1\)到\(n\)编号,且\(1\)号城市是首都.道路都是单向的,本题中我们只考虑从乡村通往首都的道路网络.对于每一个城市,恰有一条公路和一条铁路通向这座城市.对于城市i, 通向该城市的道路(公路或铁路)的起点,要么是一个乡村,要么是一个编号比\(i\)大的城市. 没有道路通向任何乡村.除了首都以外,从任何城市或乡村出发只有一条道…
题意 题目链接 Sol 首先猜一个结论:对于每次询问,枚举一个起点然后不断等到某个点出现时才走到下一个点一定是最优的. 证明不会,考场上拍了3w组没错应该就是对的吧... 首先把数组倍长一下方便枚举起点,然后就是一个单调队列的模型了.整理一下我们需要求的东西就是这个 \[n - 1 + \min_{i=1}^n i + (\max_{j=i}^{2n} t[j] - j)\] (\(t[j]\)表示第\(j\)个位置出现的时间,其实\(\max\)的上界应该是\(i + n - 1\)的,但是显…
题意 题目链接 Sol 神仙题Orz Orz zbq爆搜70.. 考虑"与"和"或"的性质 \(0 \& 0 = 0, 1 \& 0 = 0\) \(0 \mid 1 = 1, 1 \mid 1 = 1\) 也就是说某一个数\(\& 0\)之后不管之前是什么,现在的值变为\(0\) 某一个数\(\mid 1\)之后不管之前的是什么,现在的值变为\(1\) 继续考虑 \(0 \& 1 = 0, 1 \& 1 = 1\) \(0…
Description 题库链接 给出一个 \(n\) 个点 \(m\) 条边的无向图.求独立集个数. \(n\leq 10^5,n-1\leq m\leq n+10\) Solution 由于返祖边数目很少,比较容易想到把树搞出来然后状压返祖边相连的两个点.需要状压的点的总数最多是 \(2(m-n+1)=22\) 个,假设这些点叫做"关键点". 考虑记 \(f_{u,S}\) 表示在以 \(u\) 为根的子树中选中关键点的状态为 \(S\) 的方案数. 不过这样时间复杂度是 \(O\…
辣稽题目 毁我青春 耗我钱财. 设\(f[x][i][j]\)为从1号点走到x点经过i条公路j条铁路,子树的最小代价. \(f[leaf][i][j]=(A+i)(B+j)C\) \(f[x][i][j]=min(f[ls][i+1][j]+f[rs][i][j],f[ls][i][j]+f[rs][i][j+1])\) 没了. // luogu-judger-enable-o2 // It is made by XZZ #include<cstdio> #include<algorit…
题面 题解: 把题面的限制换成中文: 如果排在第k位的下标 = 排在第j位的值 ,那么k < j 换一个描述方式: 一个值为x的数要排在第x个数后面. 再换一个描述方式: \(fa[i] = a_i\) 仿佛有什么不对劲? 嗯这其实就是一棵树. 并且我们可以发现,这棵树一定以一个虚拟节点0为根,并且有合法排列,也就是树没有环,当且仅当从0开始遍历,可以遍历到所有节点. 且排列合法当且仅当我们在访问一个节点之前,先访问它的父亲,也就相当于在树上走. 因为如果不以0为根,那么由于题面中所说权值大小在…
题目链接 如果\(j<=k,a_{p[j]}!=p[k]\)可以理解为如果\(a_{p[j]}=p[k]\),那么\(k\)一定要放在\(j\)前面,也就是\(a_j\)在\(j\)前面. 于是连边\((a[j],j)\),表示\(a[j]\)在\(j\)前面,如果有环就是无解,如果没有环那么一定是一棵以\(0\)为根的树 根据题意,我们肯定是要尽量把\(w\)小的安排在前面. 于是考虑这样一个贪心: 对于当前最小\(w_i\) 如果\(fa[i]=0\),那么肯定直接选\(i\) 如果\(fa…
颂魔眼中的一眼题我大湖南竟无一人\(AC\) 首先我们考虑一个性质:我们肯定存在一种最优解,满足从某个点出发,一直往前走,不停下来. 证明:我们假设存在一种最优解,是在\(t_i\)的时候到达\(a\)点,那么我肯定会在\(t_i - x(x≥1)\)的时间会到达\(a - 1\)号点 我们假设\(x != 1\),即我们会在\(a-1\)点进行停留,此时那么我们到达\(a - 2\)号点的时间\(<t_i - 2\),到达\(a-3\)号点的时间\(<t_i - 3\) 那么如果我有一个点\…
题目 我们要求出\(l_i,r_i\)表示\(i\)最远能够到达的最左边和最右边的格子. 首先有一个比较简单的暴力,就是每次我们选择一个格子,然后从当前格子开始往左右暴力扩展,找到能够到达的最远的格子. 然后对于这个暴力,我们有一个小小的优化:就是假如我们从左往右处理,当前的点是\(i\),新扩展到了一个左边的节点\(j\),那么我们可以直接拿\(l_j\)赋给\(l_i\),如此重复.右边同理. 这样的暴力是可以被卡成\(O(n^2)\)的.但是题目数据水所以可以通过. 现在我们通过一些优化来…
luogu 问题本质是把\(a_i\)作为\(i\)的父亲,然后如果有环就不合法,否则每次要取数,要满足取之前他的父亲都被取过(父亲为0可以直接取),求最大价值 贪心想法显然是要把权值大的尽量放在后面,这等价于把权值小的尽量放在前面.所以如果当前最小的数没有父亲,显然直接取出来最优;如果有父亲,那么这个数应该在它的父亲被取之后马上取出来.这时我们把这两个点合并.之后重复此操作知道所有点被取完,就能得到答案 还有个问题是两个点合并后怎么取权值.两个点合并相当于两个序列合并,序列分别记为\(\{a_…
问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H每把锁的钥匙在哪个房间里(每把锁有且只有一把钥匙与之对应),并作出p次指示:第i次让小H从第\(S_i\)个房间出发到\(T_i\)个房间里.但是小G有时会故意在指令中放入死路,而小H也不想浪费多余的体力去尝试,于是想事先调查清楚每次的指令是否会存在一条通路. 你是否能为小H作出解答呢? 输入格式…
传送门 Luogu 解题思路 这是一道 \(O(n^2)\) 暴力加上 \(\text{random_shuffle}\) 优化 什么鬼 就可以 \(\text{AC}\) 的题. 但还是要讲一下 \(O(n)\) 的正解. 算了我不讲了咕咕咕,可以去这里 细节注意事项 有点难想,但是并不难写 参考代码 #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib>…
传送门 Luogu 解题思路 考虑树形 \(\text{DP}\) 设状态 \(dp[u][i][j]\) 表示从首都走到点 \(u\) ,经过 \(i\) 条公路,\(j\) 条铁路的最小不方便值. 对于叶子节点也就是村庄,直接初始化,对于非叶子节点也就是城市,就从两个儿子向上转移. 而现在的一个问题就是:我们的 \(dp\) 数组根本开不下. 我们不得不优化空间. 考虑到一个性质:每次的答案都是从儿子向上合并,合并过后的节点就没用了. 所以我们只需要在dfs的过程中给每个节点记一个 \(df…
题面传送门 开始 WA ycx 的遗产(bushi 首先可以将题目转化为图论模型:\(\forall i\) 连边 \(a_i\to i\),然后求图的一个拓扑序 \(b_1,b_2,\dots b_n\) 使得 \(\sum\limits_{i=1}^niw_{b_i}\) 最小.显然如果原图出现环就 \(-1\) 了.否则原图一定是一棵森林. 然后我就在那儿想各种乱搞,包括但不限于 DP.贪心之类,然后都假掉了 我们知道有个东西叫排序不等式,它是说 \(\forall a_1\leq a_2…
题目描述 https://lydsy.com/JudgeOnline/upload/201804/%E6%B9%96%E5%8D%97%E4%BA%8C%E8%AF%95%E8%AF%95%E9%A2%98.pdf 题解 这道题其实是让我们对于每个位置,求出它的一个合法区间. 先考虑如果所有的限制都满足y<=x的限制,说明如果我们如果从一个点出发,就不用来回跑腿了,直接一路向右走就好了. 那么这时对于每个点,它能扩展到的最左的点就是他向左遇到的第一个门,至于右端点,我们可以倒着扫描一个序列,维护…
一个结论:一定存在一个最优解只走一圈.否则考虑从最后一个结束位置开始一定可以达到相同效果 画个图,类似是一种斜线感觉 考虑一个高度贡献的最高点 对于i开始的连续n个,答案是:max(Tj-j)+i+n-1 令ai=Ti-i 断环成链复制一倍,后面的ai只能更小,所以变成后缀:max(aj)+i+n-1 求ans=min(max(aj)+i+n-1) 还是不行 我们反过来考虑一个j会贡献的最小的i 如果一个j是整个后缀部分的最大值,那么贡献的最小的i就是j前面第一个大于aj的位置 如果不是,那么没…