- 博客(123)
- 收藏
- 关注
原创 [BZOJ3993][SDOI2015]星际战争(二分+最大流)
题目描述传送门题解二分+最大流的思路很好想吧 二分时间mid,对于每一个武器s->x,mid*bi,对于每一个机器人x->t,ai,对于每一个武器x和它能攻击到的机器人y,x->y,inf,判断是否能满流即可 精度还是比较良心的 写网络流总是数组开小真是醉了 再开小数组自断双手代码#include<algorithm>#include<iostream>#include<cstring>
2017-01-31 21:04:32 695
原创 [BZOJ1283]序列(费用流)
题目描述传送门题解问题可以转化为选k次,每次选一个子序列,每一次选连续m个里面只能选一个 对序列中每一个元素建立一个点pip_i s->p1p_1,k,0,pnp_n->t,k,0 pip_i->pi+1p_{i+1},k,0 对于1<=i<=n-m,pip_i->pi+mp_{i+m},1,aia_i 对于n-m+1<=i<=n,pip_i->t,1,aia_i 最大费用最大流代码#i
2017-01-30 21:41:30 951
原创 [BZOJ1391][Ceoi2008]order(最小割)
题目描述传送门题解对于每一个工作,s->x,能赚到的钱 对于每一个机器,x->t,买它用的钱 对于每一个工作x用到的机器y,x->y,租的钱 答案即为sigma能赚到的钱-最小割这其实是最大权闭合子图的一个变形 最大权闭合子图在原图中的边连的是inf,这条inf的边限制了相连的两个点选了一个就不能选另外一个 而这里是租金,即两个点可以同时选,但是必须付出一定的代价明确的dinic当前弧优化
2017-01-30 21:08:56 555
原创 [BZOJ3438]小M的作物(最小割)
题目描述传送门题解比较傻逼的建图方法同happiness更科学一点的是最大权闭合子图 PoPoQQQ的题解: 首先我们先把所有的元素都放在集合A中 获得所有的a[i]和c1[i] 然后考强调内容虑最大权闭合子图 一个点如果不选就放在A集合中 选就放在B集合中 一个点如果选 那么就要扣除相应的ai并获得相应的b[i] 于是每个点的权值为b[i]-a[i] 将所有的子集拆点变成两个 一个子集
2017-01-30 16:11:20 644
原创 [BZOJ3158]千钧一发(最小割)
题目描述传送门题解每个点拆点xi,yi,s->xi,yi->t,bi 对于不能同时选的两个点ij,xi->yj,inf,xj->yi,inf 答案为(2∗∑i=1nbi−maxflow)/2(2*\sum\limits_{i=1}^nb_i-maxflow)/2 刚开始的时候只对于j>i的连边,然后∑i=1nbi−maxflow\sum\limits_{i=1}^nb_i-maxflow,但是
2017-01-30 12:38:18 1544
原创 [BZOJ1497][NOI2006]最大获利(最小割)
题目描述传送门题解对于每一个中转站,s->i,pi,割掉表示花费pi建立中转站 对于每一个顾客,i->t,ci,割掉表示放弃ci的收益 如果一个顾客x需要某一个中转站y,那么y->x,inf,因为py和cx不能同时满足,必须选一条割掉 所有顾客的收益之和减去最小割即为答案代码#include<algorithm>#include<iostream>#include<cstring>#in
2017-01-30 11:09:00 703
原创 [BZOJ1711][Usaco2007 Open]Dining吃饭(最大流)
题目描述传送门题解对于每一个食物ai,s->ai,1 对于每一个饮料bi,bi->t,1 对于每一头牛,拆点ci->di,1 对于每一头牛选择的食物和饮料ai->ci,di->bi代码#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;const int max_n=
2017-01-30 09:52:08 534
原创 [BZOJ2212][Poi2011]Tree Rotations(线段树合并)
题目描述传送门题解好像很久以前有一个神人写过什么证明说n个logn的链(线段树上)合并起来复杂度是nlogn的? 那么空间复杂度不会超过时间复杂度?总逆序对数=左子树逆序对数+右子树逆序对数+左子树对右子树的影响 分别计算交换之前交换之后的然后再判断换不换 计算某一个子树对另一个子树的影响与这两个子树内部的顺序无关 如何计算一个子树对另一个子树的影响?分别对这两个子树建立权值线段树 将这两
2017-01-29 21:53:58 1407 1
原创 [BZOJ3211]花神游历各国(线段树)
题目描述传送门题解同上帝造题的七分钟2 区间修改全部下放到叶子节点 对于开方到0或1不用再修改的点打标记代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define LL long long#define N 100
2017-01-29 19:36:37 834
原创 [BZOJ1651][Usaco2006 Feb]Stall Reservations 专用牛棚(线段树)
题目描述传送门题解把所有区间覆盖了之后求覆盖的最大值即可 线段树裸题。。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 1000005int n,m;int maxn[N*4],delta[N*4]
2017-01-29 19:09:43 840
原创 [BZOJ1828][Usaco2010 Mar]balloc 农场分配(贪心+线段树)
题目描述传送门题解按照右端点第一关键字(从小到大)左端点第二关键字(从大到小)排序 贪心选即可 如何保证正确性? 其实就是保证选了当前的以后的不会再有更优的方案代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#defi
2017-01-29 18:51:37 703
原创 [BZOJ3907]网格(卡特兰数+组合数学+高精度)
题目描述传送门题解这道题和买票找零问题是差不多一样的 计算的时候需要高精度 分解质因数之后只需要一个高精乘单精和一个高精减就可以了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 10000int n,
2017-01-29 17:51:05 842
原创 卡特兰数 学习笔记
网上关于卡特兰数的讲解一大片,所以就懒得再自己写一遍了 贴上几个觉得不错的讲解 小思Catalan数 从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南
2017-01-29 12:37:41 586
原创 [BZOJ1856][Scoi2010]字符串(卡特兰数+组合数学)
题目描述传送门题解答案Cnn+m−Cn+1n+mC_{n+m}^n-C_{n+m}^{n+1},模数是质数所以直接处理阶乘然后快速幂计算逆元就行 至于这个公式的推导可以参考卡特兰数的非常规分析 首先Cnn+mC_{n+m}^n是总的方案数,从中减去不合法的方案 对于一个不合法的方案,假设从第2k+1位开始不合法,那么之前一定有k+1个0,k个1,如果将0,1互换就变成了一共有n+1个1,m-1
2017-01-29 11:23:57 769
原创 [BZOJ2982]combination(组合数学lucas定理)
题目描述传送门题解lucas定理裸题。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define Mod 10007int T,n,m,ans;int mul[Mod+1];void calc(){ mul[
2017-01-28 19:01:47 741
原创 [BZOJ1770][Usaco2009 Nov]lights 燈(高斯消元)
题目描述传送门题解orz繁體中文 高斯消元解異或方程組 最後需要暴搜自由元 一定要加一个最简单的最优化剪枝,否则会tle…代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<bitset>using namespace std;int n,m
2017-01-28 18:36:42 724
原创 [BZOJ3747][POI2015]Kinoman(线段树)
题目描述传送门题解刚开始想简单了,比较有趣的一道题 首先预处理每一个部电影与其相同的下一部电影的位置 首先将所有的电影的第一个赋成正权,第一个的下一个赋成负权,做一遍前缀和每一个点就表示了[1,i]区间的值 左端点向右移动的时候用线段树动态修改和维护代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdi
2017-01-27 17:35:53 998
原创 [BZOJ1532][POI2005]Kos-Dicing(二分+最大流)
题目描述传送门题解二分答案mid 最大流判断 s->每场比赛,1 每场比赛->参加这场比赛的两个人,1 每个人->T,mid 判断是否能满流即可代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cmath>using namespace
2017-01-25 15:48:06 733
原创 [HDU1814]Peaceful Commission(2-SAT)
题目描述传送门题解经典的2-SAT问题,要求输出字典序最小的解 首先贪心地选最小的,每一次选择将其影响的点都修改,然后判断是否合法代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 40005int n,m
2017-01-25 15:43:51 565
原创 [POJ3678]Katu Puzzle(2-SAT)
题目描述传送门题解很显然的2-SAT问题 需要注意的一点是,如果一个必选1或必选0,那么就从不必选的向必选的连边代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 4000005char opt[10];
2017-01-25 15:39:29 374
原创 [POJ3207]Ikki's Story IV - Panda's Trick(2-SAT)
题目描述传送门题意:给出圆上的n个点,某些点之间有连线,连线可以从圆内也可以从圆外连,问是否存在一种方案使所有的连线不相交(相交在圆上的除外)。题解很显然的2-SAT问题 对于每一对点有两个选择:从圆内连和从圆外连 限制:连线不能相交代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#inclu
2017-01-25 15:37:35 850
原创 [HDU3622]Bomb Game(2-SAT)
题目描述传送门题解最小值最大,二分答案(实数) 判定? 二分出答案mid之后相当于是有一些点不能同时选(距离<<mid) 同时每一组两个点必须选一个 就是一个经典的2-SAT问题 我们只需要判断是否有解即可 假设A1,B2A_1,B_2不能同时选,那么如果选A1A_1的话,B1B_1是必选的 同样地,如果选B2B_2,那么A2A_2必选 那么连边A1A_1->B1B_1,B2B_2-
2017-01-21 15:44:57 781
原创 [BZOJ2732][HNOI2012]射箭(二分+半平面交)
题目描述传送门题解首先可以二分答案 如何判定? 对于每一个靶子 ax2+bx−y2<=0ax^2+bx-y_2<=0 ax2+bx−y1>=0ax^2+bx-y_1>=0 x,y1,y2x,y_1,y_2是常数,就相当于是两个关于a,b的方程,然后搞两个半平面(详情参考高中数学课本必修5线性规划问题) 所有的半平面有交说明有解 不过这道题精度很卡,建议eps开小一点然后用long do
2017-01-20 20:39:06 645
原创 [BZOJ3530][Sdoi2014]数数(AC自动机+数位dp)
题目描述传送门题解今天胡策gty竟然原搬sdoi原题… 写完顺手过了样例,写暴力对拍竟然不出错!自己也吃了一惊,感觉稳得很 结果没处理前导0…GG把所有的数字串丢到AC自动机里去 f[i][j][0/1][0/1]表示第i位数,匹配到AC自动机的第j个节点,现在是否填过不为0的数,是否卡上界的方案数 处理前导0的时候就是如果前面没有填过不为0的数那么一直停留在AC自动机的根节点 注意fai
2017-01-19 21:51:34 838
原创 [POJ2451]Uyuw's Concert(半平面交)
题目描述传送门题解nlogn半平面交 atan2精度太差,cmp不能加eps代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 50005const double eps=1e-9;int dcmp(do
2017-01-19 21:30:48 569
原创 [BZOJ2822][AHOI2012]树屋阶梯(卡特兰数+组合数学+高精度)
题目描述传送门题解答案就是卡特兰数 没觉得这个搭建的方法很像二叉树?代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 1000int n;struct data{int a[N];}ans;int p
2017-01-18 20:20:14 859
原创 [BZOJ1485][HNOI2009]有趣的数列(卡特兰数+组合数学)
题目描述传送门题解答案是卡特兰数,因为…打表可知? 但是实际上这道题可以抽象成一个卡特兰数的经典问题——出栈序列问题。 也就是说,问题等价为1-n依次入栈有多少可能的出栈序列 题目要求满足两个条件:奇数项和偶数项分别单增,并且每两个相邻的奇数项和偶数项满足奇数项小于偶数项 可以把这个问题看做:将1-n填到2n个空格中,填到奇数项时必须满足上一个奇数项已经有数,这时相当于是一个元素入栈;填到偶
2017-01-18 19:19:24 801
原创 [BZOJ1038][ZJOI2008]瞭望塔(半平面交)
题目描述传送门题解首先把底下的直线都用半平面交搞一下,然后上面会形成一个凸壳 那么答案一定在底下的转折点或者凸壳上的定点取到 因为…分段函数的极值一定在分段点? 然后暴力、枚举、求交点… 可关键是这题的精度丧心病狂啊…我的代码精度<=1e-9,半平面交的初始范围必须是1e10或者1e11才对…代码#include<algorithm>#include<iostream>#include<
2017-01-18 18:29:16 765
原创 [BZOJ2178]圆的面积并(辛普森积分)
题目描述传送门题解这里的辛普森积分就不是算函数值了,而是算覆盖到的长度 有一个横坐标了之后O(n)O(n)枚举圆算弦长然后做一遍线段覆盖就行了 一遍过样例感觉好爽 然而被卡得狂T不止 主要有两个优化: ①调用simpson的时候多记录几个f值在下一次少算一些。能快好多 ②把内含的圆去掉。能快好多好多代码#include<algorithm>#include<iostream>#inc
2017-01-18 16:36:51 1233
原创 [HDU1724]Ellipse(辛普森积分)
题目描述传送门题解辛普森积分裸题 答案要乘2吖,因为椭圆是两半代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;const double eps=1e-10;int dcmp(double x){ if (x<=e
2017-01-18 14:59:46 903
原创 [BZOJ2618][Cqoi2006]凸多边形(半平面交)
题目描述传送门题解半平面交裸题 注意判断直线和线段是否相交的时候要特判线段在直线上的情况,否则有可能导致被0除代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 505const double eps=1e
2017-01-18 09:26:49 800
原创 [BZOJ1336][Balkan2002]Alien最小圆覆盖(最小圆覆盖)
题目描述传送门题解最小圆覆盖:随机增量法 欢迎来抄模板题代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 100005const double pi=acos(-1.0);const double ep
2017-01-18 08:41:16 498 2
原创 [BZOJ2829]信用卡凸包(凸包)
题目描述传送门题解和Wall那道题有点像,先求一个凸包然后加上一个圆周 注意输入的是“圆滑处理前”的a和b,需要自己砍掉半径代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 400005const dou
2017-01-18 08:04:24 983
原创 [BZOJ1670][Usaco2006 Oct]Building the Moat护城河的挖掘(凸包)
题目描述传送门题解凸包裸题。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 5005const double eps=1e-9;int dcmp(double x){ if (x<=eps&&
2017-01-18 07:36:44 608
原创 [BZOJ2111][ZJOI2010]Perm 排列计数(组合数学+lucas定理)
题目描述传送门题解首先第一个位置肯定是1 若把i的两个儿子看做i*2和i*2+1,这样就形成了一颗以1为根的有根树 这棵树的形态是不变的,我们需要做的就是将1-n填到每一个节点里然后保证父亲小于儿子 对于一颗子树,我们考虑怎样选才能满足要求,可以发现由于数是1-n,两两数之间的相对大小是不变的,也就是说,不会出现这棵子树中可以填2,3,4而不能填3,4,5的情况 而假设我们选出了若干数填到这
2017-01-16 20:32:42 553
原创 [BZOJ2467][中山市选2010]生成树(组合数学)
题目描述传送门题解这道题不应该认为点是不相同的,而是边是不相同的,从样例就可以看出来 枚举中间的环删掉了i条边(CinC_n^i种选择),删掉这i条边之后形成了一个大环和若干个五边形,那么在这个大环上随便选一条边(4*i种选择),在每一个五边形上随便选一条边(4n−i4^{n-i}种选择),相乘就是当前答案,然后全部相加就是答案 popoqqq大爷有一种非常厉害的做法orz:http://blo
2017-01-16 19:32:20 472
原创 [BZOJ3505][Cqoi2014]数三角形(组合数学+gcd)
题目描述传送门题解三角形数=随便选出3个点-3点共线的 总数就是C3n∗mC_{n*m}^3 首先减去在横竖直线上的3点共线的 然后n*m枚举一条斜线,这条斜线经过的整点就是(i,j)-1,所以斜线上有(i,j)-1中选择 将这条直线左右平移n-i,上下平移m-j都是合法的,所以总的选择应该是((i,j)-1) * (n-i)*(m-j) 向左倾斜和向右倾斜有两种情况,再*2代码#incl
2017-01-16 18:23:43 576
原创 [BZOJ1951][Sdoi2010]古代猪文(lucas定理+中国剩余定理)
题目描述传送门题解写这道题各种傻逼 根据欧拉定理,G∑k|nCkn%P=G∑k|nCkn%φ(P)%PG^{\sum\limits_{k|n}C_n^k}\%P=G^{\sum\limits_{k|n}C_n^k\%\varphi(P)}\%P 模数是质数,φ(P)=P−1\varphi(P)=P-1,然而我刚开始还想什么根n求phi n的所有的因数都可以在n√\sqrt n求出来 然后把P
2017-01-16 15:33:22 1009
原创 [BZOJ2142]礼物(扩展Lucas定理+中国剩余定理)
题目描述传送门题解很简单的题吧Cw1n∗Cw2n−w1∗Cw3n−w1−w2...%PC_n^{w_1}*C_{n-w_1}^{w_2}*C_{n-w_1-w_2}^{w_3}...\% P P不一定是质数所以用扩展lucas+中国剩余定理合并(http://blog.csdn.net/clove_unique/article/details/54571216)代码#include<algorit
2017-01-16 13:57:40 1518
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人