自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Just One Last Coding~♬

开心就好,每天要好好努力> <

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

原创 HDU 5298 Solid Geometry Homework(异或)

官方题解说的挺详细的。。。#include #include #include #include #include #include #include #include #include #include using namespace std;#define LL long long#define ULL unsigned long longs

2015-08-03 19:46:47 455

原创 HDU 5239 Doom(线段树)

题意:给出一个长度为n的序列,和m次查询,每次查询一个区间的和,但查询之后把区间内每个点的值平方一次,所有的结果模上9223372034707292160。其实这题一点也不难。。。一个数又平方又模的次数多了以后,会维持在一个固定的值不动。打表可以发现规律,但是仔细想想也是可以想明白的。如果x的素因子的集合包含模的素因子集合,那么经过足够多的次数之后,取模会直接为0;反之,据费马小定

2015-05-26 12:32:32 720

原创 BZOJ 2565 最长双回文串(回文自动机)

给出一个字符串,求所有子串中能分成前后两个部分都是回文串最长的子串的长度.在回文自动机里纪录每个点往前最远的匹配点,正来一次,反来一次.枚举分割点.manachar也可以做:枚举每隔点作为中点时,若此刻的中点的最右端比之前存储的一个中点最右端更远,则更新超过部分所有的点的匹配点(类似于单调队列,只保存当前情况下的最优中点).#include #include

2015-05-21 14:44:41 623

原创 HDU 3966 Aragorn's Story(树链剖分)

点权型树链剖分模板.#include #include #include #include #include #include using namespace std;#define MAXN 50100#define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1inline int RD(int &x)

2015-05-21 14:37:19 425

原创 POJ 3237 Tree(树链剖分模板)

给出一棵树,和3种操作:1.更改第i条边的权值;2.更改结点a到结点b所有边的权值为负;2.查询结点a到结点b所有边的权值的最大值.把一颗树hash成一维,在数组中,重链上的点一定是连续存储的.作为边剖分型,可以把边挂在儿子结点上,转化成点剖分型.另外还要注意的时,最后更新至两条路已经更新至拥有LCA时,由于边的特点,LCA(所代表的那条边)不能更新,所以要更新至L

2015-05-21 14:31:43 438

原创 CSU 1620 A Cure for the Common Code (HASH+区间DP)

题意:给定一个字符串,重复的子串可以用简写的方法表示。求最短可以表示成多长。大白书上有原题,应该在动态规划一章。HASH预处理出每个区间的串的信息(一定要记住每个字符的信息不能是0!!!!),dp[i][j]记录四个信息,一个是区间内最小循环串的长度,一个是该区间的最小长度,一个是循环次数,还有一个信息是这个这个区间的循环串是什么。然后就是区间合并了,先看两个相

2015-05-20 23:05:49 524

原创 POJ 3264 Balanced Lineup(RMQ模板)

题意:给出一个长度为n的序列和q次询问,每次询问某个区间内最大值和最小值的差。RMQ模板存储。#include #include #include #include #include #include using namespace std;#define MAXN 50010struct Node { int maxv, minv;}nn[20][MA

2015-05-20 22:51:11 463

原创 HDOJ 5217 Brackets(zkw线段树模板+单点更新)

题目大意:给定一串括号,现在有两种操作:1. 翻转第x个括弧;2. 对于区间[l, r]内,消去所有匹配的扩后后,查询消除后第k个括弧原来的位置是第几,若k大于消除后的区间长度,输出-1.正统线段树t了,用了点黑魔法!#include #include #include #include #include #include using namespa

2015-05-04 01:00:53 557

原创 WOJ 1583 Palindrome(回文自动机)

题目大意:给出一个字符串,求出从哪个位置分开,使得前半部分的本质不同的回文串个数恰是后半部分的两倍。如果有多个方案,把所有前半部分字符个数相乘起来后模1e9+7。很神奇的一种数据结构,模板大部分参考了这篇博客:【回文自动机】ural2040 - huyuncong的专栏 - 博客频道 - CSDN.NET个人觉得这个改进后的算法相较cf上的初始算法在性能上优越些

2015-05-01 17:55:54 827

原创 POJ 2513 Colored Sticks(Trie)

有一些木棍。两端会染上颜色。两个木棍若有两端的颜色相同,则可以连接在一起。现在给出这些木棍两端的颜色,

2015-04-30 15:19:06 404

原创 HDU 3065 病毒侵袭持续中(AC自动机模板)

