自定义博客皮肤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

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

原创 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 274

原创 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 476 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 177

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

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

2017-09-18 10:53:37 605

原创 【模板】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 416

原创 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 203

原创 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 187

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

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

2017-09-12 21:25:22 316

原创 bzoj2743: [HEOI2012]采花

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

2017-09-12 15:39:15 230

原创 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 56

原创 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 197

原创 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 261

原创 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 172

原创 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 216

原创 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 255

原创 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 215

原创 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 250

原创 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 229

原创 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 211

原创 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 230

原创 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 194

原创 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 185

原创 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 267

原创 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 331

原创 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 222

原创 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 270

原创 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 277

原创 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 246

原创 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 181

原创 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 191

原创 bzoj2406: 矩阵

直接求不好求想到网络流模型,对每行每列算和,二分答案,对每行建点xi,每列建点yi,从s到xi连[sum-mid,sum+mid]边,对每列yi到t连[sum-mid,sum+mid]边,代表行的点和代表列的点连[L,R]的边,跑上下界可行流(注释部分为求方案)。#include<iostream>#include<cstdio>#include<cstring>#include<algori

2017-08-31 11:04:27 314 2

原创 bzoj2405: 数字

打表找规律发现22680时出现循环,然后就随便搞搞。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define ll long longll n,m,a[22681];long long read(){ char ch=getchar();l

2017-08-31 10:58:10 328 1

原创 Codeforces Round #430 (Div. 2) D. Vitya and Strange Lesson

题目大意每次对数组异或一个值,求数组的mex(没在数组出现的最小非负整数)题解对所有数建一棵二进制trie树,记录修改的二进制位,贪心选择,如果修改的状态在原数组中没出现过,则之后的二进制位都可以与答案相同(即结果为0),如果当前节点子树没满,则可以与当前修改状态相同,否则只能与修改相反。(我好弱啊模板题调1小时)#include<iostream>#include<cstdio>#includ

2017-08-30 15:04:13 231 1

原创 Codeforces Round #430 (Div. 2) B. Gleb And Pizza

题目大意有多少圆在外面圆内里面圆外。题解求一下圆心到原点距离,然后加r减r判断即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int read(){ char ch=getchar();int f=0;

2017-08-30 14:57:34 219 2

原创 Codeforces Round #430 (Div. 2) A. Kirill And The Game

是否存在,l<=a<=r,a*k==b,x<=b<=y. 暴力模拟,不要企图o(1)算。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'|

2017-08-30 14:54:19 181

原创 bzoj3524: [Poi2014]Couriers&&2223: [Coci 2009]PATULJCI

主席树模板题。#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-08-28 21:46:58 291 2

原创 Codeforces Round #428 (Div. 2) E. Mother of Dragons

题目大意n个城堡间有些城堡有墙,将k点能量分给城堡,每个墙的防御值为u*v,求防御值最大是多少。 (n<=40,k<=1000)题解分析一下(猜一下)结论知,平均分给最大团最大。求最大用类似A*的Bron-Kerbosch算法。 证明: #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using

2017-08-28 13:18:13 261

原创 bzoj2989: 数列&&4170: 极光

二维线段树搞搞。#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-08-25 10:12:41 229

原创 AIM Tech Round 4 (Div. 2) D. Interactive LowerBound

题目大意每个点的next为比它大的下一个数得位置,每次询问位置,告诉你valuei和next,求比x大的最小的数。题解考场上不会搞QAQ,2小时左右yy了个做法,然后疯狂wa on pretest 2,早上读读题才发现要判-1,改了还是wa 3,忽然发现自己输出了位置,gg。#include<iostream>#include<cstdio>#include<cstring>#include<

2017-08-25 08:27:58 695

原创 AIM Tech Round 4 (Div. 2) C. Sorting by Subsequences

题目大意每次选一个子序列,对它们进行排序,每个位置只能选1次,问最多选的次数。题解随便划一划就觉得是置换,然后就觉得很有道理,然后猜结论,然后xjb码一码,然后pp,然后ac。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ c

2017-08-25 08:23:07 421

空空如也

空空如也

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

TA关注的人

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