自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mdnd1234的博客

这是一个zj蒟蒻的博客

  • 博客(164)
  • 资源 (1)
  • 收藏
  • 关注

原创 第一篇

这是我的第一篇博客,恩,恩 之后应该会陆续更一些,记录一下我的OI与生活,恩,就这样吧 记得给我刷访客量

2017-03-03 14:10:33 387

原创 APIO2012 派遣 题解

这题还是非常显然的题意大概是随便选一个点x,树上每点有点权(v[x])和一个代价(c[x]),你有一个值m,设,我们用m可以最多大于y[x]个x的子树中代价的和,求出所有点的y[x]*v[x]的值,其中最大值就是答案。非常显然用线段树合并还有可并堆的做法,不怎么会会,下次学#include<iostream>#include<stdio.h>#include<algo...

2018-07-09 10:24:19 421

原创 noip2017(AFO)游记

几经挣扎,还是AFO了 果然我还是太菜了 甚矣,予之菜 DAY1 一开场发现T1好像有点鬼畜,然后想了想exgcd觉得可能exgcd被奶中了,然后推了十分钟推不出来,人开始进入虚幻状态,于是看了一下T2感觉就是个字符串模拟题,好吧,不管了,等会做,再看看T3吧,只会k=0,算了,先敲个30分暴力吧,敲完了,嗯。。。。再码T2吧,然后也敲完了,有个大样例萎了。。??然后发现了个小错误调完了,然

2017-11-21 15:40:32 461

原创 51nod 1033骨牌覆盖 V2

矩阵乘法题 就是状压一下一列的状态然后预处理出某两种状态的转移的方案数 然后构造一个矩阵a[i][j]表示i的状态到j的状态的条数 然后直接矩阵乘法就可以了 #include #include #include #include using namespace std; const int mod=1000000007; typedef vector vec; typedef vector

2017-05-03 13:17:55 406

原创 开博客了

没错,我又开始写博客了

2017-05-03 13:12:58 429 2

原创 关于更博的问题

由于博主变懒了,所以不想更博了 所以到这里就停了 蟹蟹 就是这么简单 但是别忘了有事没事来刷一下访问量

2017-04-24 14:17:23 343

原创 BZOJ P1011[HNOI2008]遥远的行星

大概是近似估算,由于只有距离在一定远的情况下才会有贡献,所以当距离十分大的时候直接估算 一定范围暴力求 #include #include #include #include using namespace std; long long a[100005]; double f[100005],arf; int n; int main(){ scanf("%d%lf",&n,&arf);

2017-04-18 10:46:12 352

原创 BZOJ P1027[JSOI2007]合金

