# HNOI2012 ~ HNOI2018 题解】的更多相关文章

HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组合数学.高精度 因为男生没有限制,首先把男生排成一列. 然后分情况讨论: 两个老师之间有男生: 首先把两个老师插入到\(n\)个男生中,方案数\(\binom{n+1}{2}\) . 然后把女生插入到老师与男生中,方案数\(\binom{n+3}{m}\). 两个老师之间无男生: 那么两个老师之间只…
在此处输入标题 标签(空格分隔): 未分类 重做了一遍,本来以为很快的,结果搞了一天... 寻宝游戏 可以发现只有\(\&0\)和\(|1\)会对答案有影响 那么对于每一位,我们只要知道最后一个\(\&1\)和最后一个\(|1\)谁近就可以了. 发现并不好做,我们可以把操作串也当成\(01\)串,如果\(\&=0,|=1\)好像并没有什么用,于是我们令\(\&=1,|=0\)发现这样刚好满足了我们需要的信息,设\(op\)为操作串,这一位串为\(a\),如果\(op\)字典…
https://www.lydsy.com/JudgeOnline/problem.php?id=2732 https://www.luogu.org/problemnew/show/P3222#sub 沫沫最近在玩一个二维的射箭游戏,如下图 1 所示,这个游戏中的 x 轴在地面,第一象限中有一些竖直线段作为靶子,任意两个靶子都没有公共部分,也不会接触坐标轴. 沫沫控制一个位于(0,0)的弓箭手,可以朝 0 至 90度中的任意角度(不包括 0度和 90度),以任意大小的力量射出带有穿透能力的光之…
Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)   Input 只有一行且为用空格隔开的两个非负整数 n 和 m,其含义如上所述.   对于 30%的数据 n≤100,m≤100   对于 100%的数据 n≤2000,m≤2000 Output 输出文件 output.txt 仅包含一个非负整数,表示不同的排法个数.注意答案可能很大.…
HNOI2018简要题解 D1T1 寻宝游戏 题意 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生的你对这个活动非常感兴趣.你每天都要从西向东经过教学楼一条很长的走廊,这条走廊是如此的长,以至于它被人戏称为 infinite corridor.一次,你经过这条走廊的时,注意到在走廊的墙壁上隐藏着 \(n\) 个等长的二进制的数字,长度均为 \(m\).你从西向东将这些数字记录了下来,形成一个…
[题解]永无乡 [HNOI2012] [BZOJ2733] [P3224] [题目描述] 永无乡包含 \(n\) 座岛,编号从 \(1\) 到 \(n\) ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 \(n\) 座岛排名,名次用 \(1\) 到 \(n\) 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛.如果从岛 \(a\) 出发经过若干座(包括 \(0\) 座)桥可以到达岛 \(b\) ,则称岛 \(a\) 和岛 \(b\) 是连通的. 现在有两种操作: \(B\…
[题解]三角形 [P1222] / 三角形覆盖问题 [HNOI2012] [P3219] 传送门: 三角形 \(\text{[P1222]}\) 三角形覆盖问题 \(\text{[HNOI2012] [P3219]}\) [题目描述] 给出 \(n\) 个等腰直角三角的顶点和直角边长,求覆盖总面积. [输入] 第一行一个整数 \(n\),表示三角形个数,接下来 \(n\) 行每行三个整数 \(x,y,m\),分别表示顶点坐标.直角边长(两直角边分别平行于 \(x,y\) 轴且顶点在左下角). […
P3224 [HNOI2012]永无乡 题解 题意概括 有若干集合,每个集合最初包含一个值,和一个编号1~n.两个操作:合并两个集合,查询包含值x的集合中第k大值最初的集合编号. 思路 维护集合之间关系显然用并查集,但怎么处理询问,如果只是问最大值,那么显然可以用线段树把最大值存在并查集的祖先上,当然线段树也行.但这里问的是第k大.主席树?主席树是用来处理区间第k大的,而这里每棵树显然储存一整个集合(由多个小集合合并来的)的信息,我们并不关心这个集合内的区间问题,主席树便有点大材小用.所以,得出…
Descriprition 两种操作 把两个集合并起来 求一个集合中的第 \(k\) 大(的编号) \(n \leq 10^5\) Solution 平衡树的板子题之一 维护两个点连不连通直接并查集 考虑怎么把两个集合合并 启发式合并!即把 siz 小的那一颗平衡树每一个点暴力地加入到另一个 这样做的复杂度?对于每一个点,每一次合并之后集合大小都至少是原来的两边,所以每一个点都只会被合并 \(\log n\) 次.所以这样做是 \(O(n \log n)\) 的. 实现上的细节问题: 我用了 f…
题解(自别处转载): Luogu CSDN 这题关键是将运算符也替换成0,1 然后在运算符与原串混杂里找规律. 而且替换的方式也有所要求,考场上两种替换方式都要尝试. #include <bitset> #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <assert.h> #include <algorithm&…
[HNOI2012]矿场搭建 时间限制: 1 Sec  内存限制: 128 MB 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口.请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数. 输入 输入文件有若干组数据,每组数据的第一行是一个正整数 N(N≤500),表示工地的…
何学长口中所说的‘一眼题’……然而实际上出出来我大HN全省也只有一个人A…… 首先我们需要发现一个性质:我们永远可以在最后一圈去标记所有的物品.倘若我们反复转圈,那么这完全是可以省下来的.所以我们破环为链,以\(S\) 物品作为第一个被访问的节点时所需要的时间就是 \( max(T_{x} - x) + S \),其中 \( S <= x <= S + n - 1\).问题转化为如何使用数据结构来维护这些值得最小值.注意到 \(T_{x} - x \)都只与 \(x\) 有关,我们就他将它们合…
https://www.lydsy.com/JudgeOnline/problem.php?id=2730 https://www.luogu.org/problemnew/show/P3225 听说这是一道水题我就来做了,然而并不水…… 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口. 请写一个程序,用来计算…
太厉害啦……感觉看到了正解之后整个人都惊呆了一样.真的很强%%% 首先要注意到一个性质.位运算列与列之间是不会相互影响的,那么我们先观察使一列满足条件的操作序列需要满足什么条件.&0时,不论之前是什么数字,结果都是0,而|1时,结果都是1.我们现在将&用1表示,而|用0表示.这样我们将我们&|的操作序列转化为了一个01串.假设这一列数字操作出来做后的结果应当是1,显然有最后的一个|1在&0之后.我们比较一下两个串,同为1或者同为0则跳过(&1 和 |0 不影响数字的…
题意: n个点,有加边操作,询问与某一点处于相同的联通块的点中权值第k大的点 思路: 对所有点建立一棵权值线段树,加边就配合并查集进行线段树合并 反思: 动态开点,权值线段树要用sum[g[x=find(x)]](还是不够熟练),g为根. 代码: #include<cstdio> ,N=; int sz,a[M],p[M],g[M],id[M],lc[N],rc[N],sum[N]; ]; int read() { ; char ch=getchar(); || ch>) ch=getc…
这道题挺难的,可以加深对割点的理解,还有,排列组合好重要了,分连通块,然后乘法原理(加法原理计数什么的) 传送门   https://www.luogu.org/problem/P3225 省选oi题好难啊QAQ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #define maxn 10000 using na…
题目链接 给定一张含$n$个点$m$条边的无向图,每个点有一个重要指数$a_i$.有两种操作:1.在$x$和$y$之间连一条边:2.求$x$所在连通块中重要程度第$k$小的点. --------------------------------- 维护第$k$小,很容易想到权值线段树.看到合并二字,可以想到用线段树合并的方法.维护连通块可以用并查集做. 注意并查集合并的方向和线段树合并的方向要一致.查询的时候要先找出并查集的根再查询. 代码: #include<bits/stdc++.h> us…
题目传送门 题目大意 直接看题面吧. 思路 感觉挺水的一道题啊?怎么评到紫色的啊?考试的时候LJS出了这个题的加强版我就只想出这个思路,然后就爆了... 不难发现,我们可以构造矩阵: x 2x 4x 6x ... 3x 6x 12x 24x 48x ... 9x 18x 36x ... 然后实际上就相当于在这个矩阵中选出一些数使得两两不相邻.因为行数列数都是 \(\log\) 级别的,所以直接状压就好了. \(\texttt{Code}\) #include <bits/stdc++.h> u…
2733: [HNOI2012]永无乡 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=2733 Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛.如果从岛 a 出发经过若干座(含 0 座…
2729: [HNOI2012]排队 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 957  Solved: 449[Submit][Status] Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)   Input 只有一行且为用空格隔开的两个非负整数 n 和 m,其含义如上所述.   对于…
[HNOI2012]矿场搭建 Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口.请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数. Input 有若干组数据,每组数据的第一行是一个正整数 N(N≤500),表示工地的隧道数,接下来的 N 行每行是用空格隔开…
[BZOJ2734][HNOI2012]集合选数(状态压缩,动态规划) 题面 Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中.同学们不喜欢这种具有枚举性 质的题目,于是把它变成了以下问题:对于任意一个正整数 n≤100000,如何求出{1, 2,..., n} 的满足上述约束条件的子集的个数(只需输出对 1,000,000,001 取模的结果),现在这个…
题面:P3224 [HNOI2012]永无乡 题解: 随便写写 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ,maxm=maxn,maxq=(3e5)+; ,Q,ans,belong[maxn]; char c; inline int getf(int x){ if(fa[x]==x)return fa[x…
[BZOJ5285][HNOI2018]寻宝游戏(神仙题) 题面 BZOJ 洛谷 题解 既然是二进制按位的运算,显然按位考虑. 发现这样一个关系,如果是\(or\)的话,只要\(or\ 1\),那么无论前面是啥,操作完之后都是\(1\):同理\(and\ 0\)也是一样,无论前面是什么,操作完都是\(0\). 换个角度来看,如果\(or\ 0\),无论前面是什么,操作完之后都不改变,\(and\ 1\)同理. 那么把\(or\)写成\(0\),\(and\)写成\(1\). 那么,如果当前操作数…
「JLOI2015」骗我呢 题意 问有多少个 \(n \times m\) 的矩阵 \(\{x_{i, j}\}\) 满足 对于 \(\forall i \in [1, n], j \in [1, m]\) 有 \(x_{i, j} \in[0, m]\) : 对于 \(\forall i \in [1, n], j \in [1, m)\) 有 \(x_{i, j} < x_{i, j + 1}\) : 对于 \(\forall i \in (1, n], j \in [1, m)\) 有 \…
[BZOJ5289][HNOI2018]排列(贪心) 题面 BZOJ 洛谷 题解 这个限制看起来不知道在干什么,其实就是找到所有排列\(p\)中,\(p_k=x\),那么\(k<j\),其中\(a[p_j]=x\). 也就是对于\(a\)数组的每个数\(a[i]\),它必须放在所有\(a[x]=i\)的前面. 那么对于\(i\)向所有满足\(a[x]=i\)的位置\(x\)连边,表示\(i\)必须放在这些数前面. 如果成环必定无解,如果无环则图是森林. 现在考虑每次从度数为\(0\)的点中选一个…
[BZOJ5288][HNOI2018]游戏(拓扑排序) 题面 BZOJ 洛谷 题解 去年省选的时候这题给我乱搞整过去整过去了,也是虐心了.... 所以当然是来讲正儿八经的正确做法啦. 很明显,我们需要预处理答案.设\(L[i],R[i]\)表示从\(i\)出发能够到达的区间范围. 现在我们要做的就是预处理这个\(L[i],R[i]\). 首先考虑一个点如何向外暴力拓展,如果它在拓展过程中碰到了一个已经被拓展过的节点,那么显然也可以到达那个点可以到达的所有位置,然后直接并一下就好啦. 然后现在我…
[BZOJ5287][HNOI2018]毒瘤(动态规划,容斥) 题面 BZOJ 洛谷 题解 考场上想到的暴力做法是容斥: 因为\(m-n\le 10\),所以最多会多出来\(11\)条非树边. 如果就是一棵树的话,显然答案就是独立集的个数. 非树边\(2^{11}\)枚举,强制非树边的两端同时备选导致不合法,容斥计算答案即可. 这样子的复杂度是\(O(2^{11}n)\),估算出来是\(2s\),然而在\(HNOI\)考场跑要\(20s\)(大雾 考虑如何优化这个东西. 我们\(2^{11}\)…
[BZOJ5286][HNOI2018]转盘(线段树) 题面 BZOJ 洛谷 题解 很妙的一道题目啊.(全世界除了我这题都有40分,就我是一个状压选手 首先来发现一些性质,我们走一圈一定不会更差. 为啥呢?我们反过来看,我们可以钦定一个时间\(T\),然后从这个时刻出发,每个时刻可以向前走一步或者停留于此,而每个物品有一个消失时间,过了这个时间你还没有到这个位置你就凉了. 那么我们发现我们显然只需要走一圈就可以拿到所有的东西,如果走一圈还有东西拿不到那你走再多圈也拿不到. 那么现在我们要做的就是…
HNOI2018 退役记 \(day0\): 除了切水题以外没有什么很重要的事. \(day1\): 进考场发现前面是\(yyb\)?\(orzyyb\) 试题解压密码终于没有奇怪的字符了,一遍打对. 看了一下题,觉得今年\(HNOI\)会有高论? \(T1:\)寻宝游戏 \(10\)分显然是爆搜,还有\(20\)分随便状压一下就可以了啊... 发现是位运算,于是按位考虑,最后把方案数乘起来就可以了? 是个鬼啊.与和或是对于整个数的操作,位之间会互相影响啊! 看起来可以倒推?想了一下没想出来,下…