题目大意:输出每个模板串出现的次数。AC自动机模板题。AC自动机个人体会:#include #include #include #include #include using namespace std;#define MAXK 26#define MAXN 50010#define idx(c) (c - 'A')struct No

2015-04-30 15:14:08 341

原创 2015年武汉赛后总结

这一次比赛结果令人心碎。 因为在预选赛中发挥不错,赛前认为三个人实力在整体队伍之中并不差,所以出发之前的目标是去拿奖牌的。 比赛的十道题,dp题多,一两个想法题,两个数学题,其余是数据结构和几何。但是并不难,最后一个防AK题也是一个模板题,只是考了一个比较新的数据结构。 心态失衡不能说不是这次比赛失利的重要原因。 其中签到题为C题,数学题。当时由我负责推公式和判断边

2015-04-30 11:50:37 732

原创 POJ 3461 Oulipo(KMP模板)

给定一个模板串和一个文本串,求模板串在文本串中出现了多少次(可以重叠)。匹配成功后不跳出,认为模板串结尾的最后一个字符失配再继续跳到前面去匹配。

2015-04-21 16:59:24 519

原创 POJ 3580 SuperMemo(Splay模板)

Splay裸题。。。1. ADD x y D: 对区间[x, y]内的每一个树都加上D;2. REVERSE x y: 翻转区间3. REVOLVE x y T: 旋转区间T次,相当于把区间的后半段(长度为T%(y-x+1))剪切黏贴到前面(调换顺序);4. INSERT x P: 在x后插入p;5. DELETE x: 删除x;6. MIN x y: 求区间的最小值。

2015-04-05 21:48:52 450

原创 UVa 12304 2D Geometry 110 in 1!(圆的处理)

与圆和切线的一些基础处理.#include #include #include #include #include #include using namespace std;#define eps 1e-10#define MAXN 1001000const double pi = acos(-1.0);template inline T sqr(T a) { retu

2015-03-29 14:22:44 529

原创 CSU 1533 Laser Cutting

区分这四种不同的情况:第一个是合法的,第二个是非简单多边形,第三个是多重嵌套,第四个是相交。点在多边形内和简单多边形的判定,是很基础的东西呢。之前想用数据结构,但是没什么想法。#include #include #include #include #include #include using namespace std;#define MAXN 60

2015-03-18 21:29:56 480

原创 CSU 1529 Equator(双端队列)

给出一个数环,求最大子段和。扩展数环为两倍,相当于求固定长度为n的子段和。保证队列内部元素为单增且距离不超过n,最优解必然是队尾减去队首。比赛的时候不知道为啥wa成狗了。。大概是忘记把数组开成两倍大小了吧。。#include #include #include #include #include #include using namespace std;#de

2015-03-16 17:52:58 629

原创 2015 HNU warm up 12

07~11的比赛没怎么做,,真是辛苦sunkang了*^ ^*、、唉。。可惜花了大把时间竟然没考过科目二,希望23号那一场可以考过> A - Eight Queens判断给出的解是不是八皇后的合法解。#include #include #include #include #include using namespace std;char Board[8

2015-03-14 21:40:49 548

原创 BZOJ 1588 营业额统计(Splay树入门)

