摘要: 最大公因数(gcd): 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int lca(int x,int y) 6 { 7 if(y==0)return x; 8 retur 阅读全文
posted @ 2017-08-28 13:33 Child-Single 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目的大意是求在n棵树上采摘不超过m颗豆子的方案数,要求答案对给定的p取模,同时保证p为质数。 奉上大神关于这道题的公式的推导及变形:戳这里 最后就是求C(n+m,m)%p啦~ 这里因为p<=1e5,而n和m又很大,所以应该要用到Lucas定理: Lucas(n,m,p)=C(n%p,m% 阅读全文
posted @ 2017-08-28 13:17 Child-Single 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 恭喜TJM和CYC成功ak!!!%%% 终于又补完一次SRM的题啦蒟蒻选手终于可以发题解辣~ 蒟蒻选手比赛经过(dalao可以直接跳过这段): 8:30比赛开始 咦第一题,模拟?dp? 再看一眼,靠,裸的线段覆盖,贪心啊。十分钟码完调完(really?),8:57提交,过! t2是什么鬼?网络流?好 阅读全文
posted @ 2017-08-22 14:26 Child-Single 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 快速幂取模的模板,要注意所有变量都要开成long long类型的防溢出: #include<cstdio> #include<algorithm> #include<cstring> typedef long long LL; const LL mod=1e9+7; using namespace 阅读全文
posted @ 2017-08-21 13:43 Child-Single 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 时间复杂度为O(n)的线性筛函数: #include<cstdio> #include<algorithm> #include<cstring> const int maxn=1e5+5; using namespace std; bool prime[maxn]; int primes[maxn] 阅读全文
posted @ 2017-08-21 13:33 Child-Single 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一天南北线上有n个防御站,给出他们之间的位置关系,问有没有可能存在这样一种位置布置符合所给的位置关系。关系有两种,一种是 P A B X,表示A在B北边X光年的位置,V A B表示A在B北边至少1光年位置。 分析:仍然考虑差分约束,容易想到,若关系为P,则 s[a]-a[b]=c; 变换一 阅读全文
posted @ 2017-08-21 12:34 Child-Single 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出n个区间,现在要你找出一个点集,使得这n个区间都至少有2个元素在这个点集里面,问这个点集最少有几个点。 解法一:差分约束系统 分析:其实这道题应该说是POJ1201的简化版,不过要注意的一点是,如果你用的是SPFA,那么你的差分约束系统应该为: s[b+1]-s[a]>=2; s[b+ 阅读全文
posted @ 2017-08-21 11:45 Child-Single 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 我的第一道差分约束系统......刚开始有点摸不着头脑,搞清楚后发现完全就是套路... 题目大意:在线段[ai,bi]上至少选ci个点,使被选出的点的个数最少而且满足所有的限制条件,输出这个最小值。 分析:差分约束系统我就不在这里介绍啦~\(≧▽≦)/~(这种东西网上一搜一大堆) 我们设s[i]表示 阅读全文
posted @ 2017-08-21 11:13 Child-Single 阅读(216) 评论(0) 推荐(0) 编辑
摘要: NOIP2017要到啦! 现在都高二了NOIP考挂就只能做退役狗了qvq。 WC?GDOI?SC? 这些还是以后再说吧~ 希望能在NOIP的一个月前把列出来的这些算法不会的都学起来,最后那一个月就好好复习咯╭(╯^╰)╮ 为了能续命久一点,这阵子还是得拼一拼啊QAQ。 (又是一大堆废话 列表(蓝色即 阅读全文
posted @ 2017-08-20 23:01 Child-Single 阅读(1191) 评论(0) 推荐(1) 编辑
摘要: Description 给一个长度为n的序列a。1≤a[i]≤n(n,m<=500000)。 m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。 Input 第一行两个数n,m。 第二行n个数,a[i]。 接下来m行 阅读全文
posted @ 2017-08-18 13:56 Child-Single 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目大意为给定一个长度为n的区间,同时给出m个询问,每次询问在区间[l,r]中有多少个数小于或等于k。 同样考虑用主席树来维护,每次只需要找到序列b中第一个等于k的数,那么要求的数必定在b[1]~b[upper_bound(k)]这个范围内,接下来就像线段树统计区间个数那样,若完全包含则直 阅读全文
posted @ 2017-08-18 13:21 Child-Single 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 早上刷NOIP的题刷到有点烦就想学点新东西,然后.....一个早上就这样过去了QAQ。虽然主席树不是NOIP考点,但是...或许我能活到省选呢?(美好的幻想) 题目链接 题目的大意就是给定一个长度为n的区间,给出m个询问,每次询问一个区间[l,r]中第k小的树。 主席树(一种可持久化线段树)的入门题 阅读全文
posted @ 2017-08-18 12:30 Child-Single 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 终于在8.16晚上压哨补完了,再这么拖下去NOIP迟早药丸TAT...... Day1 T1生活大爆炸版 石头剪刀布 题目链接 日常签到模拟题的话就没什么难度了,注意耐心分好类别出错就行了。 #include<cstdio> int n,na,nb,l1=1,l2=1; int a[202],b[2 阅读全文
posted @ 2017-08-16 23:30 Child-Single 阅读(871) 评论(0) 推荐(0) 编辑
摘要: 因为一些事情补了三天终于补完辣>< DAY1 T1神奇的幻方 题目链接 超级水的模拟题......一次过 #include<cstdio> #include<cstring> #include<iostream> using namespace std; int map[40][40]={0}; i 阅读全文
posted @ 2017-08-13 11:20 Child-Single 阅读(455) 评论(0) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2017-08-09 14:34 Child-Single 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 题目链接 这道题就是LCA的完全模版题了,之前学倍增的时候写过一次,但是太久没复习忘了...... 滚回来重新学了一波,赶紧写篇博客记录一下~ 倍增法求LCA的基本思路:先dfs预处理出每个节点i的祖先2^j表示为gr[i][j]、深度deep[i]以及到祖先2^j 的距离dis[i][j]。然后对 阅读全文
posted @ 2017-08-07 21:39 Child-Single 阅读(192) 评论(0) 推荐(0) 编辑
摘要: T1能量项链 题目链接 这一届的T1终于不是模拟题了,改成了一道环形dp。刚开始没有考虑好环形的细节导致WA了一半点(还是弱啊QAQ)。说说正解吧:f[l][r]表示把l到r之间的能量珠合成一颗所释放的最大能量,那么我们就可以通过枚举中间点k,f[l][r]=max(f[l][r],f[l][k]+ 阅读全文
posted @ 2017-08-07 16:56 Child-Single 阅读(254) 评论(0) 推荐(0) 编辑
摘要: T1谁拿了最多奖学金 题目链接 没什么好说的,日常签到题,模拟即可。 #include<cstdio> #include<cstring> #include<iostream> using namespace std; int main() { int n,maxn=0,de=0,s=0,a1,a2 阅读全文
posted @ 2017-08-05 10:43 Child-Single 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 题目链接:codevs,洛谷 这道题就是并查集的基础题,getf函数寻找该节点的祖先,要注意在查找的时候可以顺便把路上的节点的父节点也改为当前祖先(即路径压缩)。 询问的时候不能因为两个点的父节点不同就说他们不是同一棵树上的,要一直找到他们的祖先再做比较。 具体实现细节看代码: #include<c 阅读全文
posted @ 2017-08-03 09:09 Child-Single 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目的意思也很好理解。就是给你n对字符串,求每对中第一串在第二串中出现的次数。 直接N次KMP即可。 要记熟next的计算过程和kmp的匹配过程! 具体细节看代码: #include<cstdio> #include<cstring> const int M=1e6+10; using n 阅读全文
posted @ 2017-08-02 16:05 Child-Single 阅读(161) 评论(0) 推荐(0) 编辑