自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DotACM

命是弱者的借口,运是强者的谦辞

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

转载 程序员装B指南

一.准备工作“工欲善其事必先利其器。”1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好。一个用来查资料,一个用来写代码。总之要显得信息量很大,效率很高。2.椅子不一定要舒服,但是一定要可以半躺着。3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善。沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子。4.工具书,

2013-11-12 11:24:08 654

转载 编程天才“楼教主”

编程天才“楼教主”专访两届“黑客杯”世界编程大赛季军、清华大学博士生楼天城图为2011年楼天城参加世界知名程序设计网站Topcoder算法公开赛。    天才什么模样?一位采访过楼天城的记者思量再三后说:“很难形容,但就像所有人高中班级里几乎总有的那么一位,永远的第一名。”    楼天城,杭州人,今年26岁,博士三年级,人称编程“楼教主”,保送清

2013-10-06 12:03:20 3982

原创 POJ 3074 Sudoku

DLX解数独。行:81格(每格9种选择)。列:每行每列9格(各9种选择),81格(有或没有)。把已知的先加进去,并把它们标记,之后不再添加。然后把剩下的所有可能都加进去,再dfs求解,应该是唯一解。输出的时候注意一下,先求出真实位置,再求真实数值,最后直接输出字符串。#pragma comment(linker, "/STACK:1024000000,1024000000")#inclu

2013-10-06 11:53:29 639

原创 ZOJ 3209 Treasure Map

DLX。用尽量少的矩形,覆盖一个大矩形,不重不漏,求使用个数。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include///LOOP#define REP(i, n) for(int i =

2013-10-02 14:41:03 604

原创 HUST 1017 Exact cover

DLX.最近开始学习dancing links了。据说这道题是测试模板正确性的题。这个http://blog.csdn.net/fp_hzq/article/details/6800113挺好的,以前也经常逛他的博客。DLX也用了他的模板,等过一阵有了新的理解,也许会改成我自己的风格,不过预计改动不大(就是换个变量名什么的^_^)。#pragma comment(linker, "/STA

2013-10-02 09:59:37 546

原创 UVA 12299 RMQ with Shifts

线段树。单点更新,区间查询。就是说每次更新时,就按照题意,一个一个去修改。一开始我认为这样做会超时,跟队友商量了一下,也都认为会超时,但又想不到别的方法。。。。百度了一下,别人都说是水题,简单模板题,也都是这样做的。可能字符串长度不超过30使得更新的量不会太大,所以也不会TLE吧。#pragma comment(linker, "/STACK:1024000000,1024000000")

2013-09-30 18:22:44 600

原创 UVALive 5902 Movie collection

树状数组。一些电影盘摞成一摞,抽出第x个,输出它上边有多少个,再把x放到顶部。求x上面的盘的个数就是前缀和,就往树状数组上想。每次取出再放到顶上,我们不可能往0,-1,-2...上放,数组要反过来,下表从小到大表式光盘从最下边的到最上边的值(该盘上面的盘数,用总数减一下就可得到)。话句话说,每个点存的是它下面的盘数。取的时候,下面的值不变,上面的加一。#pragma comment(lin

2013-09-30 16:47:33 605

原创 UVA 11992 Fast Matrix Operations

线段树。初始为零的矩阵,有三种操作,选出子矩阵来修改,增加,和查询总和,最小值,最大值。可以二维线段树,但仁慈的出题人说:There will be at most twenty rows in the matrix(最多20行)。就可以用一维来解了。注意add标记和set标记的先后逻辑顺序即可。#pragma comment(linker, "/STACK:1024000000,1024

2013-09-27 08:52:53 942

原创 POJ 1470 Closest Common Ancestors

LCA入门题。给一颗树,若干询问,对每个询问输出它们的LCA。离线算法(Tarjan)模板。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include///LOOP#define REP(i,

2013-09-26 18:12:33 583

原创 POJ 1330 Nearest Common Ancestors

