- 博客(33)
- 资源 (2)
- 收藏
- 关注
原创 codeforces 622f
第一道拉格朗日插值#include#include#include#include#includeusing namespace std;typedef long long LL;const int maxn = 1000006;const LL mod = 1e9 + 7;int n, k;LL po[maxn];//prod_i(1~maxn)LL ne[maxn];//
2016-03-02 19:37:17 582
翻译 codeforces 623d birthday
译者:翻译自http://kmjp.hatenablog.jp/entry/2016/02/10/0930 这题不会做,又百度不出题解,谷歌了一下,找到了一份日文题解,讲的很明白。 他给的那道类似题还没看- -放假了懒得不行- - 最后我是把轮数设成2*10^5过的,10^6wa掉了,不知道是为什么 我的代码:#define _C
2016-02-15 11:01:29 675 2
原创 hdu 5432 Minimum Cut 树链剖分nlogn
给你一棵树,树上一些节点间会连额外的边,问只切一条树上的边,使整个图分为两部分,最少要切多少条边。 因为限定了树上要切一条边,那么答案就是对于每条边,求被切开的两棵树之间连边的数量 对于一条额外的连边ab,要使它变成连接两棵树的一条边,那么只可能是切掉了 a->b链上的一条边,也就是说a->b链上的每条边都影响这条额外的边 按这个思路,我们就可以求出树上每条边影响的额
2015-10-06 19:58:08 503
原创 hdu 5495 LCS dfs
置换群的那种感觉,拿用例来说吧 1 5 3 2 6 4 3 6 2 4 5 1 1 -> 3 ->2 ->4 ->1 5->6->5 可见 1 3 2 4这几个数不管怎么排,最大也就3个公共子序列了 5 6也是一样,最大一个 这两组之间没有关系,所以可以分开排列 这题就变成了求环的个数k,n-k即为答案#pr
2015-10-04 22:31:28 304
原创 hdu 5496 Beauty of Sequence 组合数学
挺简单的一道组合数学,每个数字a单独看(设位置为p),有 2^(n-1)不同的序列会包含自己,但是要减掉自己前驱是a的情况,设前驱的位置是x,这种情况有 2^(x^1) * 2^(n-p)种排列,对每个数求前驱是a的情况的加和即可 看代码吧,cnt[k] = sigma(2^(x-1)) (a[x] == k) 最后结果是每个数字的值与unique后包含自己的情况总数的
2015-10-04 22:14:25 360
原创 hdu 5497 Inversion 线段树
昨天比赛差一点点就能过了T^T 啥也不说了,我就是个傻逼 T^T 另外几道改天再发= = 把序列分成三部分 a b c b为去掉的部分,最小逆序数就是 整个的逆序数 - a中数>b中数 的对数 - b中逆序数 - b中数>c中数的对数,维护时每次去掉一个再加上一个,开线段树就可以了 #pragma warning(disable:4996)#include#inc
2015-10-04 09:19:53 470
原创 codeforces 466C Civilization 并查集+dfs
很容易想到并查集,合并操作的时候在每部分找到一个点使这个点在这棵树上到其他点的最长路径最短,然后将这两个点连线,求一下新的链的长度取最大值就可以了。 设每部分最长路径为 s,到其他点最长路径最短的点的最长路径L为s / 2 (向上取整) 证明: 1.到其他点最长路径为 s / 2 的点一定存在 考虑最长链上
2015-10-03 16:42:52 289
原创 codeforces 466D Increase Sequence DP
很简单的dp,一开始看错题了以为[l,r] 区间内每个可以增加好几个,晚上室友麻麻请吃饭- -所以现在才A掉- - 设dp[x]为到位置x使每个都填满且[l,r] 左右区间都不重复的方案数 设a[x]为位置x需要填补的数量 若a[x - 1] - a[x] > 1 那么补满了a[x - 1]后有大于1个区间要结尾,即以x - 1结尾的区间数大于1,不符合题意,因此 d
2015-10-02 21:11:15 503
原创 codeforces 466E Information Graph 并查集LCA离线一通乱搞
想明白一点就很简单了,询问一个人是否签过一份文件是可以分离出来的,只要一个文件已经被签署了,那么不管什么时候询问,答案都是确定的,所以把3类询问分离出来,每次签完一份文件就处理这份文件相关询问即可//也可能只有我被这种地方卡?#pragma warning(disable:4996)#include#include#include#include#include#includeusi
2015-10-02 16:11:57 491
原创 codeforces 466B Wonder Room 数学?
闲的无聊刷cf上的比赛玩,这题很快就做出来了但是并不知道是为什么,结束后做了一下证明。 方法: 设m=6*n a) 若a*b >= m 直接输出 b) 若a*b 假设最后答案的 a1固定,那么只要求得最小的b1,使其满足 a1*b1>=m,此时 a1*b1即为a1固定时的最小
2015-10-02 16:05:46 417
原创 hdu 5444 Elven Postman 水题- -
= =把这题传到网教上给学弟学妹们当数据结构课的练习题合适 已知中序和前序遍历建成一棵二叉排序树再搜索特定的点 #pragma warning(disable:4996)#include#include#include#include#include#include#include#include#includeusing namespace std;typede
2015-10-02 10:19:21 284
原创 hdu 5442 Favorite Donut 后缀数组
很简单的一个后缀数组= = 单纯地写残了- - 长度翻倍末尾变无穷大前后各处理一遍就好,注意反着求的时候sa代表的位置也是反的(wa了n次) 长度翻倍的时候我竟然能写成 strcat(str1,str1) T了n发还以为是板的问题- -我是猪么- - #include#include#include#include#includeusing namespace std
2015-10-01 19:08:54 262
原创 cf 487C Prefix Product Sequence 构造+逆元
数论废 + 脑洞不够大 = = 一上午都没搞出这道题 学会了一个新的求逆元的姿势inv[i] = (LL)(n - n / i) * inv[n % i] % n; 强迫症不行不行的 - - 看到数学题的结论不证明出来就非常不舒服 - - 高考后遗症吗 - - 按照想到的顺序: 1. 序列开头一定是1,结尾一定是n 2.1-4可以手动构
2015-10-01 11:31:20 397
原创 模板整理之强连通分量
#include#include#include#include#include#include#includeusing namespace std;stack S;vector V[100];int dfn[100],low[100],cnt=0,color[100],cnt_color=0;void Tayjan(int x){ dfn[x]=low[x]=+
2014-08-01 20:52:50 358
原创 模板整理之线性同余方程组(逆元法)
#include#include#include#include#includeusing namespace std;int x,y,n,coe[100],remain[100],mod[100];class X{public: int x,y; X(int a,int b) { x=a; y=b; return; }};int ex_gcd(int n
2014-08-01 16:24:56 743 1
原创 模板整理之KMP
#include#include#include#include#includeusing namespace std;char s[1000],pattern[100];int pre_suf[105];void kmp(){ int len=strlen(pattern); pre_suf[0]=-1; pre_suf[1]=0; int cnt=0; for(in
2014-08-01 15:46:32 345
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人