摘要: 贪心 题目大意,有2个宿管分别从1和n开始检查房间,记录人数不为n的房间个数,然后锁住房间。 没有被锁的房间中的学生可以选择藏在床底,留在原地,或者转移(最远转移d个房间) 然后抄了网上大神的代码。 首先,如果可以转移的人数够,能使外面的满足房间b人的条件,就尽量满足。如果人数不够,就全部向内进行转移。 所有的人都可以不断向内转移,所以最优的一种情况一定不会发现某个房间人数多了。。... 阅读全文
posted @ 2018-03-29 11:44 invoid 阅读(99) 评论(0) 推荐(0) 编辑
摘要: tarjan 题意: 有n个数据维护中心,每个在h小时中需要1个小时维护,有m个雇主,他们的中心分别为c1,c2,要求这两个数据中心不能同时维护。 现在要挑出一个数据中心的子集,把他们的维护时间都推后一个小时。问最小推几个? 建图,如果对于一个顾客,两个数据维护中心维护时间正好差一个小时,那么前者向后者连一条边。在一个强连通分量里面的所有点必须选。。如果有连向其他的强连通分量,那么那个... 阅读全文
posted @ 2018-03-29 10:18 invoid 阅读(173) 评论(0) 推荐(0) 编辑
摘要: LIS nlogn的时间复杂度,之前没有写过。 思路是d[i]保存长度为i的单调不下降子序列末尾的最小值。 更新时候,如果a[i]>d[len],(len为目前最长的单调不下降子序列) d[++len]=a[i] 否则 二分查找 d[j-1] #include #include #include #define LL long long using namespace std; LL re... 阅读全文
posted @ 2018-03-25 21:02 invoid 阅读(130) 评论(0) 推荐(0) 编辑
摘要: Trie树。 要求字典序最小,所以由前到后贪心的选择。建一个trie树维护b数列。 #include #include #include using namespace std; const int maxn = 300000*(20+5) ; const int maxm = 30 + 10; int a[maxn],s[maxn],p0[maxn],p1[maxn],cnt; in... 阅读全文
posted @ 2018-03-25 19:31 invoid 阅读(212) 评论(0) 推荐(0) 编辑
摘要: acm与oi很大的一个不同就是在输入格式上。oi往往是单组数据,而acm往往是多组数据,而且题目对数据格式往往各有要求,这8道a+b(吐槽。。)涉及到了大量的常用的输入输出格式。https://wenku.baidu.com/view/1753515189eb172dec63b715.html 这篇文章是对这8道题的总结。为了我的方便和懒惰,就不放代码了。。 阅读全文
posted @ 2017-06-08 19:59 invoid 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 不到一年的高三生活匆匆结束,高考也就那样过去了。回首往事,不胜唏嘘。 但是我回来了。 继续刷题。 阅读全文
posted @ 2017-06-08 19:53 invoid 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 主席树。 主席树复习,这道题是主席树的经典入门了吧。。 无修改区间第k大。 #include #include #include using namespace std; const int maxn = 200000 + 10; const int maxm = 5000000 + 10; /* void build(int &x,int L,int R) { if(!x)... 阅读全文
posted @ 2016-07-20 21:37 invoid 阅读(216) 评论(0) 推荐(0) 编辑
摘要: kmp+矩阵乘法。 好久以前做过,但我今天居然死活看不懂以前的程序,再写一发。 用f[i][j]表示前i个准考证号匹配了前j个不吉利数字的方案数。 tmp[i][j]表示匹配了前i个不吉利数字以后,增加一个字符可以匹配前j个不吉利数字的方案数。 我们可以枚举(i+1)位的数字,并用kmp求得的next数组进行转移,就可以求出tmp数组。 很显然有(就是我完全不知道为什么。。) f[i]... 阅读全文
posted @ 2016-07-16 22:06 invoid 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 矩阵乘法。 关于点的无法表示刚才走过的路不能走,所以用把边拆成俩个来建图,自己不能和自己连。 然后再用俩点表示起点和终点。 快速幂求矩阵(t+1)次就可以了(t+1次是因为到达终点那条边就需要t次,然后新建了一个终点,就会多走一步)。 阅读全文
posted @ 2016-07-16 19:40 invoid 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 矩阵乘法。 邻接矩阵用矩阵乘法可以得到最后的方案数 食人鱼是周期性的移动可以用12个矩阵表示。12个矩阵乘在一起得到第13个矩阵。 然后k/12的部分用第13个矩阵快速幂转移,再乘下剩余的矩阵。 #include #include #include #define LL long long using namespace std; const int maxn = 50 + 10;... 阅读全文
posted @ 2016-07-16 16:40 invoid 阅读(390) 评论(0) 推荐(0) 编辑