自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mengbi_er的博客

就让我永远不在这里写什么有意义的话 ——by alone_wolf

  • 博客(31)
  • 收藏
  • 关注

原创 bzoj2229: [Zjoi2011]最小割

听说只有n-1种最小割,于是可以计算一棵最小割树(并不知道怎么证QwQ),不需要真的写出一棵树,只要 不断分治求最小割在ans数组更新答案即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;queue<int> q;int

2017-09-25 10:05:05 219

原创 bzoj2257: [Jsoi2009]瓶子和燃料

由裴蜀定理,最后结果为所有数最大公因数,所以预处理公因数然后看最大的次数>=k的数。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch

2017-09-22 08:43:35 301

原创 bzoj1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪

随便dp。(我是不会告诉你只是为了500题纪念的)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=getchar(

2017-09-21 15:00:24 522 2

原创 bzoj3531: [Sdoi2014]旅行

用类似主席树的方法动态开点链剖+线段树,分宗教维护线段树。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=getch

2017-09-20 22:05:04 207

原创 带花树算法浅谈&&bzoj4405: [wc2016]挑战NPC

带花树简介带花树用来求解一般图的最大匹配问题。前置技能基础图论知识。 极大匹配:对于一个匹配,若无法在原图中找到任意边加入匹配,则称该匹配为一个极大匹配。 最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配 。 交替路:从一个未匹配点出发,依次经过非匹配边、匹配边、非匹配边 … 形成的路径叫交替路。 增广路:对于一条路径,从一个未匹配点出发,走交替路,终止于另一个未匹配

2017-09-18 10:53:37 622

原创 【模板】FFT

不是我写的。作者见这里:传送门#include <cmath>#include <queue>#include <cstdio>#include <iomanip>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define N 400000#define ll long lon

2017-09-18 10:48:54 433

原创 bzoj2186: [Sdoi2008]沙拉公主的困惑

显然答案等于ϕ(m!)∗(n!/m!) \phi(m!)*(n!/m!) n!很容易求。 ϕ(x)=x∗p1−1p1∗p2−1p2∗... \phi(x)=x*\frac{p_1-1}{p_1}*\frac{p_2-1}{p_2}*... 所以ϕ(m!)m!=p1−1p1∗p2−1p2∗...\frac{\phi(m!)}{m!}=\frac{p_1-1}{p_1}*\frac{p_2-1}

2017-09-14 15:33:30 213

原创 bzoj1293: [SCOI2009]生日礼物

考虑双指针,显然区间中必须有一种颜色一个,所以如果队首的元素在区间中出现过两次以上,就可以将它弹出。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int read(){ char ch=getchar();int f

2017-09-13 14:16:43 213

原创 在这里写上noip后要填的坑吧

1.树套树 2.CDQ分治 3.半平面交 4.FFT 5.LCT 6.KD-tree 7.后缀自动机 8.数学题…

2017-09-12 21:25:22 322

原创 bzoj2743: [HEOI2012]采花

考虑将询问离线。考虑每种颜色的花对答案的贡献,我们发现,对于一个位置上的花,若左端点在从1到上一个与该位置颜色相同的花的位置上,则该颜色对答案有贡献。所以将所有询问按1右端点从小到大排序,定义pre[i]为与该位置距离最近的与它颜色相同的花。对于一个位置,将pre[pre[i]]+1–pre[i]这段区间+1,然后每次询问的答案就是L上的值了,可以用线段树区间加,单点查询来做。#include<io

2017-09-12 15:39:15 250

原创 bzoj1208: [HNOI2004]宠物收养所

应某人要求把这题放出来QAQ。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,tree[80005][2],root,t1,t2,size,ans,fa[80005],s[80005],x1,x2;int mod=1000000;int r

2017-09-11 20:36:44 72

原创 bzoj2245: [SDOI2011]工作安排

费用流模板,调了半天把ans改成 long long就过了什么鬼… #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;queue<int> q;const int inf=0x7f7f7f7f;int read(){

2017-09-11 16:07:51 206

原创 bzoj3781: 小B的询问

莫队,队询问排序,以左端点块为第一关键字,右端点为第二关键字,离线处理。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define ll long longusing namespace std;int read(){ char ch=getchar(

2017-09-11 09:31:01 291

原创 bzoj3527: [Zjoi2014]力

只想贴个模板QAQ。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=getchar(

2017-09-11 08:48:51 188

原创 bzoj2819: Nim

链剖维护路径异或值。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=getchar(); while(ch>

2017-09-09 21:23:57 251

原创 bzoj2946: [Poi2000]公共串

将所有串连起来,中间加一个分隔符,二分答案,有连续ht>=mid且每个串中都出现一次就合法,否则不合法,一定要将分隔符特判掉,否则=0会输出1。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar()

2017-09-08 18:16:49 269

原创 bzoj3944: Sum

挖坑不填。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define ll long longusing namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=getchar(

2017-09-08 15:02:44 227

原创 Codeforces Round #433 (Div. 2) E. Boredom

题目大意问多少个两个点确定的矩形与给定区间有交。题解其实答案就是所有形成的矩形减没有交的矩形,那么由容斥原理,就是给定区间的4边的矩形减4个角,这个可以用主席树之类的维护。#include<map>#include<cmath>#include<queue>#include<cstdio>#include<cstring>#include<iostream>#include<algori

2017-09-08 08:50:51 281

原创 bzoj3732: Network

求一边最小生成树就能保证两点之间边最小,然后lca搞搞就行了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=get

2017-09-08 08:45:10 244

原创 Codeforces Round #433 (Div. 2) D. Jury Meeting

题目大意所有人要去0号城市,并且只坐飞机,飞机只有去0的和从0出发的,所有人要呆k天,问最小机票花费。题解对去的和返回的飞机分类排序,去的从早到晚,回来的从晚到早,处理每个时间上所有人去0的最小代价(由于排好序,所以选择时选的是时间最小的),从晚到早选返回的,所有人都满足时算一下代价,最后找出代价最小值。#include<iostream>#include<cstdio>#include<cst

2017-09-07 14:28:07 223

原创 Codeforces Round #433 (Div. 2) C. Planning

题目大意飞机延误k分钟,每分钟只能起飞一架,每架飞机每晚一分钟有个代价,求最小代价。题解显然前k分钟代价不可避免,直接加入优先队列,其余的先加入优先队列并取出队首。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int read

2017-09-07 14:20:05 238

原创 Codeforces Round #433 (Div. 2)B. Maxim Buys an Apartment

题目大意一个有基佬气息的人想让他左或有有邻居,知道邻居数,但不知道位置,求最少和最大能选几个位置。题解显然k=0 ans:0,0 k=n min=0; else min=1; max=max(n-k,2*k)(一个邻居有两个位置)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using na

2017-09-07 14:16:17 211

原创 Codeforces Round #433 (Div. 2)A. Fraction

题目大意求分子分母和为n的最大真分数。(分子分母互质)题解暴力QAQ。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') c

2017-09-07 14:11:56 193

原创 bzoj1821: [JSOI2010]Group 部落划分 Group

最小生成树裸题没看出来QAQ,连通块数小于k就输出。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<cmath>using namespace std;int read(){ char ch=getchar();int f=0;

2017-09-05 20:20:36 279

原创 bzoj4720: [Noip2016]换教室

dp裸题,求一遍floyd,dp式 f[i][j][0]=min(f[i−1][j][0]+(double)dis[c[i−1]][c[i]],f[i−1][j][1]+(1.0−k[i−1])∗(double)dis[c[i−1]][c[i]]+k[i−1]∗(double)dis[d[i−1]][c[i]]);f[i][j][0]=min(f[i-1][j][0]+(double)dis[c[

2017-09-05 19:15:34 344

原创 bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式

求后缀数组,二分答案,有超过k个连续height>=mid 就符合。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int read(){ char ch=getchar();int f=0; while(ch

2017-09-05 14:20:30 239

原创 bzoj1412: [ZJOI2009]狼和羊的故事

裸最小割(模板)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;queue<int> q;const int inf=0x7f7f7f7f;int read(){ char ch=getchar();int f=

2017-09-05 10:54:05 295

原创 bzoj1996: [Hnoi2010]chorus 合唱队

区间dp。 f[i][j][1/0]表示[i,j]区间上一个选左或右。 f[i][j][0]=f[i+1][j][0]*(a[i]#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int mod=19650827;int read(){

2017-09-05 09:10:08 306

原创 bzoj2006: [NOI2010]超级钢琴

维护前缀和,用线段树维护距离一个点[L,R]的最大值,并记录左右区间限制,将它加入优先队列,当取出一个点时,加入[L,where-1]和[where+1,R]两个值,记录左右限制。具体细节看代码。(写的不可读QAQ)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>usi

2017-09-04 14:46:16 282

原创 bzoj2809: [Apio2012]dispatching

练习一下启发式合并,就照着别人写了一遍。(好菜QAQ) 从后往前枚举管理者,贪心选择最便宜的忍者,用splay+启发式合并维护。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=

2017-09-03 21:33:50 199

原创 bzoj4517: [Sdoi2016]排列计数

f[n]=(f[n-1]*f[n-2])(i-1); ans=c(n,m)*f[n-m].#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'

2017-09-03 19:20:21 202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除