
bzoj
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
bzoj 1191 [HNOI]超级英雄Hero 二分图最大匹配(匈牙利算法)
1191: [HNOI2006]超级英雄HeroTime Limit: 10 Sec Memory Limit: 162 MBSubmit: 3911 Solved: 1801[Submit][Status][Discuss]Description现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品原创 2016-12-15 21:46:19 · 490 阅读 · 0 评论 -
bzoj 2464 BFS【水】
水过就好,就当是个好心情=。=const walk:array[1..4,1..2] of integer=((1,0),(-1,0),(0,1),(0,-1));type rec=record x,y:longint;end;var n,m,sx,sy,tx,ty :longint; s :a原创 2016-12-16 21:11:23 · 507 阅读 · 0 评论 -
bzoj 1034 伪田忌赛马
其实,它就是田忌赛马的那个套路=。=能赢不平,能平不输先都排序,然后小的能赢就让它赢,小的赢不了的话就去看大的,大的能赢就赢呗=。=然后小的也赢不了大的也也不了就让小的输给他一个大的(注意判断一下平局)反正小的也没用,大的还可以赢得出最大得分=。=易知,无论双方输赢如何,n局的双方总得分是一定的即2*n 分,所以最小的分=2*n-对方最大得分var n,an原创 2016-12-16 21:22:51 · 617 阅读 · 0 评论 -
bzoj 1787 lca
三个点,两两找lca,最后结果一定在这三个点中出,都算出来比较一下就可以了(两个点的最短距离+第三个点到lca的距离)脑残:建图的时候一定要乖乖的建,不要建成n-1条有向边,会不联通的 orz orz orzvar n,m,ans1,root,pos:longint; l,a,b,c,ans2,tt,t:longint; ta,tb,tc原创 2016-12-16 21:39:15 · 356 阅读 · 0 评论 -
BZOJ 1833 & POJ 2282 The Counting Problem & huangyueying 贪心详解
huangyueying 是今天考试的一道题,除了数据范围比POJ大以外,完全就是一道题=。=暴力的算法是一个一个的去算,显然会T =。=所以,我们可以运用前缀和的思想来解决[a,b]之间的询问我们在计算前保证a我们先算出[1,a-1] 0~9 出现的次数在算出[1,b] 之间0~9 出现的次数,再用后者减去前者就是[a,b]之间的数字,就是我们所需要的答案=w=那么,怎么算呢原创 2016-10-31 11:33:36 · 541 阅读 · 0 评论 -
bzoj 1500 splay 【终极模板】 【pascal】
连打带差错一天就这样过去了orz orz orz{$inline on}const sroot=-1; maxn=100000000;var n,m,root,tot,top:longint; p,q,t :longint; i,j :longint;原创 2016-12-22 21:43:13 · 540 阅读 · 0 评论 -
bzoj 1015 正难则反+并查集
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间原创 2016-12-18 16:51:53 · 432 阅读 · 0 评论 -
bzoj 1029 贪心+堆
Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全毁坏。现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需要一定的时间。同时,修理工人修理完一个建筑才能修理原创 2016-12-18 17:06:50 · 504 阅读 · 0 评论 -
bzoj 1188 博弈sg函数
蛮好的一道博弈题,加深对sg函数理解必备题目(╯‵□′)╯︵┻━┻ 关键在于局面的定义和对子游戏的把握一般情况下,我们直接定义石子数(每一堆)为一个局面,但是在这道题里会发现这么定义子游戏之间会产生干扰的,显然是矛盾不可行的所以这道题,把每一个石子看做一个单独的游戏定义局面:一个石子在i位置处即sg[i]表示在i位置的每一个石子的sg值(即使在同一个位置,每个石子之间都是相互独原创 2017-01-05 11:54:24 · 419 阅读 · 0 评论 -
bzoj 1303 中位数 题解
4.中位数(median.pas/c/cpp)【问题描述】给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。【输入】第一行为两个正整数n和b ,第二行为1~n 的排列。【输出】输出一个整数,即中位数为b的连续子序列个数。 【样例输入】7 45 7 2 4 3 1 6 【样例输出】原创 2016-11-10 21:52:04 · 2261 阅读 · 0 评论 -
bzoj 3223 splay模板 【pascal】
const sroot=-1;var n,m,x,y, root :longint; i :longint; a :array[-1..100010] of longint; father,size,tree:array[-1..100010] of lon原创 2016-12-20 20:54:47 · 428 阅读 · 0 评论 -
bzoj 1022 博弈 Anti-Nim(模板)
具体证明请见贾志豪大犇的2009论文 orz,这里直接贴结论:对于Anti-SG 的:1、如果所有子游戏的SG异或和=0且所有子游戏的SG2、如果所有子游戏的SG异或和1则先手必胜两种情况都不满足的则先手必输代码:var t,n,cnt,tot :longint; i :longint; a,s原创 2016-12-16 21:33:28 · 418 阅读 · 0 评论 -
bzoj 2440 二分+莫比乌斯函数和容斥原理
题意:输出第k小的无平方因子的数无平方因子数:分解质因子后,所有质因数的次数都为1求第k小,考虑二分答案我们发现,如果直接去找[1,x]的无平方因子数的个数,我们发现,可能对于多个x,[1,x]内的无平方因子数是一样的,所以我们不能找到确切的答案既然不能直接求,考虑补集思想,我们只要找出[1,x]内有多少个有平方因子的数,再用x减去即可,并且我们可以找到确切的答案根据不重不漏原原创 2017-02-05 16:17:04 · 477 阅读 · 0 评论 -
bzoj 2301 莫比乌斯反演+容斥原理
题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。ans=sigma(1)(aans=sigma(1)(a原创 2017-02-06 10:45:46 · 660 阅读 · 0 评论 -
bzoj 2820 莫比乌斯反演
题意:给定N, M,求1难道只有我一个蒟蒻觉得难点不在莫比乌斯反演而在优化的预处理么...思路和容斥原理后的2301很像,不在详细解释只列公式ans=sigma(1) (1ans=sigma(1)(1令 f(n)表示 gcd(x,y)=n 的数对数,F(n) 表示 n能整除 gcd(x,y) 的数对数易知 F(x) = floor(n/x) * floor(m/x)由莫原创 2017-02-07 00:36:41 · 367 阅读 · 0 评论 -
bzoj 1305 二分+最大流
题意:n个男孩和n个女孩跳舞,每次跳舞恰好配成n对,每个男孩只会和一个女孩跳一支舞,有些男孩女孩相互喜欢有些则相互不喜欢,每个男孩只愿意最多和m个不喜欢的女孩跳舞,女孩也一样。给出相关信息,求最多能跳几支舞据说学长的贪心被hack掉了...因为每个人有喜欢和不喜欢两种,所以把每个人拆成两个点,一个代表喜欢,一个代表不喜欢。如果男孩i和女孩j互相喜欢,则连接(i,j,1);如果不互相喜欢原创 2017-02-17 19:26:21 · 399 阅读 · 0 评论 -
bzoj 2789 逆序对
题意:给出两个字符串A、B,只包含大写字母。每次交换A中相邻的两个字符,最少经过多少次变换可以变成字符串B,保证有解两眼就可做的水题,水水更健康~第一眼,答案妥妥的逆序对第二眼,因为只包含大写字母所以一些位置上的字母是一样的,但是没有关系,因为同样的字符一定是按照顺序一一对应的,处理一下就可以了然后归并排序或树状数组求逆序对原创 2017-02-18 07:04:00 · 488 阅读 · 0 评论 -
bzoj 1336 && bzoj 1337 最小圆覆盖 随机增量法
题意:n个点,求出最小圆覆盖,输出半径和坐标最小圆覆盖裸题...蒟蒻只会随机增量法...type rec=record x,y:double;end;var n,x,y :longint; a :array[0..100010] of rec;原创 2017-02-28 06:35:35 · 517 阅读 · 0 评论 -
bzoj 1455 洛谷 P3377 左偏树+并查集
bzoj 1455题意:n个人,每个人有一个分数,每个人都是一个独立的团,有两种操作: 1、M x y,在x和y都是活的前提下,把x所在团和y所在团合并,否则忽略此操作 2、K x 在x是活的的前提下,把x所在团分数最小的人杀死,并输出该人分数,若x已经死亡则输出0显然,用并查集维护团的信息,每次只删除分数最小的人,并涉及合并,妥妥的左偏...原创 2017-02-09 22:38:10 · 445 阅读 · 0 评论 -
bzoj 2132 经典二分图的最小割
题意:给定一个n*m的矩阵,每个位置可以作为商业区或者工业区且各有一个收益,如果相邻两块是不同的也会有一个收益,求最大收益一般这种方格的往二分图...网络流...想一想好吧,这题是最小割但是一般的建图是不行的,因为普通的建图是相邻的两块不同会对答案造成损失,但这题相邻两块不同也会有一个收益(对答案的贡献是积极的),所以如果按照普通建图的想法的话就应该连成负数的,但显然网络流是处理不了负原创 2017-02-18 19:26:17 · 544 阅读 · 0 评论 -
poj 3463 最短路和次短路
题意:n个点,m条有向边,给定起点和终点,求出起点到终点最短路和比最短路长1的路径的总条数dijkstra算法,邻接表建图改进Dijkstra算法。将状态扩展到二维,第一维仍然是顶点编号,第二维分别用于记录最短路和次短路。这样的数据有两个,dist[][2]记录距离,cnt[][2]计数。更新状态时:1)新值小于最短路径长:将最短路的相关数据赋予次短路,更新最短路径长,计数;原创 2017-02-28 19:53:55 · 481 阅读 · 0 评论 -
bzoj 2802 贪心+堆
题意:每天上午进ai的货物,中午有顾客买bi个,我们可以满足他可以无视他,但若要满足顾客要求必须有足够的库存,问最多能满足多少顾客要求这个贪心很经典...,来的顾客是有时间顺序的,一个一个按顺序处理不需要排序原则:能多则多(能卖则卖),对于卖不了的,我们以让库存越多越好,即去我们卖的人里面找到卖的最多的,判断二者大小,如果这个人买的少就替换,卖个这个人而不卖给那个买的多的人我们用一个大原创 2017-02-10 16:44:56 · 496 阅读 · 0 评论 -
bzoj 1925 DP+滚动数组
这个题解不正经,可以不用看了...打表找规律生生找出来2333333,的并不知道正解是怎么YY出来的╮(~▽~)╭推荐正经题解:http://blog.youkuaiyun.com/aarongzk/article/details/44871391var f :array[0..2,0..4210] of longint; n,p,x,y原创 2017-02-28 21:27:15 · 345 阅读 · 0 评论 -
bzoj 3401 && bzoj 1657 单调栈
题意:对于每一个i,找到离它最近的j满足 i倒序单调栈type rec=record h,num:longint;end;var n,top :longint; i :longint; a,ans :array[0..100010原创 2017-02-28 23:22:56 · 377 阅读 · 0 评论 -
bzoj 3209 数论/数位DP
题意:定义sum(i)表示数i的二进制表示中1的个数,给定一个n,求phi(sum(i)) (1一眼看过去,暴力打表找规律,然后并没有发现任何有用的事情(然而机房里的一个神犇用神一样的高端大气上档次的达标方法成功找到规律并直接拿下first blood orz)然后就在纸上手动模拟,只要找到1~n中,二进制表示恰好有k个1的数的个数再乘上这么多的k即可显然用快速幂,个数作为指数,k原创 2017-03-01 09:15:35 · 350 阅读 · 0 评论 -
bzoj 1355 kmp
题意:给一个字符串,求最小循环节(可以不整除)裸kmp,next数组的性质 i % ( i - next[i] ) == 0 && next[i] != 0 , 则说明字符串循环,而且循环节长度为: i - next[i]循环次数为: i / ( i - next[i] )因为不要求整除所以ans=n-next[n]var n原创 2017-02-17 20:12:40 · 651 阅读 · 0 评论 -
bzoj 1572 贪心+堆
题意:1000000000个单位时间,给定n个工作和各自的截止时间和利润,每在截止时间之前(或当天)完成工作即可获得该工作的利润,问最大获得的利润是多少经典贪心把截止时间从小到大排序,对我们选择完成的工作的利润维护一个小根堆。从1到n扫,能完成当前工作就完成,并将该工作的利润插入小根堆中;如果不能完成,判断该工作的利润是否大于我们选择完成的工作的最小利润(小根堆堆顶),如果大于则替原创 2017-03-01 10:58:54 · 465 阅读 · 0 评论 -
bzoj 1724 堆+贪心
DescriptionFarmer John想修理牧场栅栏的某些小段。为此,他需要N(1<=N<=20,000)块特定长度的木板,第i块木板的长度为Li(1<=Li<=50,000)。然后,FJ去买了一块很长的木板,它的长度正好等于所有需要的木板的长度和。接下来的工作,当然是把它锯成需要的长度。FJ忽略所有切割时的损失——你也应当忽略它。 FJ郁闷地发现,他并没有锯子来把这块长木板锯开。于原创 2017-03-01 11:45:37 · 480 阅读 · 0 评论 -
bzoj 2843 LCT模板
题意:初始n个冰岛独立,三种操作:(1)判断A、B是否联通,当A、B不联通时输出yes并连接A、B,否则输出no(2)把点A的点权改为x(3)判断A、B是否联通,当A、B联通时输出从A到B的路径点权和否则输出impossible没有cut的LCT基础题...var n,m,x,y :longint; ch原创 2017-02-21 07:38:43 · 390 阅读 · 0 评论 -
bzoj 1115 阶梯博弈
题意:n堆石子,每次可以从任意堆中拿走任意个,初始和每次操作后都要保证a1阶梯博弈...又到了涨姿势的时候了阶梯博弈:博弈在一列阶梯上进行,每个阶梯上放着自然数个点,两个人进行阶梯博弈,每一步则是将一个集体上的若干个点(i >=1 )移到前面去,最后没有点可以移动的人输我们可以只考虑在奇数堆上的操作,这样整个游戏就可以转化成NIM的模型玩家将奇数堆中的石子推到偶原创 2017-02-18 21:30:38 · 452 阅读 · 0 评论 -
bzoj 2957 线段树
题意:n座楼,初始高度为0.每天修改一栋楼的高度(可增高可降低),问每天修改后在(0,0)能看到多少房屋,当且仅当一栋楼上存在一个高度与(0,0)的连线与之前的楼房不相交时,该楼可见易知,楼i可见的条件为 :任意 j,所以可见的楼的高度是严格单调递增的(注意并不是LCS)如果修改一个楼的话,会对所有的楼的答案情况都造成影响,所以它具有合并子问题的性质,那么我们就可以用线段树维护对于原创 2017-02-22 08:07:46 · 473 阅读 · 0 评论 -
bzoj 3670 kmp
题意:定义num[i]表示:对字符串S的前i个字符组成的子串,既是它的前缀又是它的后缀且该前缀与后缀不重叠,满足条件的字符串的数量记做num[i],ans等于(num[i]+1)的累乘,对1000000007 取模一看就是kmp..再一看数据范围必须O(n)...所以一开始naive的对每个i都递归一下i=next[i]是妥妥的TLE的 QAQ令 num[i]表示既是i前缀又是i后缀的原创 2017-02-22 11:10:53 · 475 阅读 · 0 评论 -
bzoj 2002 link cut tree(LCT)
题意:n个位置,第i个位置有一个弹力系数为ki的装置,编号从0~n-1,会被弹到i+ki的位置。如果i+ki处无装置,则弹飞否则继续。两个操作:1、1 x 输出从第x处开始弹几次被弹飞2、2 x y x处装置的弹力系数改为yLCT基础题注意编号是0~n-1,这里我们都加1处理,使得范围为1~n我们很容易发现一个性质:有无数个点可以到达同一个点,但一个点只能到达一个固定的点原创 2017-02-13 21:30:26 · 303 阅读 · 0 评论 -
bzoj 2743 树状数组+离线处理
题意:n朵花,c种颜色,排成一排。共有m组询问,每个询问给出一个区间[l,r],输出[l,r]中满足个数大于等于2的颜色数蛮经典的思想...首先,我们用膝盖想出了可能用来维护区间的数据结构:树状数组、线段树我们很容易想到一道智障题:输出[l,r]的花朵数,很显然,答案就是(r-l+1),也就是把每朵花赋值为1,维护一个傻乎乎的前缀和当然,我们需要借鉴这种智障的思想回归正题我原创 2017-02-14 10:41:18 · 391 阅读 · 0 评论 -
bzoj 1002 打表找规律(Matrix-tree 定理)+高精度
题意:求(n+1)个点的生成树个数Matrix-Tree 定理,具体请戳这里 : 生成树的计数及其应用——安徽周冬找出规律:f[i] = f[i-1]*3 - f[i-2] + 2高精度运算即可type rec=record num:array[0..110] of integer; len:longint;原创 2017-01-26 10:14:20 · 505 阅读 · 0 评论 -
bzoj 1013 高斯消元
题意:n维空间中,给出球面上(n+1)个点的坐标,求出球心坐标,输出保留三位小数,比较时不忽略行末空格(答案输出必须和标准输出一模一样)显然,球面上的点到球心的距离相等,等于半径长假设我们知道一个点的坐标为 : a1,a2,a3,....,an; 另一点坐标为: b1,b2,b3,...,bn设 球心坐标为 x1,x2,x3,...,xn; 半径为r那么,我们可以列出方程组:(a1原创 2017-01-26 10:44:55 · 480 阅读 · 0 评论 -
bzoj 1050/ codevs 1001 贪心(伪Kruscal)
题意:一个n个顶点,m条边的无向图,每条边有一个权值vi,给出两个顶点S和T,找出一条S到T的路径使最大边与最小边的比最小。如果S到T没有路径输出:"IMPOSSIBLE" 否则输出最简比值对于 impossible /是否合法判断 :并查集维护连通性,判断S和T是否在一个集合里重点考虑要求:最大边与最小边的比最小,那么一定是 让最大边尽量小的同时让最小边尽量大我们尝试按照一定顺序去原创 2017-01-26 15:24:40 · 452 阅读 · 0 评论 -
bzoj 1051 缩点重构图
题意:给出m个数对(a,b) 表示a牛认为b牛受欢迎,如果a牛认为b牛受欢迎,b牛认为c牛受欢迎,则a牛也认为c牛受欢迎。找到被所有牛认为是受欢迎的牛的个数(自己不用认为自己受欢迎= =)我们很容易发现“认为受欢迎”是具有传递性的那么,对于a牛认为b牛受欢迎我们就建一条a指向b的有向边然后我们发现,对于每一个强连通分量,他们是互相认为受欢迎的=。=那么我们所点重新构图后就形成了一原创 2017-01-26 21:57:04 · 531 阅读 · 0 评论 -
bzoj 3924 模拟+kmp
题意:给定两个字符串A、B,从前往后枚举A的每一个字符往另个串U里添加,若U的后缀的B则删除该后缀然后继续,保证最终答案不为空先对串B跑一遍kmp,然后对A串按照题意模拟,用kmp加速这个过程(注意对串A的每一个位置存一下最后匹配到的位置,因为会删除一个后缀所以匹配的指针不能不管)var s1,s2,ss :ansistring; i原创 2017-02-22 19:23:28 · 384 阅读 · 0 评论 -
bzoj 1370 团伙 并查集
题意:n个人,朋友的朋友是我的朋友,敌人的敌人是我的朋友,互为朋友的组成一个团伙,问团伙的数量并查集入门题把一个人拆成两个,x表示朋友集合,n+x表示敌人集合朋友的朋友是我的朋友:直接合并x和y敌人的敌人是我的朋友:合并x和n+y ,合并 y 和n+1var n,m,x,y,ans :longint; vis :a原创 2017-02-22 21:36:43 · 377 阅读 · 0 评论