大概算是第一道的计算几何题?? 我们可以发现给出的三个量相加等于一,别跟我说样例,所以可以忽略一项 然后我们可以发现,如果要混合出一样东西,假设是x1,y1.x2,y2混合出x3,y3 (x1 所以题目就是要找一些点这些点连出来的多边形可以包含所有点 这样就是个凸包了,然后floyed跑个最短路 我的注释多详细 #include #include #include #include

2017-04-17 20:19:39 296

原创 BZOJ P2654 tree

神题啊 二分给白色边加上的权值,然后kruscal看看有没有正好need条边 有的话直接输出就可以了 然后证明的话不会,大概是你每条白边都加上一定的值是不会影响到最后的结果的 当然你也可以当做是显然成立的 #include #include #include #include using namespace std; int n,m,cnt,tot,ned,sumv; int u[100

2017-04-17 19:30:47 256

原创 BZOJ P3289 Mato的文件管理

交换次数就是逆序对个数,然后莫队离线处理一下 用树状数组求逆序对 #include #include #include #include #include using namespace std; struct data{ int id,rank; }; struct que{ int l,r,id; }; que q[50003]; data file[50003]; int n,m,s

2017-04-17 10:08:10 371

原创 BZOJ P1878[SDOI2009]HH的项链

直接离线加上一个巧妙的前缀和 就是类似于边表存一个某一个元素的第一次出现的位置和下一次 然后离线询问之后从左往后扫 扫到某一个元素就把这个元素的下一个位置加一,然后每一个询问求一个区间和就可以了 #include #include #include #include using namespace std; inline int read(){ int x=0; char ch=

2017-04-17 09:04:58 262

原创 混合图的欧拉回路求法

利用了网络流的自调整特性,构图,并通过最大流解决 首先混合图欧拉回路的判定就是入度=出度 我们先把有向边的贡献都算一遍,即对点入度出度的贡献 然后对每一条无向边任意定向,然后算出贡献 然后我们考虑这样显然不是正解,所以要 调整 怎么调整呢??就是把原来定向的无向边改变方向 我们想想一条无向边改变方向的贡献是多少,是2,因为一进一出就是2啊 然后我们把无向边定向后的所有入度大于出度的

2017-04-15 20:46:50 314

原创 BZOJ P3212 Pku3468 A Simple Problem with Integers

线段树区间加区间查询 记得要开long long #include #include #include #include #include using namespace std; int n,m; struct data{ int l,r; long long s,add; }t[400003]; void pushup(int k){ t[k].s=t[k<<1].s+t[k<<1|

2017-04-14 09:26:05 235

原创 最小生成树

可以意淫一下,我如果要又在最小生成树上 又在最大生成树上 只有一种可能,把与u联通的点为一个集合,把与v联通的点为一个集合 这两个集合中有且仅有长度等于L的边相连 所以题目就变成了,求割掉最少的边,把点分成两个集合,使得这两个集合中不连通 然后跑最小割 不知道思路对不对 等会下午打个代码试试

2017-04-14 08:54:53 229

原创 BZOJ P3438 小M的作物

最小割 #include #include #include #include using namespace std; const int inf=1000000000; int head[3003]; int to[5100010],c[5100010]; int next[5100010],q[3003]; int d[3003],a[3003],b[3003]; int n,m,num,

2017-04-13 19:45:18 669

原创 BZOJ P1570[JSOI2008]Blue Mary的旅行

一开始想用费用流来着 但是这个费用流还要两条路的min?? 这很不兹糍 然后想了一下两条路,然后不能重合,看来要拆点啊, 然后想着拆点就想到可以直接按天数一天一天拓展点,直到满流这一天就是答案 代码过一会再发 clock: 19:11

2017-04-11 19:11:41 512

原创 BZOJ P3504[Cqoi2014]危桥

直接最大流,但是可能会a1流到b2这样怎么办 然后我就不会了 据网上说交换一下b1,b2再流一遍就可以了??我不会证 #include #include #include #include #include using namespace std; const int T=51; bool flag; int n,a1,a2,an,b1,b2,bn,cnt,ans; int h[53],q[

2017-04-11 15:32:56 355

原创 BZOJ P2756[SCOI2012]奇怪的游戏

#include#include #include #include #include #define inf (1LL<<50) #define p(x,y) (x-1)*m+y using namespace std; const int xx[4]={0,0,1,-1}; const int yy[4]={1,-1,0,0}; long long s0,s1; int c0,c1,test,

2017-04-11 13:35:28 320

原创 BZOJ P4590[Shoi2015]自动刷题机

因为考虑到问题的单调性 直接二分最大最小值然后模拟判断一下 #include #include #include #include #include using namespace std; long long n,m,a[100003]; long long l,r,ans1,ans2; long long calc(long long x){ long long ans=0

2017-04-10 20:51:05 498

原创 BZOJ P3158 千钧一发

题目中的条件有一个非常好的性质 就是奇数都满足第一条 (2a+1)^2+(2b+1)^2=4a^2+4a+1+4b^2+4b+1=2*(2a^2+2a+2b^2+2b+1) 因为有个2所以为了成为平方数,后面的数一定得能质因数分解出一个2,但是后面的数显然是奇数,所以不能分解2 然后偶数都能满足第二条 这很简单吧gcd(2a,2b)>=2 然后按照偶数奇数建一个二分图 一旦是不符合的

2017-04-10 20:03:22 1408

原创 BZOJ P2661[BeiJing wc2012]连连看

比较简单的网络流题目 每个数拆点,然后按条件连边然后跑最大费用最大流 但是为什么这样就会每两个点一一对应呢? 我也不知道

2017-04-10 19:02:27 320

原创 BZOJ P2132 圈地计划

同happiness dfs写错调了半天的很弱的我 #include #include #include #include #include using namespace std; const int inf=0x7fffffff; const int T=10001; int n,m,cnt=1,tot,ans; int head[10003],h[10003]; int a[103][1

2017-04-10 15:30:16 263

原创 BZOJ P3624[Apio2008]免费道路

........................................................................................................................................................................................................

2017-04-10 13:30:31 412

原创 BZOJ P1821[JSOI2010]Group部落划分

直接贪心 要求最短的距离最长 就让尽量短的连在一起,然后按边长度排序之后类似于kruscal就可以了 #include #include #include #include #include using namespace std; int n,k,cnt; int x[1003],y[1003],father[1003]; struct data{ int x,y; double v;

2017-04-10 11:34:12 343

原创 这只是实验而已

你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的?? 你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的?? 你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的??你是怎么看到这个东西的??

2017-04-10 10:56:43 357 4

原创 BZOJ P3211 花神游历各国

因为多次开根之后会变成1,0,然后1,0再开根是开不下去了的 所以打个标记这个区间是否为都为1  ||  0 然后再存个区间sum值 然后修改就直接暴力改就可以了 #include #include #include #include using namespace std; long long a[100001];int n,m; struct data{ int l,r; l

2017-04-10 09:43:16 265

原创 BZOJ P2127 happiness

这题好难啊QAQ; 我的最小割还是太差了。然后我下面来口胡一下 我们先转化一下,把最大的收益转化成最小的损失,然后通过最小割来算最小的损失 然后我们瞎jb构一下图,设x,y为相邻的两个同学 然后S向x连一条a的边,S向y连一条b的边,x向T连一条c的边,y向T连一条d的边,x,y之间互连一条e的边 然后我们就可以列出方程了 a+b=v1                       (1

2017-04-10 08:36:54 822

原创 BZOJ P1497[NOI2006]最大获利

先把每一个边进行一个转化,转化为一个点,这很兹糍吧 然后建立一个二分图,一边是所有的点,一边是边所扩展出来的点 然后边所扩展出来的点都连向都连接的点,然后求一遍最大权闭合子图即可

2017-04-09 15:58:22 587

原创 计算几何

开始学习计算几何: 1 首先是精度控制,由于double存在精度误差,所以不能直接比较double fabs(double x){ if(x<0){ return -x; }else{ return x; } } const double eps=1e-7; int dcmp(double x){ if(fabs(x)<eps){ return 0; }else{ if

2017-04-09 11:47:23 429

原创 [网络流24题]骑士共存问题

二分图最大独立集裸题 首先把棋盘黑白染色,使相邻格子颜色不同 把所有可用的黑色格子看做二分图X集合中顶点,可用的白色格子看做Y集合顶点 建立附加源S汇T,从S向X集合中每个顶点连接一条容量为1的有向边,从Y集合中每个顶点向T连接一条容量为1的有向边 从每个可用的黑色格子向骑士一步能攻击到的可用的白色格子连接一条容量为无穷大的有向边 求出网络最大流,要求的结果就是可用格子的数量减去最大流量

2017-04-09 11:15:41 608

原创 [网络流24题]数字梯形问题

规则(1) 把梯形中每个位置抽象为两个点,,建立附加源S汇T 1、对于每个点i从到连接一条容量为1,费用为点i权值的有向边。 2、从S向梯形顶层每个连一条容量为1,费用为0的有向边。 3、从梯形底层每个向T连一条容量为1,费用为0的有向边。 4、对于每个点i和下面的两个点j,分别连一条从到容量为1,费用为0的有向边。 求最大费用最大流,费用流值就是结果。 最大权不相交路径

2017-04-09 11:09:46 468

原创 勇士必夺冠

勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装 勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装 勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装 勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠我直播女装勇士不夺冠

2017-04-08 14:21:38 473

原创 BZOJ P4205[FJ2015集训]卡牌配对

一眼看到貌似是二分图匹配 但是显然跑不出,图太大了 于是我们考虑减少边的个数,然后实现加速 考虑a项属性值能被x整除且b项能力值能被y整除的所有点 只要是在两侧一定能够匹配,所以我们在匹配的网络流模型中间增加一排这样的点,满足要求的左右点分别与它相连,边权为正无穷。 考虑到x和y只需是质数,这样的点共有至多3*46*46个(1~200质数共46个),而200 于是我们构成了一个7000

2017-04-07 20:09:54 385

原创 BZOJ P3744 Gty的妹子序列

分块+树状数组+可持久化线段树 如果是离线求区间逆序对数(bzoj3289),可以用莫队+树状数组解决,这道题强制在线显然不能这样做 先考虑分块,f[i][j]表示第i块的起始位置到第j个点的逆序对数,这个可以用树状数组在O(n*sqrt(n)*logn)的复杂度预处理。 然后对于每次询问,如果左右端点在同一块内,树状数组暴力计算。 否则找到左端点后面第一个完整的块t,f[t][r]直接统

2017-04-07 09:18:31 351

原创 BZOJ P3294[Cqoi2011]放棋子

这绝对神题 dp+容斥原理。 g[k][i][j]表示第k种颜色的棋子恰好占据i行j列的方案数,所以 g[k][i][j]=C(i*j,a[k])-sigma(g[k][x][y]*C(i,x)*C(j,y)) (即第k种棋子恰好占据x行,y列的方案数【0 f[k][i][j]表示前k种颜色的棋子恰好占据i行j列的方案数,那么 f[k][i][j]=sigma(f[k-1][x][y]*

2017-04-06 21:00:26 373

原创 BZOJ P1930[Shoi2003]pacman 吃豆豆

费用流 直接拆点限流之后跑最小费用最大流 但是为什么这样就不会有相交的路线呢? 这不是显然吗? 这尼玛还用说? 交叉不交叉都是一样的 因为要往右上走,所以没什么关系,这个条件是废掉的 #include #include #include using namespace std; const int inf=0x7fffffff; int n,cnt=1,ans,T,S; int he

2017-04-06 20:09:29 319

原创 BZOJ P1044[HAOI2008]木棍分割

第一问二分答案+判断 第二问DP发现空间时间双超 然后下面是优化 空间:直接滚存即可 时间:发现转移的一段是连续的区间,直接单调队列优化 降到O(MN)因为每一个元素只可能入队和出队一次 #include #include #include #include using namespace std; const int zyy=10007; int f[2][50003]; int s[

2017-04-06 18:25:41 287

原创 BZOJ P3674 可持久化并查集加强版

题目即题解 说是可持久化并查集其实就是可持久化数组 通过主席树来维护一个支持历史版本的可持久化数组 然后deep的话是用来加速的,启发式合并 但是讲道理为什么deep加和不加差10+s 代码鸣谢hzwer #include #include using namespace std; inline int read(){ int x=0;char ch=getchar();

2017-04-06 09:05:45 347

转载 主席树

转载自:http://blog.csdn.net/fop_zz/article/details/69240536 可持久化线段树,俗称主席树  我其实也不是很懂就来瞎口胡一通看看能不能自己卡死自己而已。。 所谓可持久化,即支持询问之前的状态  比如经过了k次操作后,我们仍然能知道第i次(1 ”然而这只是主席树很小的一部分作用“——szb  蒟蒻瑟瑟发抖  那这要怎么做到呢

2017-04-06 08:07:16 634 2

原创 BZOJ P3437 小P的牧场

无脑斜率优化 #include #include #include using namespace std; long long f[1000003],sum[1000003],mul[1000003],a[1000003],q[1000003]; int b[1000003]; double slop(int j,int k){ return((double)(f[j]+mul[j]-

2017-04-05 20:37:19 241

易语言 求完全数

这是由易语言制作的求完全数的程序,希望大家喜欢

2014-08-21

空空如也

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

TA关注的人

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