上一页 1 2 3 4 5 6 7 8 9 ··· 38 下一页
摘要: 就是求最大公倍数,但要用分解质因子求。自己写的WA到爆。。。。#include#include#include#includeusing namespace std;#define rd(x) scanf("%d",&x)#define rd2(x,y) scanf("%d%d",&x,&y)#de... 阅读全文
posted @ 2015-08-18 23:10 chenjunjie1994 阅读(208) 评论(0) 推荐(0) 编辑
摘要: D. Tree Requeststime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputRoman planted a tree consisting ... 阅读全文
posted @ 2015-08-15 10:10 chenjunjie1994 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 感谢SF巨和WH巨的指导。。首先,YY得到一个结论,罚值最大的最小值必定是按照截止时间排序得到的。然后,选一个任务插到其他位置,必定产生罚值最大值更大的情况,但有可能产生两个罚值最大情况和更小的情况(此处感谢WH巨)。然而,为什么不是选两个任务调动呢?因为必定会产生两个罚值更大的情况,情况会更坏。#... 阅读全文
posted @ 2015-06-09 11:52 chenjunjie1994 阅读(416) 评论(0) 推荐(0) 编辑
摘要: D. Regular Bridgetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAn undirected graph is calledk-... 阅读全文
posted @ 2015-06-08 10:44 chenjunjie1994 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 学了一发LCA的倍增算法+跳表维护。先说说LCA倍增算法,思路是fa[i][j]求的是i结点的2^j倍的祖先,其中2^0就是父结点了。所以可以递推fa[i][j]=fa[fa[i][j-1]][j-1]。当求LCA时,设深度u>v,则先倍增把u提到v的同等深度,若u==v,lca就是u,否则,两点同... 阅读全文
posted @ 2015-06-08 09:47 chenjunjie1994 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 弱啊弱啊,我用了扩展指令,然后大牛告诉我,只对VC++有用,对G++没用的。。shit,三题就这样没了。方法是使用ST在线算法,O(1)查询,然后用线段树维护。。呃感觉这个好慢。看了大斌神的是用LCA倍增+维护一个表 ,得学习一下。。。先贴弱的代码:#include #include #includ... 阅读全文
posted @ 2015-06-07 22:25 chenjunjie1994 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 这题一开始比较错了。两字符串比较应该是 ab和ba两字符串连接起来比较,谁在前面大就排前面。#include #include #include #include using namespace std;struct Num{ char str[1000];}num[60];char tmp1[10... 阅读全文
posted @ 2015-06-04 10:43 chenjunjie1994 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 很明显的树形DP了,设状态dp[i][0],dp[i][1]。枚举子节点放或不放的两种状态。在此学到一种不同于一般处理的方法,题目要求被两灯照亮的边尽量多,反过来即被一灯照亮的尽量少设为e。又需要的灯尽量少设为v。设M是一个很大的数,则M*v+e即是所求。由于M很大,所以主导作用取决于v,只要v不同... 阅读全文
posted @ 2015-06-02 12:44 chenjunjie1994 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 状态压缩DP,把切割出的面积做状态压缩,统计出某状态下面积和。设f(x,y,S)为在状态为S下在矩形x,y是否存在可能划分出S包含的面积。若S0是S的子集,对矩形x,y横切中竖切,对竖切若f(x,k,S0)且f(x,y-k,S^S0)为真,则为真,对横切同样。然后枚举S的子集即可。可以用记忆化搜索。... 阅读全文
posted @ 2015-06-02 12:40 chenjunjie1994 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 运用部分枚举的思想,很明显完全枚举点的思想是不可能的。改为枚举上下边界,当确定右边界j后,对左边界i,可以有点数为on[j]+on[i]+(leftu[j]-leftu[i])+leftd[j]-leftd[i]。然后取最大值,on[j]+on[i]+(leftu[j]-leftu[i])+left... 阅读全文
posted @ 2015-06-02 12:31 chenjunjie1994 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 很明显的状态压缩思想了。把全集分组,枚举每个集合的子集,看一个子集是否能覆盖所有的点,若能,则f[s]=max(f[s],f[s^s0]+1)。即与差集+1比较。这种枚举集合的思想还是第一次遇到,果然太弱了。。。。~~~~其中枚举集合for(s0=s;s0;s0=(s0-1)&s)#include ... 阅读全文
posted @ 2015-06-01 11:56 chenjunjie1994 阅读(856) 评论(0) 推荐(0) 编辑
摘要: 很明显带有博弈的味道。让A-B最大,由于双方都采用最佳策略,在博弈中有一个要求时,让一方的值尽量大。而且由于是序列,所以很容易想到状态dp[i][j],表示序列从i到j。结合博弈中的思想,表示初始状态i->j情况下,先手能获得的最大分数。后手能获得的就是sum[i][j]-dp[i][j]。接下来枚... 阅读全文
posted @ 2015-06-01 11:52 chenjunjie1994 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 打表,发现规律是存在一定次数(较小)后,会出现a=(a*a)%p。可以明显地发现本题与线段树有关。设置标记flag,记录本段内的数是否均已a=a*a%p。若是,则不需更新,否则更新有叶子结点,再pushup。#include #include #include #include #define LL... 阅读全文
posted @ 2015-05-30 10:18 chenjunjie1994 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 这道题其实是求K条最长的不重叠的链。贪心算法+DFS即可求。深度优先搜索时,返回当前子树的最长链,使用优先队列保存其他孩子结点的最长链,即可。求结果时只需从优先队列中取前K个值的和。这相当于暴力删除每条最长的链。#include #include #include #include #include... 阅读全文
posted @ 2015-05-30 09:15 chenjunjie1994 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 留意到,每一种语言的情况其实是独立的,也就是说,每一种语言的集合的包含的情况都是符合要求的。一种语言在图上可以有32种情况(由数据2知),所以,总的数就是32^nimport java.util.*;import java.math.*;public class Main { static publ... 阅读全文
posted @ 2015-05-29 21:46 chenjunjie1994 阅读(159) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 38 下一页