bzoj
全体起立1234
无名蒟蒻并不用在意
展开
-
BZOJ4563 [Haoi2016]放棋子
是一道练高精度的好题我们把每一行都附上一个编号为其行的序号举个例子1 0 0 0 序号10 0 1 0 序号20 1 0 0 序号30 0 0 1 序号4那么障碍的排列为1,3,2,4对吧,那么我们意淫一下,旗子的排列会怎么样呢??首先肯定为1~n因为每一行一个数,其次一定不等于障碍的排列,因为同一个点上不应该有同时存在障碍和旗子然后发现原创 2017-03-08 19:26:35 · 381 阅读 · 0 评论 -
BZOJ P3810[Coci2015]Stanovi
记忆化搜索表示长为n,宽为m的矩形,上下左右是否接触边界时,最小的值下面是代码,没有WA算我输#include#include#include#include#includeusing namespace std;//ifstream fin(".in");//ofstream fout(".out");int jiyi[303][303][2][2][2][2];l原创 2017-03-18 15:07:06 · 272 阅读 · 0 评论 -
BZOJ P1037[ZJOI2008]生日聚会Party
一道DP,用f[i][j][k1][k2]表示取到只剩下i个男的,j个女的时,最大的男的个数与最大的女的个数分别为k1,k2最终的方案总数状态转移方程自己列,下面是代码#include#include#include#include#includeusing namespace std;int n,m,k;int jiyi[153][153][23][23];const原创 2017-03-09 07:54:39 · 176 阅读 · 0 评论 -
BZOJ1085 [SCOI2005]骑士精神
一开始打了个爆搜,然后心里不稳网上一看,原来果然是A*这段代码是迭代加深搜加A*的#include#include#include#includeusing namespace std;const int dx[]={-2,-1,1,2,2,1,-1,-2};const int dy[]={-1,-2,-2,-1,1,2,2,1};char s[9];int T,ok,x,原创 2017-03-19 09:44:30 · 218 阅读 · 0 评论 -
BZOJ P1857:[Scoi2010]传送带
Orz,原来是三分大法,还以为有公式,但是推不出来据说耗费时间是一个二次函数设在线段AB上取点(x1,y1),CD上取点(x2,y2);点A坐标为(ax,ay),点D坐标为(dx,dy)那么时间就是sqrt((ax-x1)^2+(ay-y1)^2)/p同理,可以发现是二次函数然后三分在AB上的点,和在CD上的点求出答案即可下面是代码#include#include#原创 2017-03-19 10:57:48 · 406 阅读 · 0 评论 -
BZOJ P1787:[Ahoi2008]Meet 紧急集合
练练模板吧这次是LCA模板直接求三个点的LCA,然后会发现若有两个LCA相同,那么集合点为另一个点然后我来证明一下为什么这样(口胡)我们设lca(x,y)=hehe1,lca(x,z)=hehe2那么非常显然lca(y,z)=lca(hehe1,z)=hehe2然后假设hehe1到hehe2的距离为len那么当我们把集合点从hehe2移到hehe1时与x,y的距离减去了原创 2017-03-19 11:05:12 · 392 阅读 · 0 评论 -
BZOJ P1010: [HNOI2008]玩具装箱toy
斜率优化DP经典题,不过出队的条件判断还是不怎么清楚继续学习#include#includeusing namespace std;long long n,L,x[50005],sum[50005],f[50005],q[500005],h,t,i;long long M(long long x){return x*x;}double xie(long long k,long l原创 2017-03-19 14:08:25 · 258 阅读 · 0 评论 -
BZOJ P1096: [ZJOI2007]仓库建设
第二发斜率优化t达成了h刷了两三次RE,掉了1%的AC率,好气嗷下面是代码#include#include#include#include#includeusing namespace std;long long f[1000003]; struct hehe{ int x,p,c;}a[1000003];long long G[1000003],sum[10000原创 2017-03-19 14:33:30 · 257 阅读 · 0 评论 -
BZOJ P1911:[Apio2010]特别行动队
斜率优化DP第三发下面是代码#include#include#include#include#includeusing namespace std;long long f[1000003],num[1000003];long long sum[1000003];long long n,a,b,c;int q[1000003];long long M(long long原创 2017-03-19 15:13:41 · 237 阅读 · 0 评论 -
BZOJ P3156: 防御准备
刷斜率优化成性我感觉我已经走火入魔了下面是代码#include#includeusing namespace std;long long n,num[1000005];long long f[1000005],q[1000005],h,t;long long M(long long x){ return x*x;}double xie(long long k,long原创 2017-03-19 19:08:36 · 314 阅读 · 0 评论 -
BZOJ P4562:[Haoi2016]食物链
ZJOI前ZYY钦定我们做的题目记忆化搜索,直接记录某一点下去有几条链就可以了记得单个点不算链特判一下即可#include#include#include#include#includeusing namespace std;int head[1000003],ru[1000003];int jiyi[1000003],chu[1000003];int next[100原创 2017-03-20 08:06:16 · 310 阅读 · 0 评论 -
BZOJ P3155Preprefix sum
网上有些题解是有错误的答案求的是ansans=sigma(1~t)a[i]*(t-i+1)即为ans=sigma(1~t)a[i]*(n-i+1)-(n-t)*sigma(1~t)a[i]所以我们直接维护两个树状数组,求前缀和,得出答案#include#include#include#define N 100010using namespace std;long原创 2017-03-13 20:36:14 · 259 阅读 · 0 评论 -
bzoj1607[Usaco2008 Dec]Patting Heads 轻拍牛头
枚举暴力原创 2017-03-07 07:58:07 · 316 阅读 · 0 评论 -
BZOJ1263: [SCOI2006]整数划分
练高精度的好题可以证明尽量分成3时,乘积最大,很显然对吧(其实我也不会证明)然后就直接打高精度就可以了但是我还没有AC所以代码就不贴了原创 2017-03-10 09:50:17 · 247 阅读 · 0 评论 -
BZOJ2190 SDOI2008 仪仗队
欧拉函数的应用原创 2017-03-07 11:45:15 · 217 阅读 · 0 评论 -
BZOJ 4236 JOIOJI
又找到一道水题,好开心这题你就直接前缀和记录JOI分别出现的次数然后把J的个数减去O的个数,O的个数减去I的个数然后存到map里直接找一组相同的且相差最远的一组值即为答案显然sumJ-sumO相等,那么这一段区间中sumJ-sumO==0同理sumO-sumI=0那么sumJ==sumO==sumI下面是代码(能过算我输)#include#include#inclu原创 2017-03-10 16:01:24 · 191 阅读 · 0 评论 -
BZOJ P4300: 绝世好题
用f[i]表示上一次第i位为1时的最大子序列长度然后直接DP读入了一个x那么我们把x的每一位为1的所对应的的f[i]都拿出来进行比较然后做更新#include#include#include#includeusing namespace std;int n,f[32],x;int a[100010];int main(){ cin>>n; for(int i=1;原创 2017-03-10 19:22:15 · 348 阅读 · 0 评论 -
BZOJ P1433[ZJOI2009]假期的宿舍
这题一看就是二分图匹配的裸题嘛但是我现在在练习网络流那,要多练练网络流于是用了dinic但是不贴代码了所以讲讲主要思路吧建两个点,超级源点S,超级汇点T然后每一张床都连向T一个流量为1的边然后每一个和床的主人熟悉的人(包括本身)连向这些床,流量为1然后S连向每一个人(不回家住或者外地人)一条流量为1的边然后跑一边最大流就可以了原创 2017-03-27 18:40:35 · 332 阅读 · 0 评论 -
BZOJ P3505[Cqoi2014]数三角形
总的ans就是c(n*m,3)-c(m,3)-c(n,3)-cntcnt为三个点在同一斜线的情况然后我们枚举在某一斜线上三个三角形所构成的矩形的长宽设为x,y那么泽样的矩形一共有(n-x)*(n-y)*2个为什么要乘以二呢?因为有两条斜线然后同一斜线上的点有gcd(x,y)-1个然后答案就出来了啊下面是代码#include#include#include#in原创 2017-03-27 10:42:36 · 349 阅读 · 2 评论 -
BZOJ P3931[CQOI2015]网络吞吐量
先跑一遍最短路把最短路上的点建一个图,然后需要拆点,因为权值在点上面然后拆点限制流量最后跑一边最大流就可以了#include#include#include#include#includeusing namespace std;int head[100003],exhead[100003],q[400003],d[400003];struct map{ long原创 2017-03-27 20:23:07 · 409 阅读 · 0 评论 -
BZOJ P1025: [SCOI2009]游戏
#include#include#include#includeusing namespace std;int pri[1003];int jiyi[1003][1003];int n;inline bool yes(int x){ for(int i=2;i*i<=x;i++){ if(x%i==0){ return false; } } return tru原创 2017-03-07 19:06:02 · 215 阅读 · 0 评论 -
BZOJ P3761: Zhenhuan
二分+贪心+分类讨论原创 2017-03-03 14:22:03 · 398 阅读 · 0 评论 -
BZOJ P2705[SDOI2012]Longge的问题
这题一看到,发现求的是一到n的所有数与n的最小公倍数发现最小公倍数不为1,但我们能够求出与某一数最小公倍数为一(互质)的数的个数那么我们设gcd(i,n)=x;那么可以知道gcd(i/x,n/x)=1;那么我们直接枚举x然后ans+=phi(n/x)*x即可#include#include#includeusing namespace std;long long ans;原创 2017-03-07 20:20:53 · 229 阅读 · 0 评论 -
BZOJ P3041水叮当的舞步
直接IDA*枚举上限步数然后爆搜每一次爆搜都用A*减一下枝然后估价函数的话就是目前还未被加进联通块的毯子的颜色数好了原创 2017-03-28 10:01:38 · 372 阅读 · 0 评论 -
BZOJ P2824[AHOI2012]铁盘整理
IDA*就是直接枚举步数上限然后A*剪枝一下然后估价函数的话是(某两个连续的元素之间的差值==1)^1呵呵..........其实就是两个连续元素差值的绝对值大于1的个数然而我也不会证明类似于你每一次翻转的话最多只能减去这样的个数一个然后就能作为估价函数了下面是代码并没有过,还是RE状态求dalao帮忙找错误#include#include#原创 2017-03-28 10:43:12 · 410 阅读 · 1 评论 -
BZOJ P3287 Mato的刷屏计划
一开始想到DPf[i]表示i次操作最长的长度,然后f[i]=max{f[i-1]+1,(i-j-1)*f[j]},j然后查了题解说是有公式,ORZ求出f的前几项后,令x=n%5+15,最终答案f[n]=f[x]*4^((n-x)/5)原创 2017-03-16 18:46:39 · 2347 阅读 · 1 评论 -
BZOJ P3632外太空旅行
我目前知道两种算法1:蒙特卡罗大法好直接随机化然后贪心就可以了然后代码的话就直接找hzwer的网站上吧2:A*大法好爆搜加入的点,然后每一次枚举没有加入的点,判断是否可以加入这个团中然后记下来哪些点目前为止可以加入如果当前在团中的点加上可能可以加入的点已经大于了最优答案,直接剪枝即可不知道算是最优化剪枝还是A*,反正是个剪枝就对了原创 2017-03-28 11:35:48 · 311 阅读 · 0 评论 -
BZOJ P1051[HAOI2006]受欢迎的牛
练一练tarjan不错在一个强连通分量里面的所有的点都可以被其他点到达那么我们直接考虑缩点之后的DAG,在DAG中只有出度为0的点才被其他牛所欢淫并且出度为0的点之间分别不欢淫对方所以之后直接判断:1.缩点只有只有一个点,直接输出n,没问题吧2.只有一个出度为0的点,ans=这一强联通分量中的点数3.有多个出度为0的点,ans=0原创 2017-03-11 20:28:34 · 179 阅读 · 0 评论 -
BZOJ P2729: [HNOI2012]排队
两种做法第一种:可能会萎掉DPf[i][j][k][k2]还剩下i个男孩,还剩下j个女孩时,还剩下k个老师时前面一个是k2(0:男/1:女/2:老师)的方案数但是内存是6000*6000的高精度直接滚存(不知道会不会萎掉),然而我只会记忆化搜索(QAQ)第二种:看来只能排列组合了直接上公式吧:ans=C(n,n)*(C(n+1,2)*C(n+3,m)+C(2,2)*C(m,1)原创 2017-03-11 21:20:08 · 236 阅读 · 0 评论 -
BZOJ P1656[Usaco2006 Jan] The Grove 树木
啊,被SPFA折磨死了调了半天的程序痿掉了一开始发现visit数组开成了int然后某一个循环多了1然后入队出队的指针也错了啊,现在打代码真是江硬下面是代码,有人帮我调试一下吗?真是日了敦了#include#include#include#include#includeusing namespace std;const int dx[]={0,0,-1,1原创 2017-03-28 14:28:38 · 345 阅读 · 0 评论 -
BZOJ P3744 Gty的妹子序列
分块+树状数组+可持久化线段树如果是离线求区间逆序对数(bzoj3289),可以用莫队+树状数组解决,这道题强制在线显然不能这样做先考虑分块,f[i][j]表示第i块的起始位置到第j个点的逆序对数,这个可以用树状数组在O(n*sqrt(n)*logn)的复杂度预处理。然后对于每次询问,如果左右端点在同一块内,树状数组暴力计算。否则找到左端点后面第一个完整的块t,f[t][r]直接统原创 2017-04-07 09:18:31 · 383 阅读 · 0 评论 -
BZOJ P1070[SCOI2007]修车
人生的费用流之路开启于这一道题目对于这道题目我们可以建立一个模型:把每一个顾客的车子连向汇点,费用为0,流量为1把每一辆车子连向每一个员工所拆开来的m*n个点(每个员工拆除n个点)那么我们这n个点用来干嘛呢?第i个员工的第j个点表示第i个员工倒数第j个修的车然后这些边的流量为1,费用为这一员工对某一辆车子的维修时间×这是倒数第几辆为什么这就是贡献呢?因为每一辆车子在原创 2017-03-28 19:53:51 · 279 阅读 · 0 评论 -
BZOJ P1189[HNOI2007]紧急疏散evacuate
网络流好题一开始以为是最小费用最大流因为要求最小的时间,我们直接限制流量,然后加上费用然后跑最小费用最大流但是正确的图一直建不出来然后到网上搜了一下题解,说是二分再加最大流满流判断先构图吧从S到每一个' . '点连一条流量为1的点,表示为一个人然后我们对每一扇门都进行拆点,拆除t个点(t为所需时间,二分出来的)然后每个点向T和下一个时间的点分别连容量为1和inf的边原创 2017-03-29 08:50:00 · 395 阅读 · 0 评论 -
BZOJ P1257[CQOI2007]余数之和sum
一开始是这么想的n>k的部分直接不用去管了就是分区间先分类讨论k1:k为偶数的话我们可以设k为2a然后画出下面的图1-------------------a------------------------2a1-----------------------------------n然后我们会发先2a%a,2a%(a+1)....(2a%2a)原创 2017-03-29 09:48:17 · 293 阅读 · 0 评论 -
BZOJ P3609 [Heoi2014]人人尽说江南好
博弈论必胜方会不断凑出高度为m的石子堆,高度为m之后,不能和任何其他石子合并了那么一共有n/m堆,会剩下n%m颗石子然后就这样贪心求出总共需要的步数,然后判断一下奇偶性就可以了原创 2017-03-13 08:27:39 · 398 阅读 · 0 评论 -
BZOJ P2751:[HAOI2012]容易题
aaa掉了我1%的正确率就是直接每一个位置可以取的值之和的乘积就是ans但是鉴于k非常小但是m非常大,所以有很多的位置可以取1~n,这些位置直接快速幂就可以了下面是代码(能AC算我输)#include#includeusing namespace std;const long long mod=1000000007;long long n,m,k;long long an原创 2017-03-13 09:22:34 · 216 阅读 · 0 评论 -
BZOJ P1072[SCOI2007]排列perm
一道状压DP的大水题直接f[i][j]表示数字串的每一个数字的状态为i(0(已经选过了)/1(还没有被选过))此时mod d=j时的方案总数,直接DP即可但是最后的答案要减去0~9的出现次数的阶乘因为会有重复的方案出现原创 2017-03-13 10:24:39 · 205 阅读 · 0 评论 -
BZOJ P1566[NOI2009]管道取珠
好强大的DP啊 Orz题目要求某一种方案a[i]的平方a[i]^2;那么其实可以转化为我们构成第i种方案的数量的对数所以就可以看做是两个玩家在取,然后取出相同方案的个数怎么感觉我说的不怎么清楚。。。然后f[i][j][ii][jj]表示玩家一上面取到i,下面取到j,玩家二上面取到ii,下面取到jj的方案数但是,其实jj=i+j-ii所以用f[i][j][k]就可以辣原创 2017-03-13 11:11:47 · 238 阅读 · 0 评论 -
BZOJ P1084[scoi2005]最大子矩阵
随手翻到了之前做的一道水题,随便写篇题解水一水吧最大子矩阵,一开始不会,一度以为是神题(划掉)然后发现mm==1时直接求序列分成k段的最大和m==2时f[i][j][k]表示上一行还有i个数,下一行还有j个数时取k个子矩阵的最大和下面是代码(能AC我吃羊羽)#include#include#include#includeusing namespace std原创 2017-03-13 11:21:49 · 203 阅读 · 0 评论 -
BZOJ P3990[SDOI2015]排序
首先要一个非常优美的性质就是我们交换段的先后顺序并不会影响到答案然后我们就可以强制从小到大枚举长度然后判断这一长度是否要改变就行了我们从小到大DFS,对于第i次操作我们将序列分成2^(n-i)段,每段长度2^i我们找到序列中不是连续递增的段,如果这样的段超过2个,显然是不可能的啊然后如果没有这样的段,就不需要直接去搜索下一长度的情况然后如果有一个这样的段,判断将这个段的原创 2017-03-29 10:49:08 · 385 阅读 · 0 评论