自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zyy大蒟蒻的博客

一个无聊蒟蒻的博客

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

原创 bzoj1453: [Wc]Dface双面棋盘

传送门 话说数据范围好像暴力能过?不管,讲正解。 发现暴力每一次询问需要O(N^2)。 但是每一次只修改一个数。 感觉比较浪费。 然后我们可以按照行跑线段树,然后暴力合并上下联通情况。 这样单次询问只要O(NlogN)了。#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<iostre

2017-04-30 21:28:28 556

原创 bzoj1452: [JSOI2009]Count

传送门 发现颜色数超级少。 然后我们对于每一个颜色维护一个二维树状数组就水过辣。#include<cstring>#include<cmath> #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm>#define inf 2100000000#define N 105usin

2017-04-30 21:19:16 306

原创 bzoj1449: [JSOI2009]球队收益

传送门 感觉就是费用流呀。 可以发现这道题与之前的费用流题有所不同,因为一个球队不论输还是赢都会获得收益。 这里就要用到一个技巧,我们可以假装比赛双方都输,然后修改赢的就ok辣。 然后就是每个人向终点连边,这里的费用随着流量的变化而变化,所以我们要用到拆边法。考虑一个人从赢win[i]次、输lose[i]次变为赢(win[i]+1)、输(lose[i]-1)次,总费用的变化量为c[i](wi

2017-04-30 21:14:26 265

原创 bzoj1444: [Jsoi2009]有趣的游戏

传送门 首先得到AC自动机。 然后得到转移矩阵。 我们可以将矩阵自乘50次,假装他是对的。 然后就这样被水过去了#include<cstdio>#include<cstdlib>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#define N 505using namespace std

2017-04-30 21:00:46 402

原创 bzoj1433: [ZJOI2009]假期的宿舍

传送门 显然网络流呀。 源点向所有有床位的连边 需要床位的向汇点连边 如果i可以睡j的床,i向j‘连边 裸题呀。#include<cstring>#include<cmath> #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm>#define inf 2100000000

2017-04-29 21:07:42 230

原创 bzoj1432: [ZJOI2009]Function

传送门 一看就知道是结论题。 让我们手玩一发。 当n==1,答案是1 当n==2,答案是2(显然成立) 对于其他n,显然可以上下翻转,于是对于求f%28n/2%29”>k的,等效于求f[n-k]。 然后开始手玩。 我们从上往下增加直线,当已经放了k-1条直线,在放第k条直线的时候,如果直线k和直线k-1的交点在k-1原有交点的右边,坑定会影响前面的答案,不是最优,所以强行让交点在倒

2017-04-29 21:02:46 377

原创 zjoi2017day2酱油记

day0(4.25) 早上在sxyz机房屠题。 中午草草的吃完饭坐车去余姚 话说这司机好好的高速不开要走低速。。。 下午2:30到余姚,很快地报到之后直接下榻宾馆 dt好像把电脑忘在车上了,然后……车开回去了我给666然后下午。。。 …… …… ……(对下午什么也没干。。。) 晚上人家去旁边万达吃饭去了……然后我和jzq被jpy和黄比利轰向余姚中学食堂… ……然后

2017-04-29 16:07:22 598

原创 bzoj1416&1498: [NOI2006]神奇的口袋

传送门 傻逼题。 直接计算方案数,除上总方案数就可以了。 注意要用高精度。 为啥oj上有两道题?#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define mo 10000using namespace std;int f[20005],p[20005]

2017-04-29 15:42:32 670

原创 bzoj1415: [Noi2005]聪聪和可可

传送门 记忆化搜索。 用f[i][j]表示两个人物在i和j时的期望值。 然后枚举各种情况: 1.重合:答案为0 2.差两步之内:答案为1 3.差2步以上:走两步后的f值+1 取一个平均值就可以了。#include<cstdlib> #include<iostream> #include<cstdio> #include<cmath> #include<algorithm

2017-04-29 14:52:58 190

原创 bzoj1414: [ZJOI2009]对称的正方形

传送门 显然是可以用manacher驶过去的。 首先为了避免边长奇偶性带来的问题, 我们要把矩阵扩大二倍: 然后开始闷声做大死系列:哈希+二分答案。 把这个矩阵从四个角各哈希一遍 对于每个点二分答案 验证时将四个哈希值全都取出来对比即可 然后只枚举i+j为偶数的点 得到的边长除以2就是以这个点为中心的正方形回文子矩阵数量 记得二维哈希的时候横竖的BASE值不能相同,用unsigned

2017-04-29 14:47:29 607

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

传送门 显然可以用最小割艹过去。 从源点向所有狼连一条∞的边,从所有羊向汇点连一条∞的边,这样就能保证狼和羊都在不同的点集里。然后再从狼到相邻的羊和空地,空地到相邻的空地和羊连一条流量为1的边,最大流求最小割即可。#include<cstring> #include<cmath> #include<cstdio> #include<iostream> #include<cstd

2017-04-29 14:41:05 237

原创 bzoj1411: [ZJOI2009]硬币游戏

传送门 手玩样例发现发现2^k变换之后,第i个位置的硬币情况只与它左右的第k+1个硬币有关。 如k=0,第3位硬币情况只与2和4位硬币有关。因为t可以拆成若干个2^k的和,于是对每个2^k进行O(n)的变换,总复杂度O(nlogt)。“`includeincludeincludeincludeincludeincludedefine ll long longusing namespace std

2017-04-28 19:10:05 375

原创 bzoj1408: [Noi2002]Robot

传送门 题目大半的篇幅在介绍ϕ\phi和μ\mu 不过不是普通的φ和μ,有些变形- - 新定义的φ(1)=0,新定义的μ只计算奇质数,含有2为因子的数都按照μ值为零处理 我们首先求出第一问和第二问,即μ值不等于0的部分 由于μ的定义,μ值不等于0当且仅当每个质因数的次数都是1次 因此我们枚举每个奇质数 计算加上这个奇质数之后φ值之和多出来的部分 由于φ是积性函数 所以前两问可以在O(n

2017-04-25 07:47:37 248

原创 bzoj1406: [AHOI2007]密码箱

传送门 首先x2=kn+1首先x^2=kn+1 然后x2−1=kn然后x^2-1=kn 得到(x−1)(x+1)=kn+1得到(x-1)(x+1)=kn+1 设x−1=k1n1,x+1=k2n2,k1k2=k,n1n2=n设x-1=k1n1,x+1=k2n2,k1k2=k,n1n2=n 爆枚n2(n2>n1),代入答案验证。#include<cstring> #include<cmat

2017-04-25 07:34:42 261

原创 bzoj4832: 抵制克苏恩

传送门 非炉石玩家表示不爽 显然克苏恩刀人只有四种选择。 刀英雄,刀一血奴隶主,刀二血奴隶主,刀三血奴隶主。 显然两个同血奴隶主是等价。 然后枚举克苏恩刀谁,计算期望就行了。#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#

2017-04-22 18:41:14 1038

原创 bzoj1306: [CQOI2009]match循环赛

传送门 显然是爆搜+O(玄学)优化。 剪枝1:如果全取3或全取0仍不可行退出。 剪枝2:如果还有n个队没有比过,分数差n*3-1,退出。 然后就过了呀。#include<cstring>#include<cstdio>#include<iostream>using namespace std;const int f[]={3,1,0,0};int a[9],b[9],n,ans;

2017-04-22 17:28:10 1027 1

原创 bzoj1305: [CQOI2009]dance跳舞

传送门 拆点网络流+二分答案。 将每一个人拆成ix和iy 如果男女互相喜欢,则在x节点之间加边。 否则在y节点之间加边。(边权为1) 然后男生从x连向y,女生从y连向x,连流量为k的边。 从原点向男生的x节点连流量为a的边。 从女生的x节点向汇点连流量为a的边。 然后二分答案a,判断是否满足n*a==maxflow即可。#include<cstring> #include<cma

2017-04-22 17:23:51 361

原创 bzoj1304: [CQOI2009]叶子的染色

传送门 这道题显然是树DP 我们用F(u,color)表示以u为节点的子树所需的最少节点数,且u刷成color。 F(i,0)表示点i涂黑色,dp(i,1)表示点i涂白色 所以有F(i,0) = sum(min(dp(i.son,1),dp(i.son,0))) 当点i涂黑色时,他涂黑色的儿子可以少涂一个点,i涂白色时同理 然后就是沙比树形dp了。uses math;var

2017-04-22 17:17:57 780

原创 bzoj4538: [Hnoi2016]网络

传送门 本来想用树剖艹,然而并不会卡常数这种神奇的技能,,,于是还是乖乖写正解吧QAQ 我们可以把一个询问转化为二分判定性问题 二分答案K ,若所有权值大于K的路径都经过询问点x,则答案比K小,否则答案比K大 对于多组询问,外层再套一个整体二分就行了 至于判断有几条路径经过点x ,对于一条路径(u,v)我们把u和v置为1,lca(u,v)和lca(u,v)的父亲置为−1,这样经过一个节

2017-04-21 14:36:08 584

原创 bzoj2001: [Hnoi2010]City 城市建设

传送门 这定是极其蛋疼的题目。 考虑分治询问。 我们可以先求出当询问在l到r之间是,必定在MST上的边。 (未确定权值的边即使取到-inf也在MST上的边) 同时,我们可以缩点。 然后删除必定不在MST上的边。 (未确定权值的边即使取到-inf也在MST上的边) 分析时间复杂度: 点数最多为r-l+1(其他都被缩掉了) 边数最多为2*(r-l+1)(MST上r-l+1条和未确定的

2017-04-21 11:43:17 483

原创 bzoj1303: [CQOI2009]中位数图

传送门 我们可以将大于b的数看成1,小于的看成-1 然后题目就变成了求有多少个在d之前的前缀与在d之后的后缀互为相反数。 显然可以O(N)预处理O(N)询问。 然后就水过去啦。var a,b:array [-100005..100005] of int64; n,q,i,bb,x:longint; ans:int64;begin read(n,bb); q:=0; fo

2017-04-19 20:37:29 286

原创 bzoj1297: [SCOI2009]迷路

传送门 T这么大,N这么小,普通做法绝对T。 但我们发现每一次转移方式相同。 于是考虑矩乘。 我们可以先拆点,将一个点化为9个,状态是(位置,时间) 注意,虽然他们可能还在路上,但是我们可以连到时间为k-1的地方,连权值为1的边。 同一个店时间相差1的连边。 答案就是f[S][T]#include<iostream>#include<cmath>#include<cstdio>#

2017-04-18 18:12:14 468

原创 bzoj1296: [SCOI2009]粉刷匠

传送门 对于每一行,跑一个dp,f[i][j]表示前i个字符,刷j次的最优解。 然后在外层再跑dp,g[i][j]表示前i行刷j次最多刷对几个。 还是很简单的。uses math;var f:array [0..55,0..55,0..55] of longint; b:array [0..55,0..55] of longint; g:array [0..55,0..2505]

2017-04-18 11:46:42 229

原创 bzoj1043: [HAOI2008]下落的圆盘

传送门 看到数据范围不大,暴力走起。 枚举每一个圆,如果被完全覆盖直接退出。 否则如果被覆盖掉一部分就求出覆盖区间。 然后就是sb的区间覆盖问题了。#include<cmath> #include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#define pi aco

2017-04-18 10:18:27 191

原创 bzoj1295: [SCOI2009]最长距离

传送门 爆枚起点,跑一发最短路。求出距离不大于T的最远点对即可。const d:array [1..4,1..2] of longint=((1,0),(-1,0),(0,-1),(0,1));var a,e,f:array [0..51,0..51] of longint; b,c:array [0..1000005] of longint; ans,n,m,tt,i,j:long

2017-04-17 20:21:29 225

原创 bzoj1294: [SCOI2009]围豆豆Bean

传送门 从一点向随机方向引一条射线,如果射线和多边形的边相交奇数次,说明点在多边形内。否则在多边形外 据此我们可以搞D条射线出来,用来判断D个点当前是否已经被圈进来。 我们可以用一个二进制状态表示当前点是否被围。 然后就是喜闻乐见的状压bfs了。#include<cmath>#include<queue>#include<cstdio>#include<cstring>#includ

2017-04-17 20:18:34 636

原创 bzoj1293: [SCOI2009]生日礼物

传送门 枚举起点找出每一种颜色在这个位置之后的第一个位置与这个位置距离的最大值,再找出每一个起点结果的最小值 转移时将当前节点坐标转移到下一个有这个颜色的位置。 可以用堆或者这个是叫做单调队列么?uses math;var a:array [0..1000006] of longint; p,h,l:array [0..65] of longint; n,m,i,j,k,ma,m

2017-04-17 08:27:01 245

原创 bzoj1269: [AHOI2006]文本编辑器editor

传送门 这题用stl来水再适宜不过了。 这个所谓的可持久化平衡树真是牛逼啊T T ext/rope 由于rope的底层实现,insert,erase,get都是logn的 就是翻转不行,不是自己手写的打不了标记啊!! 怎么办? 答:同时维护一正一反两个rope……反转即交换两个子串 区间循环位移?简单,拆成多个子串连起来就好了…… 区间a变b b变c c变d …… z变a? 呃……

2017-04-15 07:40:19 545

原创 bzoj1266: [AHOI2006]上学路线route

传送门 先跑一发最短路,求出有用边, 然后就是裸的网络流了。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define inf 1e9#define ll long longusing namespace std;struct data{ int

2017-04-15 07:35:53 439

原创 bzoj1265: [AHOI2006]斐波卡契的兔子(kacci)

传送门 高精度模板题。type arr=array [0..5005] of int64;var x,y1,y2,y3,z1,z2,z3,bas,ans:arr; s:ansistring; sum,i,n,j:longint; a,b,c,modd:int64;procedure jia(var a:arr; b,c:arr); var i:longint; begi

2017-04-14 11:37:00 573

原创 bzoj1264: [AHOI2006]基因匹配Match

传送门 显然一个数最多对5个位置产生影响。 直接匹配,并且用树状数组求出前缀最大值就可以实现了uses math;var a,b:array [0..100005] of longint; f:array [0..100005,0..5] of longint; n,i,x,j:longint;function low(x:longint):longint; begin ex

2017-04-14 11:34:27 487

原创 bzoj1508: [NOI2003]Game

传送门 Claris代码风格实在是不忍直视。 直接爆枚是单个数字上修改还是从一个数字移到另一个数字。 只是读入输出炒鸡麻烦。#include<cmath>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#define N 1010#define debug

2017-04-14 09:40:50 467

原创 bzoj1263: [SCOI2006]整数划分

传送门 我们可以求出满足xx−1>(x−1)xx^{x-1}>(x-1)^x且xx+1>(x+1)xx^{x+1}>(x+1)^x的整数x 然后手玩一下发现x=3 所以要尽可能的多拆出3。 不难得到以下方案: 1.n%3==0 拆成n/3个3 2.n%3==1 拆成n/3-1个3,2个2 3.n%3==2 拆成n/3个3,1个2 高精度一发水过。uses math;var a:

2017-04-13 21:47:49 566

原创 bzoj1261: [SCOI2006]zh_tree

传送门 看到这个数据范围就应该想到动归了吧。 f[i][j]表示i到j范围内建树的最小期望代价。 枚举中间点就可以了。uses math;var n,i,j,k:longint; a:array [0..35] of extended; f:array [0..35,0..35] of extended; p,c:extended;begin read(n,p,c);

2017-04-13 21:38:33 587

原创 bzoj1260: [CQOI2007]涂色paint

传送门 明显区间dp f[i][j]表示i到j一段的最少涂色次数 枚举是直接修改还是两边组合。uses math;var s:string; f:array [0..55,0..55] of longint; n,i,j,k,p:longint;begin readln(s); n:=length(s); fillchar(f,sizeof(f),1); for i

2017-04-13 15:51:27 354

原创 bzoj1258: [CQOI2007]三角形tri

传送门 大力照一发规律。 以4结尾删4 以其他数结尾删到末位于当前数相同,加上4就可以了。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>using namespace std;char s[105],a[4][105],ch;int l,x,fl,u,v,l1,l2;void get(int p

2017-04-13 15:37:20 304

原创 bzoj1257: [CQOI2007]余数之和sum

传送门 首先imodj=i−int(ij)∗ji mod j=i-int(\frac{i}{j})*j 然后答案就是i2−∑j=1int(ij)∗ji^2-\sum_{j=1}int(\frac{i}{j})*j 发现我们可以按照j分块。 然后愉快的水过了。var n,k,r,i,t,ans:int64;begin read(n,k); if n>k then begin

2017-04-13 11:48:27 328

原创 bzoj1237: [SCOI2008]配对

传送门 贪心排序。 然后可以yy出来在3个以内调整是最优的(我不会证系列) 然后就欢乐的结束了。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define inf 1e12#define ll long longusing namespace std;l

2017-04-13 10:49:20 330

原创 bzoj1228: [SDOI2009]E&D

传送门 SG函数 首先给sg函数打个表……发现0的分布好有规律 然后又发现1好像也挺规则的,一堆小三角型 最后发现每个数都是类似的三角形 发现如下规律: 0出现条件 i,j均%2=1 1出现条件 i%4=1,2 j%4=1,2 2出现条件 i,j%8=1,2,3,4 …… 自己可以yy出得到sg(i,j)=k的必要条件 (i-1)%2k+1 < 2k且(j-1)%2k+

2017-04-13 08:28:36 712

原创 bzoj1227: [SDOI2009]虔诚的墓主人

传送门 先离散横纵坐标 按照y进行排序,从下往上处理每一行 预处理出l[a],r[a],u[a],d[a]表示一个点上下左右的点数。 如果a,b在同一行,则ans+=c(l[a]+1(包括a),k)*c(r[b]+1,k)再分别乘上ab间的每一个点的c(u[i],k)*c(d[i],k) 但是这样复杂度为n^2,显然是会T掉的。 于是我们要用树状数组维护a到b所有点的c(u[i],k)*

2017-04-12 16:01:01 550

空空如也

空空如也

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

TA关注的人

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