题目 题目大意 给你一棵树,在树上的某一些节点上面有人,要用最小的步数和,使得这些人靠在一起.所谓靠在一起,即是任意两个人之间的路径上没有空的节点(也就是连在一起). N≤200N \leq 200N≤200 思考历程 看了题目好久,没有什么思路. 想到DP,但不知道怎么用DP做. 然后去翻翻题解,然后一脸懵逼,再去问问几位大佬. LYL.ZHJ.GMH这三个大爷都说这题很水,是联赛难度. 不屑于给我讲. 天哪,这就是人与人之间的差距!太恐怖了. 然后我只能依靠我自己硬是刚了四天,对,是四天.…
题面 题解 我永远讨厌dp.jpg 搞了一个下午优化复杂度最后发现只要有一个小trick就可以A了→_→.全场都插头dp就我一个状压跑得贼慢-- 不难发现我们可以状压,对于每一行,用状态\(S\)表示有哪些格子是已经被上一行推倒了的,那么我们可以枚举本行所有格子的字母情况,然后计算一下这个时候下一行格子被推倒的情况,把这一行的贡献加到下一行就行了. 简单来说就是记一个\(f[pos][S]\)表示第\(pos\)行,格子被推倒的情况为\(S\)时的方案数,\(dp[pos][S]\)为所有方案中…
题面 题解 好迷-- //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i) #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)…
题面 题解 为了一点小细节卡了一个下午--我都怕我瞎用set把电脑搞炸-- 观察一次\(1\)操作会造成什么影响,比如说把\(A[i]\)从\(x\)改成\(y\): \(D[x]\)会\(-1\),导致\(E[x]=B[x]/D[x]\)会修改 \(D[y]\)会\(+1\),导致\(E[y]=B[y]/D[y]\)会修改 连边关系会修改 当某个\(E[x]\)改变时,所有跟它距离不超过\(1\)的点的\(C[]\)值都要修改 \(C[A[x]]\):单点修改 \(C[x]\):单点修改 儿子…
题面 题解 数据结构做傻了.jpg 考虑每一个节点,它的儿子的取值最多只有\(O(\sqrt {m})\)种,那么可以用一个双向链表维护儿子的所有取值以及该取值的个数,那么对儿子节点修改一个值就是\(O(\sqrt{m})\),整体修改可以通过在自己身上打一个标记做到\(O(1)\) 然后还要修改父亲,那么可以通过修改父亲的父亲的儿子实现,并把父亲打上一个加一标记 然后还需要知道该时刻某个点的具体取值,可以通过父亲身上整体加一的标记和自己身上被儿子打的标记的总和求出 //minamoto #in…
这其实是道打表题--你看我代码就知道了-- 咳咳来点严谨证明好了-- 前方高能请注意 首先,正多边形近似于圆,可以看做在圆里内接多边形.圆内接多边形最多只有三个锐角.因为凸多边形的外角和为\(360\)度,如果有大于等于\(4\)个锐角,那么有大于等于\(4\)个外角大于\(90\)度,外角和肯定大于\(360\)度,矛盾(话说我当时只猜想出了结论不知道怎么证明--初中数学全还给老师了→_→) 那么分情况讨论\(k=0,1,2,3\)的情况就好了.顺便注意\(n\)为奇数,所以不可能存在直角的情…
题目 其中n,q≤500000n,q\leq 500000n,q≤500000 题目大意 让你维护一个堆.支持一下操作: 在某个点的下面加上另一个点,然后进行上浮操作. 询问某一点的权值. 思考历程 一眼看这题,诶,不就是那道中学生数据结构题吗? 直接树链剖分,然后splay一波搞定! 思想还是很简单的! 但是感觉有点长-- 正解 上面的这个解法算是一个正解吧. 但是我还是没打,因为代码可能很长--(想一想,又树链剖分,又splay的有点麻烦) 然后这题LCT也可以做!就是LCT和一个splay…
[2018冬令营模拟测试赛(二十一)]Problem A: Decalcomania 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试题描述" 数据规模及约定 见"试题描述" 题解 最优解一定是在一段连续的包含 \(0\) 号点的区间中选择最小的 \(k\) 个印花,其中一边需要折返(即代价为两倍距离). 所以我们先将一边的距离 \(\times 2\),然后…
noip模拟12 solutions 这次考试靠的还是比较好的,但是还是有不好的地方, 为啥嘞??因为我觉得我排列组合好像白学了诶,文化课都忘记了 正难则反!!!!!!!! 害没关系啦,一共拿到了\(120pts\),其实距离我的理想分数还差那么\(100pts\) 具体是这样的,第一题AC,第二题10,第三题10 下次要把知识都回忆一下,比如这次用到的欧拉定理,差一点就忘记了 noip模拟13!!!200分!! · · · T1 简单的区间 哈哈哈这个题是我这几次考试中最成功的一道了,所以我一…
Begin (题目的排序方式:Unkown其实是按心情排的) 异或:(摘自百度百科) 异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为“⊕”,计算机符号为“xor”.其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 如果a.b两个值不相同,则异或结果为1.如果a.b两个值相同,异或结果为0. 异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),…