06 2015 档案

摘要:感谢SF巨和WH巨的指导。。首先,YY得到一个结论,罚值最大的最小值必定是按照截止时间排序得到的。然后,选一个任务插到其他位置,必定产生罚值最大值更大的情况,但有可能产生两个罚值最大情况和更小的情况(此处感谢WH巨)。然而,为什么不是选两个任务调动呢?因为必定会产生两个罚值更大的情况,情况会更坏。#... 阅读全文
posted @ 2015-06-09 11:52 chenjunjie1994 阅读(419) 评论(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 阅读(196) 评论(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 阅读(270) 评论(0) 推荐(0)
摘要:弱啊弱啊,我用了扩展指令,然后大牛告诉我,只对VC++有用,对G++没用的。。shit,三题就这样没了。方法是使用ST在线算法,O(1)查询,然后用线段树维护。。呃感觉这个好慢。看了大斌神的是用LCA倍增+维护一个表 ,得学习一下。。。先贴弱的代码:#include #include #includ... 阅读全文
posted @ 2015-06-07 22:25 chenjunjie1994 阅读(122) 评论(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 阅读(183) 评论(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 阅读(166) 评论(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 阅读(461) 评论(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 阅读(159) 评论(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 阅读(862) 评论(0) 推荐(0)
摘要:很明显带有博弈的味道。让A-B最大,由于双方都采用最佳策略,在博弈中有一个要求时,让一方的值尽量大。而且由于是序列,所以很容易想到状态dp[i][j],表示序列从i到j。结合博弈中的思想,表示初始状态i->j情况下,先手能获得的最大分数。后手能获得的就是sum[i][j]-dp[i][j]。接下来枚... 阅读全文
posted @ 2015-06-01 11:52 chenjunjie1994 阅读(175) 评论(0) 推荐(0)