- 博客(313)
- 收藏
- 关注
原创 P3916 图的遍历+P3907 圈的异或+P1730 最小密度路径+P1768 天路
P3916 图的遍历 简单的题 缩点在dfs 但t了。。。。尬#include<cstdio>#include<queue>#include<cstring>using namespace std;const int M=210000; int h[M],to[M],nex[M],tot,a[M],dfn[M],low[M],strack[M...
2018-02-22 20:55:24 281
原创 多重背包
单调队列优化,按理来说是均摊nm的 ,但t了然后我们知道标准的多重背包的dp转移方程为dp[i][j] = max{dp[i - 1][j - k * v[i]] + k * w[i]}然而你可以发现需要求最大值的对象有不少是重复的于是我们设v = v[i],a = j / v,b = j % v然后有dp[i][j] = max{dp[i - 1][b + k * v...
2018-02-22 20:47:31 160
原创 fft
资料 http://blog.miskcoo.com/2015/04/polynomial-multiplication-and-fast-fourier-transform https://blog.csdn.net/iamzky/article/details/22712347 两道板子题 【模板】A*B Problem升级版(FFT快速傅里叶)#include<cstdio...
2018-02-22 20:44:23 686
原创 网络流
P4016 负载平衡问题我们对每个仓库创建两个节点XiX_iXi 和YiY_iYi ,前者为供应节点,后者为需求节点。求出最终要达到的货物值即平均数,然后把初始值处理成偏移值(初始值-平均数)。偏移小于0。表明这个节点需要运入货物,将节点的XiX_iXi 与源点SSS 相连,容量为偏移,费用为0。偏移大于0。表明这个节点需要运出货物,将节点的YiY_iYi 与汇点TTT 相连,容...
2018-02-22 20:41:01 140
原创 树链剖分专题
树剖班子 把树弄成重链和轻链 用线段树或某些毒瘤平衡树维护 向上跳#include<cstdio>#include<iostream>using namespace std;const int M=210000;int n,m,r,p,to[2*M],nex[M*2],head[M],tot,f[M],dep[M],top[M],val[M],cnt,si...
2018-02-22 20:34:39 131
原创 splay文艺平衡树
splay的区间操作#include<cstdio>#define ll long longusing namespace std;const int M=201000;int root=0,cnt;int n,m,date[M];struct splaytree{ int key[M],ch[M][2],f[M],size[M],flag[M]; vo...
2018-02-22 20:23:40 120
原创 noip2017
day1 t3 算是个记忆化搜索吧 dp[i][k]表示到i的比最短路大k的数#include<cstdio>#include<iostream>#include<queue>#include<cstring>using namespace std;const int M=210001;int T,k,n,m,p,ans;in...
2018-02-22 20:21:02 107
原创 树状数组套主席书
主席书可以修改区间了#include<cstdio>#include<algorithm>#include<iostream>using namespace std;typedef long long LL;#define lson l, m#define rson m+1, rconst int N=60005;int a[N], Hash...
2018-02-22 20:18:14 175
原创 主席书
主席书模板 支持查询区间第k大 有人说是权值线段树 有人说是可持久化线段树 还有人说是可持久化trie树#include<cstdio>#include<algorithm>using namespace std;const int M=1e6+7;struct zxtree{ int l,r,sum;}T[M<<5];int n...
2018-02-22 20:15:17 185
原创 替罪羊树
打了个板子,之前没初始化wa了两个点 也不知道为什么会错。。。。。替罪羊树的主要思想就是将不平衡的树压成一个序列,然后暴力重构成一颗平衡的树. 这里的平衡指的是:对于某个 0.5<=alpha<=1 满足 size( lson(x) )<=alpha*size(x) 并且 size( rson(x) )<=alpha*size(x),即这个节点的两棵子树的 si...
2017-12-27 14:47:08 356 4
原创 splay
背不过,抄了个板子#include<cstdio>#define ll long longusing namespace std;ll n,root,sz;struct tree{ ll ch[110000][3]; ll key[110000],size[190099],cnt[110000],f[110000]; inline void clear(ll x){
2017-12-20 17:11:34 159
原创 模板2
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<queue>#include<set> #include<algorithm>using namespace std;int x,y,a,b;int gcd(int &x,int &y,int a,int b){ if(!b){
2017-11-09 16:57:27 196
原创 高精模板
#include<cstdio>#include<cstring>#include<iostream>#define K 10000using namespace std;char a[1100000];struct st{ long long s[5100],tot; void init(){ memset(s,0,sizeof s);
2017-11-09 16:52:16 217
原创 最小生成树k算法
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>using namespace std;int n,m,opt,x,y,f[1100000],
2017-11-08 21:12:28 334
原创 筛素数模板
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>using namespace std;int ip[11000000],pr[1100000
2017-11-08 21:11:26 155
原创 优先队列模板
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>using namespace std;priority_queue<int> q;int
2017-11-08 21:11:03 162
原创 并查集模板
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>using namespace std;int n,m,opt,x,y,f[1100000];
2017-11-08 21:10:24 167
原创 r6
nlogn字符串找公共子串#include<cstdio>#include<cstring>#include<iostream>char a[1100000],b[1100];int ans,dp[1100][1100],now[27],nex[1100000][26];//dp表示较短串匹配到i,长度为j,最近匹配到哪。nex表示第一个串最近的j字符int main(){ fre
2017-11-08 21:08:59 262
原创 lcs模板
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>using namespace std;int n,a[1100000],b[1100000]
2017-11-08 20:59:48 203
原创 归并排序模板
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>using namespace std;int n,a[1100000],tmp[110000
2017-11-08 20:36:53 181
原创 spfa模板
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<ctime>#include<cstdlib>#include<algorithm>using namespace std;queue<int> q
2017-11-08 20:36:14 125
原创 模板
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<set>#include<map>#include<queue>#include<vector>#include<ctime>#include<cstdlib>#include<algorithm>using namespace
2017-11-08 20:35:44 165
原创 踢踢踢
t1 等差数列求和,减掉多的时间#include<iostream>#include<cstdio>#include<cstring> using namespace std;long long n,a1,d,t,ans,tmp,z,x,y;int main(){ scanf("%lld%lld",&n,&t); while(n--){ tmp=0;
2017-11-08 14:40:47 536
原创 mNOIP 模拟赛 Day 2
t1题目背景pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv丹青千秋酿,一醉解愁肠。 无悔少年枉,只愿壮志狂。 题目描述小 F 很喜欢数学,但是到了高中以后数学总是考不好。有一天,他在数学课上发起了呆;他想起了过去的一年。一年前,当他初识算法竞赛的 时候,觉得整个世界都焕然一新。这世界上怎么会有这么多奇妙的东西?曾经自己觉得难以 解决的问题
2017-11-07 20:49:28 335
原创 洛谷 mNOIP 模拟赛 Day 1
t1 P3938 斐波那契 题目背景大样例下发链接:http://pan.baidu.com/s/1c0LbQ2 密码:jigg题目描述小 C 养了一些很可爱的兔子。 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行 繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子。我们假定, 在整个过程中兔子不会出现任何意外。小 C 把兔子按出生顺序,把兔子
2017-11-07 17:12:41 267
原创 题lg
t2 建三个图,向上建一个边,向下键一个 向上搜,找三个图的交集,就是最好排名,向下搜,找交集,就是倒数第几名#include<cstdio>const int M=51000,N=1100000;int n,k,m,vis[M][2][4],ans[2],to[N][2][4],nex[N][2][4],tot[2][4],h[M][2][4];void add(int x,int y,
2017-11-07 11:36:46 215
原创 题
t1 没想到a了。。 就是k个点的小于m的最短路#include<cstdio>#include<queue>#include<cstring>using namespace std;const int M=5100;int m,n,Q,head[M],tot,nex[M*2],to[M*2],dis[M],vis[M];void add(int x,int y){ nex[
2017-11-06 16:32:34 158
原创 day6下
t1 函数最值 【问题描述】 给定一个 n 个数的数组 A,函数 F(x) = a[i]*x 的第 i 个二进制位。求 F 的最大值 x 为整数且 0<=x<=m.对每一位处理,如果可以,就选或不选,不选之后的都可以选,选了再继续这个过程#include<cstdio>#include<iostream>#include<algorithm>using namespace std;l
2017-11-05 10:00:53 248
原创 栅栏
暴力。。#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#include<ctime>#define inf 1000000000#define LL long longusing namespace std;int x[50],
2017-11-05 09:54:42 223
原创 day7下
t1 三向城是一个巨大的城市,之所以叫这个名字,是因为城市中遍布着数不尽的三岔路口。(来自取名力为0的出题人) 具体来说,城中有无穷多个路口,每个路口有唯一的一个正整数标号。除了1号路口外,每个路口都连出正好3条道路通向另外3个路口:编号为x(x>1)的路口连出3条道路通向编号为x*2,x*2+1和x/2(向下取整)的3个路口。1号路口只连出两条道路,分别连向2号和3号路口。 所有道路都是可以
2017-11-04 18:26:26 272
原创 day7上
t1 在桌面上放着n张纸牌,每张纸牌有两面,每面都写着一个非负整数。你的邪王真眼可以看到所有牌朝上的一面和朝下的一面写的数字。现在你需要将一些牌翻过来,使得所有牌朝上的一面中,至少有一半(≥n/2)的数字是一样的。请你求出最少需要翻几张牌,或者判断无解。 注意:在翻牌的时候,你不能把牌扔掉,不能偷偷把别的牌放进来,也不能用笔涂改牌上面的数字。离散化,在贪心,找最多的向上的,个数大于n/2的#in
2017-11-04 14:22:35 330
原创 day6上
t1 水题暴力模拟 大 C 开了一家 noip 辅导资料店,每本资料售价 5 元,且每人限购一本。前来买书的人络绎 不绝,他们带着 5 元,10 元和 20 元。可是由于启动资金有限,大 C 进完货之后手上已经没 有钱了,所以他只能用前面收的钱找钱。现在大 C 想知道他能不能成功的找钱。#include<cstdio>using namespace std;int n,a[21],x,f
2017-11-03 21:25:56 289
原创 day5下
t1 暴力模拟#include<cstdio>#include<algorithm>#define ll long long#define M 110000int a[1001],k,n,m,id[1199],x[1199],y[1100][1100];int main(){ freopen("rotate.in","r",stdin); freopen("rotate.
2017-11-03 17:16:13 342
原创 stl set 用法
转自。。。。STL中的set容器的一点总结 1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操
2017-11-03 10:42:48 245
原创 day5
t1 cube 在 n 维空间中,1个单位立方体由 2 ^n 个点组成。 他们的坐标形如 (x 1 ,x 2 ,…,x n ),x i ∈ {0,1}。 定义 n 维空间中两点的距离为其曼哈顿距离,点 p (p 1 ,p 2 ,…,p n ) 与点 q (q 1 ,q 2 ,…,q n ) 的距离为 ∑ n i=1 |p i − q i |。 现在给你单位l立方体上一点 p 以及一个整
2017-11-03 10:39:49 231
原创 day4下
t1 已知一个数列{a}的前两项a1,a2,且n>2时,f(n)=|f(n-1)-f(n-2)|。 你需要求出:这个数列中出现了多少个不同的数? 打个表一看,这个就是更相减损法,就是辗转相除#include<cstdio>#include<cmath>#include<iostream>using namespace std;#define ll long longll ans;l
2017-11-02 16:03:22 156
原创 day3上午
t1 点点星空是一张N*M的棋盘,左下角有颗星星。尤和千每次可以将星星向 右边、右上、上边移动一格。尤和千轮流移动,尤先手,问尤是否必胜? 模拟一下n&1&&m&1#include<cstdio>int n,m,t;int main (){ scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); if
2017-11-02 14:38:19 239
原创 有题day4上
t1集合 倒着弄#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int n,ans,a[1100000];int main(){ //freopen("multiset.in","r",stdin);// freopen("multiset.out","w",stdout);
2017-11-01 16:28:04 126
原创 有一个测试2(day3下)
t1 girl 这个题树一定是树的结点数 环是二,然后乘起来,边数大于点数就成零#include<cstring>#include<cstdio>int n,m;int f[110000],cnt,t[110000],vis[110000];long long ans=1;int find (int x){ return f[x]=f[x]==x?x:find(f[x]);}
2017-10-31 17:12:26 207
原创 有一些题(day2下)
t1 有一段括号序列,将一个括号修改一次需要1的代价(将左括 号变成右括号或者相反),求最小代价使得括号序列合法。 简单的模拟题。#include<cstring>#include<cstdio>char s[110000];int ans,l;int main(){ freopen("shower.in","r",stdin); freopen("shower.out
2017-10-31 11:41:30 290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人