LCA入门题,虽然这样说,但是没有用到LCA,因为询问只有一组。就用最最直白的方法。所谓最近公共祖先,就是两个点分别向上走,直到根,两条路径第一个相遇的点就是两个点的LCA。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include

2013-09-26 18:06:59 586

原创 HDU 2888 Check Corners

二维线段树。求区间最大值,并判断最大值是不是在四角。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include///LOOP#define REP(i, n) for(int i = 0; i

2013-09-26 12:40:05 592

原创 POJ 2019 Cornfields

二维线段树。本想练练二维RMQ的,结果就线段树水过了。求区间内最大值减最小值的差。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include///LOOP#define REP(i, n) f

2013-09-26 12:09:30 619

原创 HDU 3183 A Magic Lamp

RMQ.感觉找规律也可以做,但我只想到了一个很麻烦的规律,不好实现。从n位数中删去m位,使剩下的数最小,求这个数。答案一定是n-m位,那么它的第一位应该尽量小,不然的话后边再小也没用,比如19999和20000,所以首位要最小。那么首位可选的区间是什么呢?假设答案是个k位数,第一位从输入数字的第零位开始,只要给剩下k-1位各留一个就行,所以右端点就是n-k+1,而k=n-m,所以就剩下m+1了

2013-09-26 08:48:35 592

原创 UVA 11235/HDU 1806/POJ 3368 Frequent values

RMQ.按非降序给出一列数,对于每个询问,回答区间内出现最多的数出现的次数。先把数据压缩一下,记录每个数字出现的次数,开始以及结束位置。那么询问的区间L,R可以分为三部分:L所在区域,R所在区域,和中间。L所在区域:L到该区间右端点的距离。R所在区域:该区间左端点到R的距离。中间部分就是一个RMQ,求区间最值。当LR在同一区域时,直接算就行。#pragma comment(linker

2013-09-25 11:33:05 805

原创 HDU 3911 Black And White

区间合并。简化版的HDU 3397 Sequence operation。区间异或,求最长连续区间的长度。

2013-09-23 13:52:50 714

原创 HDU 3397 Sequence operation

区间合并。5种操作,区间置1,置0,取反,询问区间1的个数和最长连续1的个数。分别记录区间连续1,连续0,1的总个数,及0的总个数。标记3种操作时要注意顺序和逻辑。比如置1置0都能取消取反标志。把出现过一遍以上的代码块拿出去写成函数,会使代码更简短,易维护。#pragma comment(linker, "/STACK:1024000000,1024000000")#includ

2013-09-23 13:07:52 890

原创 HDU 3642 Get The Treasury

体积交。给出若干长方体,求相交超过2次(3次及以上)的部分的总体积。对x,z分别离散化,注意pushup的处理,其他都是老生常谈了(最近队友总是爱用这个词)。用sum[3][M]来表示的前区间的覆盖情况,sum[0]指覆盖一次,sum[1]指覆盖两次,sum[2]指覆盖多次。cnt[M]来记录当前区间的覆盖次数。如果当前区间被覆盖了三次及以上,那么sum[0], sum[1]都为0,sum

2013-09-23 09:06:19 643

原创 HDU 3255 Farming

体积并。在某些矩形内撒种子,重复的地方取价值最高的那个,每个点只能存活一个,求总价值。最先想到的是二维线段树,区间修改,然后统计各种植物的个数,再乘以价值,得到答案,感觉挺麻烦的。然后发现,把价值当高度,就变成体积并了。先求一层的面积,再乘以两层之间的高度差,如此累加。每层的初始面积都是0,上一层的不要了。对于一个长方体,能到哪层,就在那层留下它的足迹。用vector来记录每层的线段。注意会超in

2013-09-22 14:24:33 627

原创 HDU 1828 Picture

矩形周长并。就是数竖着的区间里,竖边的条数,再加上横边即可。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include///LOOP#define REP(i, n) for

2013-09-22 12:02:32 621

原创 HDU 1542 Atlantis

