- 博客(26)
- 收藏
- 关注
原创 Linux源代码阅读辅助工具
在阅读Linux的代码时,总是会遇到ssize_t, key_t这类经过define或typedef定义的类型,又想知道他最本质的类型是什么int?long?在网上没找到相关的东西,就自己随便写了个简单的辅助工具,访问所有用到的头文件、c文件,找出其中的define, typedef, 顺便还有function,全放到一个文件里,方便查找。渣渣随便写写,不喜勿喷 >_<
2016-07-25 00:42:08
927
原创 2016"百度之星“-初赛(Astar Round2B)-A.区间的价值
每次取出集合中最大的数,放到它对应的位置,如1,6,2,4,4,取出6,放到1位置(从0开始)。当你取出一个数a时,两边会有一些之前放的数,,其中a是最小的,假设在中最大,中最大。那么这一段连续的数可以更新长度为]的答案,而且是要包含a的一段。一段区间的有效部分是最小值到最大值的一段,我们可以先考虑有效部分,然后用它向上更新。因为a是最小值,最大值要么在b,要么在c,有效区间不会横跨b,c
2016-05-25 12:52:46
464
原创 Codeforces Round #332 (Div. 2) E. Sandy and Nuts
http://codeforces.com/contest/599/problem/E题意不再多说...我用 dp[i][type][s] 表示以i为根,包含二进制s所表示的节点(不含i)的子树的方案数,type的作用放到后面解释。那么答案就是 dp[0][0][(1状态转移的时候我先分离出当前sta最低位的1(lowbit), 然后我枚举和这一位组成一颗子树的情况(这样使得枚举不
2015-11-22 00:35:28
226
原创 UVA 11987 Almost Union-Find
就是比普通的并查集多了个删除操作,显然叶子节点容易删,问题在于可能删根节点。既然叶子节点容易,我们就把所有的点都变成叶子。我是多开了n个虚拟节点。(因为我的集合合并是直接连两个根,所以那些有效节点的父亲肯定一直是虚拟节点,所以删除的时候只要考虑一个点就行....其实我是后来才发现,这算是水过吗 QAQ)
2015-08-16 19:00:38
118
原创 Codeforces 189 C. Kalila and Dimna in the Logging Industry
http://codeforces.com/contest/319/problem/C代码太挫,不忍细看...想着想着,开始胡思乱想...想着先按顺序砍,例如 1 2 3 4 5如果发生变化,就会有数字跳到前面来,比如 1 3 2 4 5这时发现 2 已无卵用,反正不需要b[2]了,干脆放最后好了然后再变化的时候,若跳到3前面,3就是白跳了问题就转化成 从序列中选取若干
2015-08-14 23:25:13
1040
原创 Codeforces 570 D. Tree Requests
http://codeforces.com/contest/570/problem/D仔细想来,还真没做过一道dfs序的题....先将查询按深度排序,对于要操作的深度,将树上的这一层都放到树状数组上。查询的时候,就查询这颗子树内各个字母出现的个数。#include using namespace std;typedef long long ll;#def
2015-08-14 13:37:08
949
原创 HDU 5381 The sum of gcd
对于每个i,求出若干区间[l1,r1],[l2,r2],[l3,r3]...满足gcd(l1~i)~gcd(r1~i)一样,gcd(l2~i)~gcd(r2,i)一样...则以i为右区间的所有gcd和为sum[i] = (r1 - l1 + 1) * g1 + (r2 - l2 + 1) * g2 + ...同理求出i右边的一段段同gcd区间[l11,r11],[l22,r22],[l33
2015-08-13 20:01:58
877
原创 Codeforces 538 E. Demiurges Play Again
http://codeforces.com/contest/538/problem/E瞎搞。。。
2015-08-07 17:02:16
676
原创 Codeforces 567 E. President and Roads
http://codeforces.com/contest/567/problem/E就是先判断每条边是不是最短路的桥,如果是,输出YES,否则,看看能否通过修改长度,变成桥。
2015-08-07 14:19:17
600
原创 Codeforces 540 E. Infinite Inversions
离散化 + 树状数组。先处理出所有会变动的位置,然后求出这些位置上最终的数值。接着分两步,先求出这些元素之间的逆序数,再求每个元素和其余不变动元素间的逆序数
2015-08-07 13:46:07
630
原创 UVA 11139 Counting Quadrilaterals
噢~~智商如此捉鸡!刚开始连样例都跑不出来(我居然就去交了一遍 (╯‵□′)╯︵┻━┻)都已经放弃去看题解了。。(搜不到T^T,天亡我也)只能继续想,发现对于凹四边形,相同的点可以构成3个不同的四边形(卧槽,意外之喜啊~)然并卵。。。只能想出一个超高复杂度的算法。。。。求大牛随手拯救一把 Orz我是先按照点不同,求出不同的四变形个数A,然后求出凹四边形的个数Bans
2015-08-05 17:30:13
952
原创 HDU 5348 MZL's endless loop
题意就不再说了。。。思路是:对于一个无向图,度数为奇数的点一定有偶数个,所以,我先将每两个奇度顶点连一条边。这样构成的新图,一定能找到一条欧拉回路,那么每个点的出度等于入度。又因为每个点最多只加了一条边,去掉这条边,|出度 - 入度| 在求欧拉回路的时候TLE到心碎,幸好队友最终想到了优化。。。姿势太差T^T#pragma comment(linker, "/STACK:1
2015-08-05 09:18:31
636
原创 UVALive 2911 Maximum
首先把答案凑出来,若b 然后对于剩余的个数,每a+1个可以凑成 sqrt(a) + n * (-1 / sqrt(a))。对最后剩下的k个,k-1个 -1 / sqrt(a) 和 1 个 (k - 1) / sqrt(a)然而我并不知道如何证明。。。
2015-08-03 11:16:11
462
原创 Codeforces 547 D. Mike and Fish
http://codeforces.com/contest/547/problem/D还是太弱了,怎么都想不出来,最后看了标签贴着 graphs,感觉有了点方向,想到了网络流。。。最近做好多题都需要标签指路。源点S和横坐标连线,S->x , cnt 是横坐标为x的点数,则这条边的下界是 cnt / 2,上界是 (cnt + 1) / 2 ,纵坐标与汇点T相连。对于点(x,y) , 连一条x
2015-08-02 14:53:03
506
原创 Codeforces 542 D. Superhero's Job
http://codeforces.com/problemset/problem/542/Dx = p1^k1 * p2^k2 * p3^k3 * ..... (p1,p2,p3...是素因子)那么 k 一定是某几个素因子的乘积,且每个素因子的个数都与x相等。J(x) = 1 + p1^k1 + p2^k2 +...+ p1^k1 * p2^k2 + .... (共 2 ^ q 项)
2015-08-02 12:32:01
92
原创 Codeforces 549 H. Degenerate Matrix
http://codeforces.com/problemset/problem/549/H唉,智商是硬伤T^T二分答案x,[a-x,a+x] * [d-x,d+x] 和 [b-x,b+x] * [c-x,c+x] 有没有交点。
2015-08-02 12:21:46
189
原创 Codeforces 553 C. Love Triangles
http://codeforces.com/problemset/problem/553/C对于一个连通块,两个人之间边的值是确定的,如果出现了冲突,答案就是0.对于不同的连通块,只要加一条边,就能确定两个连通块间的连边情况,所以答案就是2^(连通块个数)
2015-08-02 12:07:56
596
原创 Codeforces 553 B. Kyoya and Permutation
http://codeforces.com/problemset/problem/553/B比赛的时候看错了题目,现在重新做的时候才发现。。转化后不发生变化的串才是符合条件的。。所以,要么自己形成循环,要么两个点形成循环。dp[i] = dp[i+1] + dp[i + 2]. (dp[i] 表示第i位开始,有多少符合条件的串。
2015-08-02 12:02:28
142
原创 Codeforces 557 D. Vitaly and Cycle
对二分图没什么深入的了解,原来可以这么用。。。涨见识了1.若原来就存在奇环,需要加0条边,方法数是12.若没有边,需要加3条边,方法数是C(n,3)3.若每个点最多只有一条边,需要加2条边,方法数是m * (n - 2)4.只要加1条边,就能组成奇环。由于没有奇环,这是个二分图,在同一边任选两点加边,一定能形成一个奇环。
2015-08-02 11:44:30
176
原创 Codeforces 551 D. GukiZ and Binary Operations
http://codeforces.com/problemset/problem/551/D可以一位一位的考虑,对于某一位,若k的值为0,那么a不能有相邻的1,你会发现情况数就是fibonacci,若k为1,就是总的情况数 - k = 0的情况数。最后,各位乘起来就行。对了,fibonacci需要用到矩阵快速幂!
2015-08-02 11:29:34
446
原创 Codeforces 558 D. Guess Your Way Out! II
http://codeforces.com/problemset/problem/558/D我先把q个区间都下移到叶子层,映射一下,若[l,r] 为 1,则[l,r] 的 g[]值 + 1,否则其补集所在的区间 +1,对于区间所有数 +1,可以先 g[l] + 1, g[r+1] - 1,最后在求一下和。然后看看g[] = q的点有几个。
2015-08-02 11:14:07
479
原创 POJ 2888 Magic Bracelet 有限制的Polya计数
求每个置换的不变的着色数,对于每个置换,有gcd(n,k)个环显然,任取一段长度为gcd(n,k),则gcd(n,k)个点分别属于各个环且相邻关系是(a1,a2),(a2,a3)...(ai,a1)那么,问题转换成了,对于每个置换i= gcd(n,k),求a1,a2..ai的着色数,相邻点都符合条件,即有些颜色不能相邻设m种颜色为 m个点,形成m*m的矩阵C,若i后
2015-07-16 10:44:09
616
原创 ZOJ 3824 Fiber-optic Network ~莫比乌斯
若先确定父结点的取值为A 设f(i)为子结点取值和A的gcd为i,且子结点为根的子树相邻结点都互质的方案数 设F(i)为子结点取值和A的gcd为i的倍数,且子结点为根的子树相邻结点都互质的方案数 则f(1) = sigma(mu[d] * F(d)) 条件 d是A的因子想到,确定一个父结点,一个子结点,就能确定一棵子树,于是我将每条边分解成两条有向边。数组F[e][j]记录的
2015-07-14 10:37:43
1142
原创 UVALive 6678 Judging Troubles
题意是:给你一组数组,求出存在多少个区间,满足区间内的数的xor值和and值是相等的。我的想法是:先枚举区间左端点(假设为第 L 行),由于and的特性,从L开始,可以将[L,n)划分成32段,从L到第1段的某行的and值是全1,到第2段的某行的and值是有1个0,以此类推。那么就可以一段一段处理,而对于某一段,and值已经确定了,[a行,b行]的xor值 = [1,a] ^[1,b],可以预
2015-07-13 18:31:50
741
原创 UVALive 6396 Factors 反素数!!
刚开始看到,想到是反素数,还有点小鸡冻。。。然而结局是悲伤的T^T,没想到第一篇博客居然是未AC的。。。
2015-07-13 17:43:24
532
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人