上一页 1 2 3 4 5 6 7 ··· 38 下一页
摘要: 最二的一次了~我开始以为是带有贪心的DP,谁知道想错了。后来才想明白,暴力二分+记忆化DP#include #include #include #include #define LL long longusing namespace std;const int INF=(1m) swap(n,m);... 阅读全文
posted @ 2015-11-14 15:23 chenjunjie1994 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 相当于给你一些点,要你最多删除不超过k,使得能使用一个边长为整数的长方形,与XY轴平行,使长方形的面积最小。上课时拿笔来画画,然后忽然思路就开了,要是比赛也这样就好了~~先按X,Y分别排序,由于K较小,而且,删除的时候肯定会删除最外围的点,所以,可以上下左右枚举删了哪些点,排序后的数组来模拟这个过程... 阅读全文
posted @ 2015-11-13 23:06 chenjunjie1994 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 改了题目之后,就是没有奇数的测试了。。。其实可以很轻易地发现,要距离近的一方只会删除两端的,而要求远的一方会删除中间的。那么,很明显的,剩下的两点会相差x/2个节点,于是,只要计算i和i+x/2的节点的距离即可。取最小的值。#include #include #include #include #i... 阅读全文
posted @ 2015-11-12 00:00 chenjunjie1994 阅读(132) 评论(0) 推荐(0) 编辑
摘要: C题我还以为是拉格朗日插值。。。其实可以想象到,必须有这样一个函数,经过某一点时,其它圆相关的函数要为0。于是,可以构造这样的一个函数,对于x有 (x/2)*(1-abs(t-i)+abs(1-abs(t-i)))#include #include #include #include #includ... 阅读全文
posted @ 2015-11-11 23:55 chenjunjie1994 阅读(187) 评论(0) 推荐(0) 编辑
摘要: D题,LCA是很明显的。要注意的是,因为是除法,所以最多可以除x>2的有64次,当大于64时可以直接返回0。而且注意到可能会有很多值为1的边,可以使用路径压缩,把边为1的边压缩掉,类似于并查集的路径压缩。之前只压缩到LCA,一直TLE,可以直接压缩到它们的根节点。#include #include ... 阅读全文
posted @ 2015-11-11 23:50 chenjunjie1994 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 树分治。对于一棵子树的根节点,至少有一条边与儿子相连的属于重边。对于一条轻边,它的贡献值是两端子树大小的乘积,所以,重边应该是贡献值最大的一边。至于要求所有的点,进行深度优先搜索,因为移动一个点只会影响两个点的两个子树,这个可以维护。在进行DP时,选择计算最大的重边的值,答案就是用所有的边贡献值减去... 阅读全文
posted @ 2015-11-11 23:45 chenjunjie1994 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 卡了~卡了就写不下去了~其实是不会~大牛提醒,答案必定是SUM的因子~细细想了好久,才想通~差距~因为是所有的和GCD,所以GCD必定整除SUM。。然后,枚举这些因子,统计前缀和的MOD,看有多少个,最多的便是以它为最大公约数的段数最多的情况。如果存在以它为GCD更多的段数的情况,必定会在前缀和统计... 阅读全文
posted @ 2015-11-03 23:57 chenjunjie1994 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 这题不难,当时想出来了,可是却写不出来~~现在慢慢写回来,也写得好挫~可以知道,被攻击的城市必定可以组成一棵树,然后,传送到的点必定也是城市之一。如果出发后回到原点,则需要2E,E是树的边数,则2E-D就是答案,D是树中直径。我写得好锉~#include #include #include #inc... 阅读全文
posted @ 2015-11-03 23:51 chenjunjie1994 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 弱没机会去长春,但拿了题来做了,加上请教各路大牛,理论AC了一发,但没实现~(感谢各路有形无形的大牛的指导)A题~Too Rich给你1,5,10,20,50,100,200,500,1000,2000这几个数的个数,用最多的数组成和为p。解:一眼看上去像个贪心题,其实,如果没有20,50,200,... 阅读全文
posted @ 2015-10-30 22:15 chenjunjie1994 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 两题都不难。对于D题,可以使用相对移动,把吹aircraft移动变成相反方向的待援点的移动。假设此时时间为t,把aircraft的速度设为Vmax,看待援点在飞船最大速度飞行t秒的范围内,注意风向变化的时间点即可。其实很明显的二分。。 1 #include 2 #include 3 #inclu... 阅读全文
posted @ 2015-10-30 21:52 chenjunjie1994 阅读(211) 评论(0) 推荐(0) 编辑
摘要: DP题。状态很容易设,dp[u][0]表示u点子树解决,dp[u][1]表示剩一条链,dp[u][2]表示邻边全炸.转移有点难,看代码解释:#include #include #include #include using namespace std;const int MAX=100005;vec... 阅读全文
posted @ 2015-10-16 21:14 chenjunjie1994 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 枚举所有的最大值盒子里糖果为K的情况,对于位置p,dp[p]为p以前的,第p个操作为抽到不是蓝球里的情况,盒子里最多糖果为k的情况的概率。而到p这个位置,可以有连续最多k-1(因为第k个操作必须为抽到不是蓝球,注意,在第一次操作前桌子上已有一粒糖)个,也可以是0,1,2,3,4....,所以维护这样... 阅读全文
posted @ 2015-10-16 21:08 chenjunjie1994 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 这题的01背包的特点很容易看出来,但其实发现,这个题讲究加入时候的顺序。于是,用贪心排序,如代码中所示,如果A在B前面造成的分数损失更小,则排在前面。。。其实这个我也是猜的。。#include #include #include #include using namespace std;int dp... 阅读全文
posted @ 2015-10-16 21:01 chenjunjie1994 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 这题很简单,把目标位置排序,把目标位置在当前位置前面的往前交换,每次都是贪心选择第一个满足这样要求的数字。#include #include #include #include #include using namespace std;const int MAX=2005;int p1[MAX],p... 阅读全文
posted @ 2015-10-16 20:35 chenjunjie1994 阅读(175) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include using namespace std;const int MAX=1e5+7;char s1[MAX],s2[MAX],s3[MAX];char getdif(char a,char b){ for(int i=0;in||c... 阅读全文
posted @ 2015-10-16 20:31 chenjunjie1994 阅读(190) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 38 下一页