矩形面积并。模板题,给出一堆矩形,求最后的总面积。相交部分只算一次。所谓扫描线,就是指由小到大按y扫一遍,累加相邻的两条横线之间的面积。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include

2013-09-22 11:23:51 654

原创 HDU 1255 覆盖的面积

矩形面积交。跟面积并差不多,只不过要记录两种信息,就是覆盖的次数,每次求出覆盖超过两次的线段的长度,乘以高,累加即可。pushup里面需要注意一下,当覆盖次数超过1和等于0时都正常处理,但当覆盖次数等于1时,是指当前区间的覆盖次数,考虑到他的子区间可能也会有覆盖过,所以所有之前覆盖过的子区间,现在都是又多被覆盖了1次。即sum[rt][1] = sum[rt #pragma comment

2013-09-22 11:20:05 672

原创 HDU 1823 Luck and Love

输入1.2,乘以10,却得不到12,输出的是11...

2013-09-19 10:12:06 1510

原创 HDU 4099 Revenge of Fibonacci

字典树。刚开始用java乱搞了一发,TLE。然后考虑怎样才能在一堆字符串中找到某个串,使得目标串为它的前缀(或者找不到)。也只能想到字典树了。先把每次的数列求出来,多保留几位来保证精度。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#i

2013-09-18 18:56:30 1099

原创 POJ 2155 Matrix

二维入门题。树状数组和线段树都可以,看过论文的话二维树状数组就应该能懂,而二维线段树就要麻烦一些,时刻想着树套树。二维树状数组#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#in

2013-09-18 12:06:15 622

原创 HDU 3265 Posters

矩形面积并。给出一些矩形,这些矩形有的被挖了一个矩形,求最后的面积。可以把每个矩形框拆为四个矩形(也许不够四个,需要判断一下,我一开始没判断,就MLE了),怎么拆都行,就算有重叠也不在乎。中间会超int,其他就是模板了。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#

2013-09-17 18:34:41 1171

原创 HDU 4090 GemAnd Prince

dfs.消宝石,每次可以把同色并且相连的宝石消掉,所谓相连,该格子周围的8个格子都算是相连。消完之后,要下落,并且把空的列向右移,也就是说,保证前几列不空,后边都空。每次找到一群可消除的宝石(相连且大于3个),消掉,移动,记录当前值及最大值,深搜,还原。找的过程bfs,dfs都行吧,搜的同时就把相应的宝石消掉并记录个数。如果剩下的最大值加当前值不大于已得到的最优值,就可以剪掉了。#

2013-09-17 16:18:20 1332

原创 HDU 4031 Attack

树状数组。每个点都有护盾,每次攻击一片,被攻击的点就破盾,需要T秒充能,在充能期间被击中就会受伤,询问单点受伤次数。用树状数组来维护每个点被击中的次数,并保存下来攻击的区间。询问时先求出该点被击中次数,再减去成功防御的次数,就是受伤的次数。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include

2013-09-13 12:44:51 827

原创 HDU 4046 Panda

树状数组。给出一个由b,w组成的字符串,两种操作,一个是询问区间[a,b]内wbw的个数,另一个是更改a点的字符。当连续三个字符符合wbw时在第二个w的下标处(树状数组中)加1。每次更新时,分三种情况讨论。每次询问时,注意区间,注意每个坐标的含义。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#incl

2013-09-12 15:48:30 973

原创 HDU 4043 FXTZ II

排列组合求概率。大概是说:有n个小球,第i个(从0开始)小球权值为2^i,AB两人等概率取球,也就是说轮到谁不一定,但概率为50%。要保证A得到的球的总权值比B的小。输入n时,输出概率。用分子分母形式表示。分子就是成功的总数,分母就是所有的排列呗。n个球,就有n!种排法,每个球不是给A就是给B,所以再乘以2^n就是分母。而分子不会求,dfs打了个小表(10以内)得1,3,15,105......可

2013-09-12 15:39:09 782

原创 HDU 3308 LCIS

区间合并。给出一些数,记为a[i],两种操作。U x y表示把a[x] 的值改为 y。Q x y表示求xy间的最长连续上升序列(LCIS)。这里的x y都是从0开始的。其实吧,就是比较当前区间的左右子区间能否相连,也就是说要看a[k] 与 a[k + 1]的大小关系(k表示区间中点)。其他操作跟“正常”题一样。

2013-09-11 16:15:58 571

原创 HDU 4068 SanguoSHA

很暴力的一道题。问我方是否有一种排列能赢对方的所有排列。枚举呗。dfs按字典序求出我方的一个排列,再用这个排列跟敌方的所有排列比,看赢了多少局。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#incl

2013-09-11 14:47:42 736

原创 HDU 4101 Ali and Baba

长着一张博弈脸的搜索题。给出n*m的地图,有石头空地若干,还有一个宝藏。正整数表示石头的hp,0表示空地,-1表示宝藏,而且保证只有一个。AB轮流敲,每次从边界开始,选一个可达的石头,敲一下,石头的hp-1,hp为零就变成空地了。谁先敲到宝藏,谁赢。

2013-09-11 07:17:34 946

原创 HDU 2871 Memory Control

线段树综合题,好题。

2013-09-10 19:54:09 813

原创 HDU 4267 A Simple Problem with Integers

树状数组。2种操作,1 a b k c :表示把a到b区间内所有下标为i且满足(i - a) % k == 0的值加c,也就是说,下标从a开始,每次加k,直到超过b。2 a:表示询问a点的值。当k等于1时,就是成段更新,单点查询。想到这里不妨把数字分组,对k取余相同的数进一组,那么对每组来说,都是成段更新。单点查询时只需把a在10个组内的值都加起来,再加上原来的值,就是当前a点的值了。然而

2013-09-10 18:31:05 583

原创 HDU 3533 Escape

bfs.在地图上又若干炮塔(随便翻译啦),给出地图大小和炮塔个数以及限定时间,问是否能在限定时间内从左上角跑到右下角。每个炮塔都会开炮的,给出他们开炮的方向,时间间隔,炮弹速度,以及坐标。首先,怎么判断能不能进入下一个点呢?换句话说就是怎么判断下一时刻,那个点是否有停留的炮弹。假如枚举每个炮塔,再计算是否可行,这样不仅不好写代码,也会浪费时间。不妨用3维数组,表示在t时刻,x,y点是否可以进入

2013-09-09 19:39:23 683

原创 HDU 4294 Multiple

dfs。给定n,求n的倍数在m进制下所用的数字种类最少,有多个就输出最小的那个。就是把HDU 1664 Different Digits 的代码中的10换成m就过了。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#

2013-09-06 15:30:10 510

原创 HDU 4288 Coder

线段树。数据不算多(1e5),但是有点大(1e9),就要离散化一下,又是动态插入删除,所以必须先离线才能离散化。换句话说就是先把所有可能出现的数字都存起来,然后再把它们映射到0到num,就叫做离线+离散化。利用sum数组记录当前节点有多少子节点,ans分别记录当前节点的5种余数的和。每次询问时输出ans[2][1],就是根节点余2(第三个)的数的和,会超过int。然后pushup操作中,每个a

2013-09-06 15:22:33 462

原创 HDU 2821 Pusher

dfs.枚举每个点作为起点,然后四个方向移动就行。先把字符串数组转化为整数,方便判断,每次dfs前后,注意修改与恢复。#include#include#include#include#include#include#include#include///LOOP#define REP(i, n) for(int i = 0; i < n; i++)#define FF(i,

2013-09-06 07:24:34 632

原创 HDU 1664 Different Digits

对于任意的整数n,必然存在一个由不多于两种数字来组成的n的倍数?

2013-09-05 19:08:37 1613

原创 HDU 4474 Yet Another Multiple Problem

bfs。求n的最小倍数,要求其中不包含所给的数字。通过余数来判重。

2013-09-05 16:16:33 612

空空如也

空空如也

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

TA关注的人

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