题意:给出一组数,设定每个数与其前面的数之间最小相距值的绝对值为最小波动值(第一个数的最小波动值为其本身)。求所有最小波动值之和。Splay入门题。此题仅包含插入,旋转和伸展操作。可先参考Crash前辈的论文《运用伸展树解决数列维护问题》。 首先是旋转操作。和一般的平衡树旋转操作类似,分为左旋和右旋。将左儿子旋转至根,需要执行右旋操作。旋转前:(x为左儿子,

2015-03-13 09:40:11 608

原创 POJ 3608 Bridge Across Islands(模板小汇)

求两个凸包间的最短距离。大部分都是抄的小岛前辈的模板。真是无私奉献的典范啊!应有尽有,巨细靡遗。。顺便连带整理了一下自己的。(感觉自己的模板也写得变紧凑了。。)#include #include #include #include #include #include using namespace std;#define MAXN 10010#define

2015-03-07 23:01:29 451

原创 UVa 12307 Smallest Enclosing Rectangle(旋转卡壳+最小覆盖矩形)

题意:给出点集,求覆盖所有点的最小面积矩形和最小周长矩形。参考了很多Killerfear前辈的代码:传送门。枚举每条边为矩形底边,找出最高点和最左最右点。判断最高点是三角形面积,最左最右点是点积的正负。最左最右点各占据凸包一半的点。可以推出这三个点的性质都是单峰函数。#include #include #include #include #i

2015-03-04 23:16:40 832

原创 2015 HNU warm up 07

A - Fractional Lotion求有多少对(x, y)使得1/x + 1/y = 1/n。(x+y) / (xy) = 1/n,设x=a*n,y=b*n,那么(a+b)/a*b=1。因为只有2^2 = 2*2,所以a和b两者必然分居2的两侧,即x和y必然一个大于2n,一个小于2n或者都等于2n。#include #include #include #includ

2015-03-04 22:51:31 441

原创 POJ 3666 Making the Grade(左偏树)

题意:给出一串数,改变当个数字的大小的代价是改动的绝对值(比如2变成5,代价是3),求让这个数串变成非递减(或非递增)数列的最小代价。下面只讨论非递减的情况(非递增类似):做法非常神奇,是黄源河前辈论文中的例题:左偏树的特点及其应用对于一个非递减序列,最小代价是把每个数都变成这个序列的中位数。而有增有减的序列,可以分段,划分成阶梯状。至于为什么可以扩展到有增有减,论文里面的解释更为想详细!^ ^大体思想是:用左边树保存每一段部分的中位数。把每个数单独建一颗左偏树。因为只有一个数,当然中位数

2015-03-02 23:11:44 1674

原创 POJ 2187 Beauty Contest(凸包直径)

初级旋转卡壳get!题意:给出一个点集,求点集中最远的两个点的距离的平方。首先求一遍凸包(可以仅保留转折点),然后通过旋转卡壳(复杂度:o(nlogn))得到直径。对于凸包的某一个点,凸包上总会有一个点距离它最远,并且是该点的对踵点。对踵点:如果过凸包上的两个点可以画一对平行直线,使凸包上的所有点都夹在两条平行线之间或落在平行线上,那么这两个点叫做一

2015-03-02 22:48:54 499

原创 2015 HNU warm up 05

B.Circle of digits Input给出一串数环(只包含数字‘1’~‘9’),把数环分成k部分,每个部分可以表达一个十进制数。令某种分割方法中,最大的数为该方法的特征值,求这个数环所能得到的最小特征值。TLE,数据范围达到10^5。令特征值最后可能得长度为len,那么len = (n + k  - 1) % k;能想的的做法是,扩展数环为两倍

2015-03-01 21:34:53 445

原创 ZOJ 1248 Video Surveillance(半平面交)

判断一个多边形是否有核。大体思想是,用多边形的边构成的直线,一点一点去削去原多边形。蓝色区域则为多边形的核。判断大于0还是小于0有一个小技巧:直线走向的左手边是小于0的,右手边是大于0的。向量AB等于点B减去点A,走向为A指向B。#include #include #include #include #include #include usi

2015-03-01 17:41:30 446

原创 UVa 10002 Center of Masses(Andrew或Graham_scan)

题意:无序地给出一个凸包的所有点,求凸包的质心。因为凸包是无序的,所以还要先处理一番。Graham_scan凸包算法:对点进行简单排序后,再进行极角排序。可以得到凸包上的部分点,但凸包的形状是完整的(即某些共线点可能丢弃)。复杂度O(hn)(n为总点数,h为凸包上的点数,不考虑排序...)Andrew凸包算法:对点进行排序后(非极角排序),正向循环找出上

2015-02-27 17:11:34 665

原创 HDOJ 3031 To Be Or Not To Be(左偏树)

一道裸题,不过让我发现了我的读入优化似乎有问题...可怕可怕,不敢用了> <...题意大约是:喜洋洋和灰太狼打牌,有两种牌,一种是特技牌,一种是分数牌。游戏有r轮(r为奇数),赢的次数多的为胜者。每轮有n张特技牌,m沓分数牌,每沓张数为p[i]张。灰太狼和喜洋洋轮流拿特技牌,手上可以保留的只有分数牌,特技牌拿到就用(这复杂的游戏规则。。)。现在有5种特技牌(灰太狼为先手):1.T K:拿走第K沓所有牌;2.C:表示两人对决,谁的最大的分数牌越大,谁拿走对方的所有牌;3.L:失去手上最大的分数牌

2015-02-26 21:55:17 453

原创 HDOJ 1512 Monkey King(左偏树)

初学左偏树,先做了一个较为简单的题。题意:有一群猴子,每只猴子都有力量值,不认识的猴子之间可能发生争吵。初始时大家互相不认识(只认识自己)。如果有两只不认识的猴子发生了争吵,那么他们会从各自的朋友里找出力量最强的猴子来格斗,格斗结束后,格斗的两只猴子力量值减半,两个猴子的朋友圈合并。输出决斗完成后,新合并的朋友圈最强猴子的力量值。左偏树是一种可合并的二叉堆,从名字听就知道它

2015-02-25 22:27:44 623

原创 POJ 3321 Apple Tree(树状数组)

这个题很有趣,有一点数据结构和图论综合的感觉。题目大意为:给出一个树(非二叉树),节点数从1编号至n。初始时每个节点都有一个苹果。现在有两种操作:1.Q x,询问以x为根节点的子树的苹果个数的总合;2.C x,改变x节点的值,若原来为1,则改为0;若原来为0,则改为1。首先如何得到某个节点的子树的所有节点?可以前序遍历这课树,这样所有的儿子在遍历时的顺序一定是连续的

2015-02-25 15:44:02 533

原创 2015 HNU Warm Up 06

D.Mutikill给定圆半径长,求最多可覆盖平面上多少点。定长圆覆盖问题,和poj 1981可说是一模一样。然后僵尸可能一个都木有(所以这题一定是搞计算几何的人来坑搞计算几何的了,或者是我太碍板了= =。。)#include #include #include #include #include #include using namespace std;#d

2015-02-24 19:50:50 511

原创 UVa 11297 Census(二维线段树+单点更新)

这个题写了很久,之前用四分树做了,只get到了WA和RE,转投二维线段树。题目本身描述不对!明明是N X M的矩阵写了N X N。。。一直没看出来。。然后,矩阵尺寸定义的变量名为m,平均值也定义为m,又是一直没看出来,debug了一个下午,一个字母一个字母调才找出来,sad。。。果然我还是太弱了。。。模板:#include #include #inc

2015-02-24 19:40:50 469

原创 UVa 11610 Reverse Prime(树状数组+二分)

有一些7位数,倒转过之后都是小于10^6的素数,叫做倒素数。把这些倒素数按大小排列,分别求出每个倒素数的素因子个数(比如24是2,2,2,3,共4个);先有两种操作:1.q i:查询从第0个到第i个倒素数的所有素因子之和;2.d x:从这些倒素数中删除x,剩下的倒素数按大小重新排列。首先把每个倒素数除以10,然后因子个数都先加上2,消除末尾0(题目也是有点无聊);del

2015-02-23 16:01:42 680

原创 POJ 2464 Brownie Points II(树状数组+扫描线)

果然题意罗里吧嗦的题做法也很麻烦。。给出二维平面上的一些点,Stan可以任选一个点作一条垂线,然后Ollie可以在垂线上再选一个点作水平线。在一、三象限的点数算Stan的分数,在二、四象限的点算Ollie的分数。两个人都想要自己的分数最大。问Stan分数的最大值,且有多种情况时,按大小顺序列出Ollie的所有可能得分(无重复)。主要重点是维护两棵x轴上的树状数组,当

2015-02-23 15:44:15 558

原创 POJ 2155 Matrix(树状数组+单点更新)

好多天没干活了,赶紧更新一篇。题意:给定一矩阵,初始值均为0,要点:到sum(i)是求第i位的前缀和,add(i)是更新位置i的单点值。

2015-02-21 17:30:03 363

原创 UVa 11402 Ahoy, Pirates!(线段树 + 离线操作)

题意很是晦涩。大意为:给出一个01串,有三种操作:1.把区间[a, b]内的数全变为1;2.把区间[a, b]内的数全变为2;3.把区间[a, b]内的数全部取反。基础的延迟更新操作。#include #include #include #include #include #include using namespace std;#define MAX

2015-02-10 21:54:47 585

原创 2015 HNU Warm Up 04

这一套题是13年长沙现场赛。A - Alice's Print Service从后往前推,如果后面的最低标准线比前面低,继承后者。#include #include #include #include #include using namespace std;#define MAXN 100100#define LL __int64#define INF 123

2015-02-06 20:02:50 535

原创 2015 HNU warm up 03

这一套题为2013年长沙网络赛题。A - So Easy!三张图说明一切。。。1.2.3.但是第三张有个地方错了,的幂应该是n-2。(图来自网络,如有冒犯立刻删除)#include #include #include #include #include #include using namespace std;#define N 2#define MAX

2015-02-06 11:59:07 537

原创 2015 HNU warm up 02

.

2015-02-06 11:39:38 508

原创 2015 HNU Warm Up 01

F - Kings on a Chessboard国王周围的八个格子不可以再放国王,问在给定大小的棋盘有多少种方法可以放k个国王。

2015-02-06 11:02:36 463

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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