【CodeForces】913 C. Party Lemonade】的更多相关文章

[题目]C. Party Lemonade [题意]给定n个物品,第i个物品重量为2^(i-1)价值为ci,每个物品可以无限取,求取总重量>=L的最小代价.1<=30<=n,1<=L,ci<=10^9. [算法]数学(二进制原理) [题解]实际上每个物品的重量对应答案的一个二进制位,先对物品进行预处理: 1.将没用的大物品用小物品替代(价值不如前面的小物品叠加). 2.用单价最小的物品补齐后面的二进制位. 然后把L二进制展开,从小到大扫描:如果该位是1则必须选择该物品,如果该…
[题目]F. Strongly Connected Tournament [题意]给定n个点(游戏者),每轮游戏进行下列操作: 1.每对游戏者i和j(i<j)进行一场游戏,有p的概率i赢j(反之j赢i),连边从赢者向输者,从而得到一个有向完全图. 2.对于其中点数>1的强连通分量再次进行过程1,直至不存在点数>1的强连通分量为止. 给定n和p,求游戏总场次的期望.2<=n<=2000. [算法]数学概率,期望DP [题解]答案只和点数有关,设ans(n)表示n个点游戏总场次的…
[题目]E. Logical Expression [题意]令x=11110000(2),y=11001100(2),z=10101010(2),n次询问,每次要求用[与][或][非][括号]构成含至多各1个xyz的表达式使得结果等于给定的数字(0~255),要求表达式最短(一样短时字典序最小).n<=10000 [算法]数学+最短路? [题解]实际上给的数字只有256种情况,所以思路是先预处理再直接回答询问. 对每个表达式我们只关心其结果和最后进行的运算符优先级,所以至多有3*256种状态,令…
[题目]D. Too Easy Problems [题意]给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数.n<=2*10^5,T<=10^9. [算法]贪心(排序+堆) [题解]因为T太大,不能考虑背包. 容易发现k越小越能使更多问题有效,所以一定有最优方案的所有问题均有效. 当k唯一确定时,其实就是在所有ai>=k的问题中选取时间最少的几个解决. 当k减小时,选择的范围扩大,就可以选择一些时…
[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…
[题目]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数组和…