
CF
poptree hengli
这个作者很懒,什么都没留下…
展开
-
Codeforces 922E Birds
题意:有一排nnn棵树,每棵树木上有cicic_i只鸟,每次从一棵树上召唤一只鸟要消耗costicosticost_i魔力,同时,每召唤一只鸟,召唤鸟的魔力消耗都会增加BBB.一个人初始有WWW魔力,每到一颗新的树下,会获得XXX魔力,同时这个人只能从左往右走。问最多召唤鸟的数目思路:动态规划,设定状态dp[i][j]dp[i][j]dp[i][j]表示在第iii棵树下,已经召唤jjj只鸟所需...原创 2018-03-20 21:55:43 · 436 阅读 · 0 评论 -
CodeForces 743D Chloe and pleasant prizes
题意: 对于给定的一棵树,每个节点上有个权重,问如何挑选两个节点,使得这两个节点的子树没有重合的节点,且其子树的权重之和最大。 思路: 两个节点的子树没有重合的节点,比较显然的想法是这两个节点a,ba,b,不能互为根节点。 那么这个问题就变成了如何挑选两个不重合的子树的最大值。这个是可以用树形DP来解决。对于某个节点uu,他有两个值,一个是cot[u]=∑ki=0cot[v]cot[u]=\su原创 2016-12-15 13:13:44 · 524 阅读 · 0 评论 -
CodeForces 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses
题意 : 对于给定nn个模特,每个模特有一个体重wiw_i,和魅力值bib_i,同时给这些模特一些朋友关系,如果xx和yy是朋友,那么xx的朋友和yy的朋友也是朋友。那么这样可以将这些模特根据朋友圈子分类。现在有个人想开一个party,他希望在模特的体重之和不超过kk的情况下使得魅力值最大,问,这个最大的魅力值是多少。同时需要注意的是,对于一个朋友圈子的模特,你有两种选择,一种是邀请整个圈子里的模特原创 2016-12-07 15:10:51 · 1046 阅读 · 0 评论 -
CodeForces 742C Arpa's loud Owf and Mehrdad's evil plan
题意:对于给定的一个数列nxt[n]nxt[n],如果现在点ii,那么下一个点就在nxt[i]nxt[i],现在问给定nn个,找到一个最小的tt,使得对于从任意一个点xx出发,经过tt次之后,到达的点yy, 使得点yy经过tt次之后会回到点xx.思路: 首先,这是一个nn个点nn条边的有向图。现在要求对于从对任意点xx出发经过2t2t次之后能够回到原点那么这个比较明显的要求这个图是必定是一个环原创 2016-12-07 15:01:35 · 927 阅读 · 0 评论 -
CodeForces 742B Arpa’s obvious problem and Mehrdad’s terrible solution
题意: 对于给定的nn个数字,要求找到这里面存在有几对数字对pair(a,b)pair(a,b),使得a⊕b=ma\oplus b=m.发现数字范围是[0,100000][0,100000],所以,我们用一个数组cot[300000]cot[300000],来记录每个数字ii出现的次数cot[i]cot[i],然后每次加入新的数字xx更新ans+=cot[x⊕m]ans+=cot[x\oplus原创 2016-12-07 14:48:56 · 616 阅读 · 0 评论 -
CodeForces 742A Arpa’s hard exam and Mehrdad’s naive cheat
题意:输出1378的nn次方的个位数实际上88的nn次幂是存在循环节的,但为了方便直接就用快速幂做了#include <cstdio>#include <string>#include<iostream>#include<vector>#include <stack>#include <queue>#include <map>#include <cstdlib>#include<原创 2016-12-07 14:36:05 · 444 阅读 · 0 评论 -
CodeForces 735D - Taxes
题意 给定一个数字nn,要求使得找到一个最小的kk,满足n=∑ki=1pin=\sum_{i=1}^{k}p_i,其中pip_i均为素数。 思路 本来以为这道题目是利用素数的离散性,用类似贪心的思想,每次找到距离nn最大的素数pprep_{pre},这样能保证nn减小的最快。但是实际上这样这样依旧不是最好的。神TM的歌德巴赫猜想。。猜想直接拿来用还叫猜想吗。。不过这个猜想在一定的数据范围内是成立的原创 2016-12-12 21:08:18 · 461 阅读 · 0 评论 -
CodeForces 735C Tennis Championship
题意: 给定n个人,你可以选择一系列的比赛方法,使得他们两两之间进行比赛,输的人离场,要求你安排的时候,比赛的两个人胜利场次的差距不能超过1.问最后胜利的人胜利的最大场次思路:乍一看以为是⌈log(n)⌉\lceil log(n)\rceil或者是log(n)+1log(n)+1之类的。但是仔细的推导了之后发现类似哈夫曼编码,最后就能发现实际上是一个fib数列#include <cstdio>#i原创 2016-12-12 21:04:21 · 502 阅读 · 0 评论 -
CodeForces 732E - Sockets(优先队列)
题意: 给定nn个插座,每个插座的电压是pip_i,在给定mm个插头,每个插头的电压是qiq_i,只有当插座的电压和插头的电压相等的时候两个才能插入。现在还有若干个减压器,在插座上插一个减压器能够使这个插座的电压变成⌈pi⌉\lceil p_i\rceil,多个减压器可以嵌套。问在最多的插头匹配且用最少的减压器的数目。思路:比较显然的是能匹配的尽量匹配,不能匹配时,尽量使用插减压器少的。用一个pai原创 2016-12-01 22:06:33 · 569 阅读 · 0 评论 -
CodeForces 734D - Anton and Chess (模拟)
题意:给定一个棋盘,棋盘上有一个白皇后,和多个黑色的车,象,和皇后。问当前白皇后是否是将军。思路 用四个数组来存白皇后所在的行列斜线上的棋子,然后对数组排序,二分查找找到皇后的位置,判断皇后在行列斜向上的前后两个棋子是不是能吃到她。时间复杂度O(nlogn)O(nlogn),实际上只要用8个变量来维护最近的棋子就行了,时间复杂度O(n)O(n)。#include <cstdio>#include原创 2016-12-01 21:48:09 · 480 阅读 · 0 评论 -
Codeforces 101206 H & HDU 6006 Engineer Assignment
题意:给定NN个任务和MM个工程师。每个任务PiP_i由AiA_i个部件CijC_{ij}组成。每个工程师EiE_i能够处理BiB_i个部件CijC_{ij}。每个工程师只能处理一个任务。一个任务可以由多个工程师处理。一个任务当且仅当所有部件被处理后才算被完全解决。问如何安排能够使得完成的任务数目最多。数据范围:1≤N,M≤101\leq N,M \leq 101≤C≤1001\leq C \leq原创 2017-10-07 10:36:49 · 558 阅读 · 0 评论 -
Codeforces 101206 I & HDU 6007 Mr. Panda and Crystal
题意:给定NN种水晶和MM个魔力。你可以选择用CiC_i的魔力创造一个水晶,或者根据公式KiK_i来转化一个水晶,问你能得到的最大值。思路:首先对水晶的单价进行处理。过程类似dij,每次将最小价值的水晶出队并更新以他左右材料之一的公式生成的水晶价格。最后对得到的最小值做一次背包即可。#include<iostream>#include<cstdio>#include<cmath>#includ原创 2017-10-07 10:41:47 · 490 阅读 · 0 评论 -
Codeforces 854 - C Planning
题意:对于给定的NN个飞机降落时刻。现在需要延迟KK分钟。需要重新安排飞机降落时刻。唯一的限制是新的降落时刻表中,每架飞机的降落时刻不能早于原来的时刻。同时,每架飞机有一个延迟费用,每于原来的起降时刻有一分钟的差值则需要支付一定的延误费用CiC_i。思路:对于每架飞机的延误费用CiC_i,和新时刻表起飞的时间TiT_i,总花费有这样的公式: SUM=∑i=1nCi∗(Ti−i)SUM = \sum原创 2017-10-10 00:41:20 · 436 阅读 · 0 评论 -
Codeforces 922D Robot Vacuum Cleaner
题意:给定nnn个字符串,S0∼Sn−1S0∼Sn−1S_0\sim S_n-1 ,SiSiS_i字符串均只由sh两种字母构成。现在问你如何将SSS字符串拼接成一个字符串且使得二元组(i,j)(i,j)(i,j),且i≤j,s[i]=s,s[j]=hi≤j,s[i]=s,s[j]=hi\leq j,s[i]=s,s[j]=h,这样的二元组数量最多。 思路,先不考虑整体顺序,只考虑两个字符串,对于...原创 2018-03-20 21:48:25 · 527 阅读 · 0 评论 -
Codeforces 922C Cave Painting
题意: 给定n,kn,kn,k,判断是否存在二元组(I,j)(I,j)(I,j),满足1≤i≤j≤k1≤i≤j≤k1\leq i\leq j\leq k 且 nmodi=nmodjnmodi=nmodjn\,\bmod\,i = n\,\bmod\,j 思路::找规律,很显然对于所有的1≤a≤k1≤a≤k1\leq a \leq k,如果存在nmoda≠i−1nmoda≠i−1n\,\bmod\...原创 2018-03-20 21:41:04 · 401 阅读 · 0 评论 -
Codeforces 922B Magic Forest
题意:给定一个NNN,问你能找到多少个三元组(a,b,c)(a,b,c)(a,b,c),满足1≤a≤b≤c≤N1≤a≤b≤c≤N1\leq a \leq b \leq c \leq N且a⊕b⊕c=0a⊕b⊕c=0a\oplus b\oplus c= 0 思路:直接暴力即可#include<bits/stdc++.h>using namespace std;typede...原创 2018-03-20 21:33:40 · 362 阅读 · 0 评论 -
Codeforces 922A Cloning Toys
题目大意:现在有两种物品,一种是原件,一种是复印件。同时你可以选择对原件或者复印件进行操作。如果你选择一件原件进行操作,那么操作之后在保留原件的前提下你还能获得一件原件和一件复制品。如果你选择对一件复制品进行操作,那么你会得到两件复制品。现在你拥有一件原件,在有限次操作后,你能否得到xxx件原件和yyy件复印件。 思路:简单模拟#include<bits/stdc++.h>...原创 2018-03-20 21:29:04 · 372 阅读 · 0 评论 -
Codeforces 101161 B Average
题意:给定NN个老师,每个老师能够进行打分,最多MM分。现在给定一个匹配条件为:存在一个老师的打分和均分相同。则称该情况为一个匹配条件。问所有的匹配条件数目。2≤N≤602\leq N \leq 60 1≤M≤2001\leq M \leq 200思路:设置dp[m][i][j]dp[m][i][j],代表当最大打分为MM时,ii个人总分为jj的所有方案数目。这里需要优化一维。#include <原创 2017-10-11 23:37:03 · 488 阅读 · 0 评论 -
Codeforces 101243 F - Vitamins
题意:有三种药丸,三种药丸的重量不同,现在给你一定的重量关系,让你找出种类确定的方案。思路:对于重量相同的药丸,可以看成是相同的。所以我们是用并查集来维护相同重量的药丸。同时因为只有三种药丸,所以当某条重量传递的长度等于3的时候才能够确定这三种药丸的类型。如果只有两个,则无法判断。所以我们只需要找到所有重量处在中间的药丸,并更新比他重和比他轻的药丸即可。其他剩下来没有更新的药丸重量无法判断,#in原创 2017-10-04 18:19:30 · 473 阅读 · 0 评论 -
Codeforces 101243 B Hanoi tower
题意:对于给定NN个碟子的汉诺塔,问当三个柱子上的碟子数目第一次相同时,需要移动几步。数据保证N≡0(mod3)N\equiv 0 \pmod {3}思路:打表找规律。// 打表代码import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;原创 2017-10-04 18:14:00 · 435 阅读 · 0 评论 -
Codeforces 101484 E Double Fence
题意:给定两个凸包,问是否一个凸包被严格包含在另一个的内部思路:只需要将两个凸包放在一起再做一次凸包,然后判断在新的凸包上的点是否均属于某一个凸包即可,需要值得注意的是Graham的极角排序无法处理出共线凸包。需要用水平排序的凸包方法。#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int原创 2017-10-03 11:45:35 · 519 阅读 · 0 评论 -
Codeforces 101484 H Eating Pie
题意:给定NN 种商品,两个人各有一个购物清单,每个人只购买自己购物清单上出现的商品。现在给定一个商品序列QQ,当某个人连续取ii和i+1i+1 的商品时候,他将获得PiP_i的糖果奖励。需要值得注意的是,当某个人已经买了KiK_i的商品,那么其他同种类的商品也必须由这个人购买。问最后获得最大的糖果总数。思路:考虑最大流,对于任意种类的糖果u,vu,v,如果他们在QQ序列中是相连的,那么他们之间的流原创 2017-10-03 01:11:06 · 397 阅读 · 0 评论 -
CodeForces 734C - Anton and Making Potions
题意:你需要生产nn个药剂,现在你有两种操作,一种是将生产一瓶药剂的时间xx变成aia_i,这个操作需要花费bib_i。第二个操作是立刻生产cic_i瓶药剂,这种操作花费did_i。第一种操作总共有kk种,第二种操作总共有mm种。问在花费不超过ss的情况下,生产nn瓶药水所需要花费的最少时间。题目保证dd的输入是递增的。且每种操作只能选择一种。思路:比较显然的是如果不考虑第一种操作,只考虑第二种操作原创 2016-12-01 21:41:02 · 549 阅读 · 0 评论 -
CodeForces 734E - Anton and Tree
题目大意:对于给定的一颗树,现在已知这棵树的节点只有0,10,1两种颜色,你可以任选一个节点,并将这个节点所在的颜色相通的联通块颜色全部反转。问,最少需要几次操作可以将这棵树上所有的节点变成用一种颜色。思路: 每次将一个联通块的颜色反转,比较容易想到每次反转后当前这个联通块的区域都会变的更大。 所以我们首先将这棵树进行缩点。缩点之后的树,每个节点都是原来的一个联通快。而将联通块的颜色反转等价于将这原创 2016-12-01 21:29:32 · 549 阅读 · 0 评论 -
CodeForces 710D Two Arithmetic Progressions(模线性方程组)
对于给定的两个一元二次方程,问使得L=0的解一共有几个比较容易看出来对于任意一个解X, X==b1(mod a1),X==b2(mod a2)那么使用扩展欧几里得得到m0 a0使得 任意k k*m0+a0都是一个可行解现在问题就变成了 对于给定的区间L,R,L又因为问题要求 x1,x2>=0 故我们需要处理左边界#include #include #include原创 2016-08-27 18:00:49 · 627 阅读 · 0 评论 -
CodeForces 702E Analysis of Pathes in Functional Graph(倍增)
讲道理这个应该是类似矩阵的东西,但是太大了也不现实,相对应的,倍增可以解决的就是类似这样的单路径移动?思想上类似状压dp,本质。。好像也是dp#include #include #include #include #include #include #include #include #include #include #include #include #in原创 2016-08-03 00:11:29 · 660 阅读 · 0 评论 -
CodeForces 611C New Year and Domino(DP)
给定一个矩形。要求算出该矩形里相邻两个元素都为空的个数;查询次数很多 所以先对大的矩形dp分别求列上的个数和行上的个数,然后根据给出的条件逐个求和#include#include#include#include#include#include#include#include#include#include#include#include#include#原创 2016-03-12 12:54:41 · 547 阅读 · 0 评论 -
CodeForces 611B New Year and Old Property(模拟)
给定一个区间,要求求出该区间内,二进制数中只有一个0的数字的个数;直接模拟,将十进制转成二进制,直接枚举所有可能的结果#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includ原创 2016-03-12 12:26:25 · 510 阅读 · 0 评论 -
CodeForces 560C Gerald's Hexagon(几何)
给出一个六边形,要求算出的他的面积。实际上只要先选三个不相连的边补上三角形就可以将这个问题转变为求三角形面积#include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-04-03 14:50:13 · 550 阅读 · 0 评论 -
CodeForces 217A Ice Skating(DFS)
判断联通快个数 答案为个数减一#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;int ans[120];#define sp s原创 2016-03-19 11:03:14 · 663 阅读 · 0 评论 -
CodeForces 148D Bag of mice(概率DP)
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;int ans[120];#define sp system("pause")#define mt(dp) m原创 2016-03-16 21:15:41 · 505 阅读 · 0 评论 -
CodeForces 148C Terse princess(模拟)
太坑了。。。这题#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;int ans[120];#define sp system("pause")#d原创 2016-03-16 21:13:58 · 564 阅读 · 0 评论 -
CodeForces 148B Escape(数学)
#include#include#include#includeusing namespace std;typedef long long ll;ll ans[120];#define sp system("pause");int main(){ double vd, vp, t, f, c; cin >> vp >> vd >> t >> f >> c; if (v原创 2016-03-16 21:12:55 · 775 阅读 · 0 评论 -
CodeForces 710E Generate a String (DP)
给定n,和三个操作,加一个a和减去一个a用时x,翻倍用时y问从空构造到n最少耗时乍一看就想到了dp,但是比较明显的是-1这个操作是不满足无后效性的但是我们其实也可以比较容易想到 对于任意一个状态n如果这个n是偶数 那么显然 dp[n]=min(dp[n-1]+x,dp[n/2]+y);如果这个n是奇数 那么 dp[n]=min(dp[n-1]+x,dp[(n+1)/2]+原创 2016-08-27 18:32:23 · 756 阅读 · 0 评论 -
CodeForces 710C Magic Odd Square(数学)
给定数字1到n^2,要求将这些数字填入n*n的格子当中使得,每行每列每个对角线的数字之和都是奇数很显然如果n是偶数 那么只要按照顺序填下来就行了如果n是奇数,我们可以发现一个性质,所有数字之和为(1+n^2)*(n^2)/2,而这个数必定能被3整除(大概可以证明)那么对于这个构造问题就从要求每行每列每对角线之和为奇数变成了 对于每行每列每对角线之和相等原创 2016-08-27 19:08:31 · 788 阅读 · 0 评论 -
CodeForces 703A Mishka and Game(模拟)
给定n场游戏,每场游戏点数大的获胜,获胜场数大的人获胜#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include#include原创 2016-08-06 19:32:24 · 447 阅读 · 0 评论 -
CodeForces 733D - Kostya the Sculptor
题目大意: 给定nn个长方体的长宽高,你可以选择一个,或者选择两个长方体拼成一个完整的长方体。 问你最后想要的长方体有最大的内接圆,问你如何选择?思路: 长方体的内接圆取决于它的最短边。 所以,每次必然是两个长方体的长边和次长边组成的面进行合并,然后组成的新的长方体的最短边就是这个长方体能得到的最大直径。用一个map<pair<ll,ll>,pair<ll>>map<pair<ll,ll>,pa原创 2016-11-29 16:47:34 · 564 阅读 · 0 评论 -
CodeForces 733C - Epidemic in Monstropolis
题目大意: 对于给定的一个序列AA,每个位置上的数字当 大于左边的数字或者右边的数字的时候,他能够将这个数字合并,并且结果为两个数字之和。再给定一个结果序列BB ,问是否能从AA变成BB,如果可以,输出方式,如果不可以,输出NONO思路: 首先AA 序列的某些连续子区间之和等于BB的对应元素。如果这样的划分不非法则代表无法分配。如果能够分配,我们需要找到这个区间的最大值,并判断这个最大值能否将左边右原创 2016-11-29 15:55:35 · 392 阅读 · 0 评论 -
CodeForces 733B - Parade
题目大意: 对于给定的两个序列 L[n],R[n]L[n] , R[n] ,你能够交换一次L[i],R[i] L[i],R[i] ,问,交换哪一位,或者不交换,能够使得|L−R| |L-R| 最大。首先能够知道 |L−R|=∣∣∣∑i=0nL[i]−∑i=0nR[i]∣∣∣|L-R|=\left|\sum_{i=0}^nL[i]-\sum_{i=0}^nR[i]\right| 那么问题就变原创 2016-11-28 21:21:33 · 879 阅读 · 0 评论 -
CodeForces 733A - Grasshopper And the String
题目大意: 对于给定的一个字符串序列,找到最大的两个元音字符之间的距离我们可以比较容易的得到公式f(x)={now=0,now+=1,s[i] is vowelss[i] is not a vowelsf(x)=\begin{cases} now=0 , & \text{s[i] is vowels} \\ now+=1, &\text{s[i] is not a vowels} \end{c原创 2016-11-28 20:41:50 · 474 阅读 · 0 评论