【Codeforces】868C. Qualification Rounds】的更多相关文章

[题目]C. Qualification Rounds [题意]给定n个问题和K个人,给定每个人知道的问题列表,求能否找到一个非空问题集合,满足每个人知道的集合中问题数量都不超过集合总题数的一半.n<=10^5,k<=4. [算法]数学结论 [题解]当k<=4时,结论:若存在合法方案,则一定存在选择2个问题的合法方案. 证明:对于选择偶数个问题的合法方案(奇数不优),假设方案中每个人都知道一半问题(最坏),试图从中得到选择2个问题的合法方案. 先得到三条易证的结论: Ⅰ两个人知道区间互补…
题目链接:868C - Qualification Rounds 题目大意:有\(n\)个题目,\(k\)个人,每个人可能做过这\(n\)个题里的若干道,出题方要在这\(n\)个题目里选若干个出来作为一套题.称一套题有趣的当且仅当对于任意一个人,他在这套题里做过的题目数不超过总题数的一半,问是否存在这样的一套题. 题解:设第\(i\)道题有\(p_i\)个人做过,显然当存在有\(p_i =0\)时单独把这道题放入套题里即可. 若存在\(p_i =1\),设做过这道题的人为\(X\),则只需要找到…
[Codeforces]Round #491 (Div. 2) 总结 这次尴尬了,D题fst,E没有做出来.... 不过还好,rating只掉了30,总体来说比较不稳,下次加油 A:If at first you don't succeed- SB题,就是注意一下特判就好了,然后我一开始wa了三次... #include<bits/stdc++.h> using namespace std; int read(){ int ans=0,w=1;char c=getchar(); while(!…
[Codeforces]Round #488 (Div. 2) 总结 比较僵硬的一场,还是手速不够,但是作为正式成为竞赛生的第一场比赛还是比较圆满的,起码没有FST,A掉ABCD,总排82,怒涨rating两百 A:Fingerprints A题,就在第一个串中查找第二个串中的数字,最气的是一开始没编译直接交CE了,噗 #include<iostream> #include<cstdio> using namespace std; int read(){ int ans=0,w=1…
Snark and Philip are preparing the problemset for the upcoming pre-qualification round for semi-quarter-finals. They have a bank of nproblems, and they want to select any non-empty subset of it as a problemset. k experienced teams are participating i…
[题目]D. Acyclic Organic Compounds [题意]给定一棵带点权树,每个点有一个字符,定义一个结点的字符串数为往下延伸能得到的不重复字符串数,求min(点权+字符串数),n<=300000,time=3s. [算法]trie合并||hash+线段树合并||dsu on tree [题解]维护每个节点的Trie,那么每个节点的不重复字符串数是Trie的节点数. 每个节点Tire的根设为这个节点的字符(不是空字符). 这样Trie的合并就很方便了,merge(a,b)表示将b…
[算法]模拟 [题意]http://codeforces.com/contest/849/problem/D 给定n个点从x轴或y轴的位置p时间t出发,相遇后按对方路径走,问每个数字撞到墙的位置.(还是乖乖啃原题意去吧233) [题解] 两个数会相撞,当且仅当xi+tj=xj+ti,即xi-ti=xj-tj.令di=xi-ti,则只有di相同的一堆数会相撞. 观察相撞规律,容易发现处理方式.处理出一堆相同的数字后,x从大到小再y从小到大放入A,y从小到大再x从大到小放入B,然后A对应从B中取位置…
[题目]E. NN country [题意]给定n个点的树和m条链,q次询问一条链(a,b)最少被多少条给定的链覆盖.\(n,m,q \leq 2*10^5\). [算法]树上倍增+二维数点(树状数组) 先从半链角度考虑.将每条给定链和每个询问拆成向上的一段和向下的一段.那么假设询问的半链最低端节点为x,贪心地选择x子树内向上延伸最远的给定半链(假设最高点为y),再从y继续贪心直至超过半链最顶端节点.再只考虑半链的前提下贪心显然正确. 但是我们注意到,这样贪心的复杂度是不正确的,因为如果每次只跳…
[题目]C.Big Secret [题意]给定数组b,求重排列b数组使其前缀异或和数组a单调递增.\(n \leq 10^5,1 \leq b_i \leq 2^{60}\). [算法]异或 为了拆位分析,先考虑一个简单的问题:已知一个合法b数组和一个数字"1",求数字"1"是否能插入? 容易发现,"1"插入的位置必须满足前面的数字中有偶数个奇数(可以是0个),因为这样前缀和才能比上一位多1,满足要求. 进一步的,已知一个有y个奇数的合法b数组和…
[题目]D. Huffman Coding on Segment [题意]给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长.1<=n,m,ai<=10^5. [算法]哈夫曼树+莫队+分块 [哈夫曼树]哈夫曼树又称最优构造树,n个数字的哈夫曼树是含有n个给定权值叶子的点权路径和最小的二叉树. 点权路径和(WPL)可以表示为每个点的深度*权值. 构造方法:每次取点权最小的两个根节点作为左右子树(左小右大)组成新根节(点权为左右之和),多次操作直到只剩一棵树.(类似合并果子) 哈夫曼树的W…