自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Last Order

最后之作

  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 codeforces 508 E. Arthur and Brackets

这个题,哈哈,很无语。题意:给出所有左括号跟右括号之间合法的距离,求出一个合法的括号序列。由于括号肯定是快点匹配完最好,所以维护一个栈,若当前的左括号可以被匹配那就匹配否则丢一个左括号进去。#include#include#include#include#include#include#include#include#include#include#

2015-07-31 17:19:45 801

原创 hdu5335Walk Out

题意:给出一个01矩阵,从左上角走到右下角,问路径形成的二进制最小是多少。这个题目很显然,但是我的做法还是很有意思的,于是写下。很显然,为了去掉前导0的影响,首先爆搜出所有离重点最近的点然后压入丢列开始爆搜,此时只需要往下往右走即可。爆搜的时候每次处理出下一层的所有状态,若能够出现0,则不考虑其他为1的情况,这样只需要维护两个数组即可,很方便。#includ

2015-07-30 21:39:46 862

原创 hdu5336XYZ and Drops

题意:给出r*c的网格,有的网格为空,有的有水,再给出一个爆炸点,从这个点向四周爆出四个水滴,若碰到水则融为一体,若碰到其他水滴直接跑过去互不影响,每秒可跑一格,问T秒后网格的状态是怎样的。做法:由于数据有点多,直接用set优化bfs一次走一步的过程,变成一次走多步即可。#include#include#include#include#include#in

2015-07-30 21:28:42 1237

原创 codeforces 424 D Biathlon Track

题意:给出一个布满数字的网格,可以上下左右走,若下一个格子的数字比当前格子要大或者小或者一样,分别都要付出代价。给出一个期望代价,问当要求顺时针走出一个长宽均大于3的矩形的四条边后,最接近期望代价的情况。做法:由于长宽大于3,直接暴力枚举即可。#include#include#include#include#include#include#include#in

2015-07-30 20:18:53 991

原创 CodeForce 424C Magic Formulas

这个题就是求出给的公式的结果。只要知道异或运算满足交换律跟结合律就行了,之后就是化简公式。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include

2015-07-30 10:31:15 754

原创 codeforce 437 D The Child and Zoo

题意:给出n个带权值的点,m条边,任意两点之间的一条路径的权值为这条路径上的所有点中的最小权值,任意两点间的权值为它们之间所有路径的权值中最大的那个。做法:考虑下并查集,就是首先把所有边降序排序,然后开始建立并查集,若要加入的两点已经在同一个集合中,那么已经贡献到了ans,不用管了,若不在,则进行合并,利用乘法原理也就是两个集合元素数量相乘算出它们之间能够形成多少路径,这些路径的权值就

2015-07-30 09:37:34 639

原创 codeforces 543 C Remembering Strings

题意:若一个字符串集合里的每个字符串都至少有一个字符满足在i位上,只有它有,那么这个就是合法的,给出所有串的每个字符改动的花费,求变成合法的最小代价。做法:dp[i][j],前i个串的状态为j时的最小花费。j:状压表示已经合法的是哪些串。可以知道,若j前有i个1,那么访问它就是多余的,所以去掉i,枚举j即可。对于一个串的i位,若考虑它为这个串的唯一标识,那么无非

2015-07-29 12:07:12 992 2

原创 codeforce 550 D Regular Bridge

题意:建立一个连通图,它的所有点的度为k,且至少含有一个桥。做法:先建立一个桥,再在桥两边建立两个度为k的连通图,通过这个桥连接在一起。很显然k为偶数的时候无解。#include#include#include#include#include#include#include#include#include#inc

2015-07-28 21:46:29 786

原创 hdu 5306 Gorgeous Sequence

对线段树进行三种操作:          区间求和。          区间求最大值。          将节点值更新为当前值与给定值中的最小值。怎么做?代码中有详细注解,看看就懂了。#include#include#include#include#include#

2015-07-27 18:35:11 2266

原创 codeforce 559 C Gerald and Giant Chess

题意大概就是从左上角走到右下角只能往下或往右走,黑色格子不能走,问有多少种走法。这个要是知道对于没有黑色格子的时候,走到r行,c列的走法是C(r+c-2,r-1)的话就很容易了。考虑到黑色格子数目较少,dp[i]:走到第i个黑色格子的走法#include#include#include#include#include#include#include#inc

2015-07-27 09:45:47 838

原创 hdu5303Delicious Apples

题意大概就是有n框苹果放在长度为L的环上,每框有ai个苹果,你有一个容量为k的框,要你从0点处出发,任意走,框满了就回到0点把苹果放在那里,继续走直到把苹果都拿完为止,问你最少要走多少路程。首先贪心的策略,不管往哪边走,碰到苹果就拿,拿满就滚回去。然后碰到走一个半圈,框还剩下容量的情况,就需要dp了,主要是L为偶数的时候,若L/2的位置有苹果,该算是哪个半圈拿比较好呢?当然也可

2015-07-25 21:17:02 846

原创 uva live 6827 Galaxy collision

就是给出很多点,要求分成两个集合,在同一个集合里的点要求任意两个之间的距离都大于5。求一个集合,它的点数目是所有可能答案中最少的。直接从任意一个点爆搜,把它范围内的点都丢到跟它不一样的集合里。不断这样搞就行了。因为可能有很多相离的远,把每次搜索得到的那个最小的数目加起来即可。由于所有点都格点上,所以只需要枚举一个点能够包含的点是否在数据中存在即可。

2015-07-25 18:52:44 729

原创 图解hdu5301Buildings

这个题就是给出一个大矩形n*m,其中有个1*1的小格子不能被占用,然后要你用很多小矩形去填满,问小矩形的最小最大面积是多少。显然小矩形必然是1*x的最好,毕竟i*x,若i>1则还是可以拆成很多1*x。显然若没有那个被占用的格子,那么答案就是min(n,m)+1>>1。当考虑这个格子的时候,我们把矩形调整下,保证nj必然至少有一个还是用(min(n,m)+1>>1)*1的矩形去竖着填最好

2015-07-24 17:09:41 672 1

原创 hdu5305Friends

题意:给出n个人,m对朋友,要求每个人的A类朋友跟B类朋友一样多,求种类数……不会做……我想爆搜……当时我还太年轻,并不知道怎么爆搜……这样,维护一个d数组,di表示i的状态,若i有一个A就+1,否则-1,这样若是一样多,肯定di最后=0爆搜所有边的状态即可,因为边足够多的时候,有些边之间相互制约,所以实际上跑得并不太慢#include#include#incl

2015-07-24 11:53:47 754

原创 codeforces 560 C Gerald's Hexagon

神精度……………………这都能过,随便算就好了,根本不用担心就是把六边形补全成三角形,然后去掉补的三个三角形,然后面积除以边长1的三角形的面积即可。。。。#include#include#include#include#include#include#include#include#include#include#include#include

2015-07-23 21:52:14 1275

原创 hdu5299 Circles Game

题意是这样,给出很多圆,要么两两相离,要么包含,若删掉一个圆,那被他包含的都要删除,若某人没有圆给他删,那么他就赢了。。。。知道树上博弈的话,就很简单。。。不知道的话,这确实是个神题……按半径上升排序,从左往右扫,i扫到第一个j可以包含它的圆,建立j到i的连边,然后break这样就建立好了一棵树,之后知道这个就很简单了。。。树的删边游戏规则如下:

2015-07-23 09:06:22 1105 5

原创 codeforces 551 C GukiZ hates Boxes

……睡太晚了。。。脑子就傻了……这个题想的时候并没有想到该这样……题意大概是有n堆箱子从左往右依次排列,每堆ai个箱子,有m个人,最开始都站在第一个箱子的左边,每一个人在每一秒钟都必须做出两种选择中的一种:1若他的位置有箱子则搬走一个箱子,2往右走一步。问把所有箱子都搞掉的最少时间……很显然二分一下答案,若为x秒,则每个人都有x秒,一个一个排出去搬,看是否能够搬完……

2015-07-22 19:56:26 1073

原创 codeforces 552 C Vanya and Scales

这个题的意思就是给出一个数m,以及一个以1为首元素,w为比例常数的等比数列,数列长度为101,数列中每个数字最多只能用一次。问是否存在xa+wb+……=wc+wd+……+we+m。很显然,换句话说就是问,是否存在m=wa+wb+……+wf-wc-wd-……-we,再进行化简就可以得到,是在问,是否存在m=((((wh±1)wi±1)±1)wj±1)wk……。那么很显然可以进行搜索,比如说用

2015-07-21 09:00:42 989

原创 codeforces 552 E Vanya and Brackets

题意是这样,给出一个运算符只有+跟*,数字都在1到9之间的算式,要你加入一对括号,使得算式的结果尽可能的大,保证最多十五个乘号。很显然,若要让加入的括号能够影响原本运算的结果,必然是要影响乘法,那么加入的这对括号中必然至少有一个跟乘号是相邻的,恰好乘号的数目很小,那么直接枚举括号的位置即可,每次算出当前解更新ans即可。#include#include#include#include

2015-07-20 21:32:03 735

原创 codeforces 553 D Nudist Beach

题意大概是,给出一个图,保证每个点至少有一条边以及任意两点间最多一条边。很显然这个图有众多点集,若我们给每个点定义一个权值,那每个点集都有一个最小权值点,现在要求出一个点集,这个点集的最小权值点尽可能的大。某个子集中,点的权值是这样算的,在该子集中这个点的度除以该点在图中的度。乍看上去似乎无从下手。可以显然知道的是,每个点在图中的权值是很容易算出来的,那我们尝试从图中进行删点,使得当前

2015-07-20 11:06:43 2319

原创 codeforces 555 C Case of Chocolate

一开始题目读错了,还以为可以从任意点为起点向上向下吃。其实是只能从右边的边界为起点吃。于是很明显,每一个横坐标最多只能出现一次,否则肯定是当前这个起点的巧克力已经被啃食了。想到这里就更明显了,对于(xi,n+1-xi),若是向上吃,能够影响它的操作(xj,n+1-xj)肯定满足xj>xi,然后又明显一点,最小的xj肯定能影响到它。我们来考虑操作(xj,n+1-xj),若它是往左

2015-07-19 21:21:07 1054

原创 hdu5032 Always Cook Mushroom

题意是这样,给定一个1000x1000的点阵,m组询问,每次询问一个由(0,0)、(x,0)点一以及从原点出发的方向向量(a,b)构成的直角三角形包围的点的权值和。点的权值是(x+A)(y+B),其中A,B是给定的常数做法也很显然,将查询离线下来按照方向向量排序,之后的操作就相当于用一根断点在原点的线从x轴开始往y轴扫,不断地把扫到的点的权值加入到树状数组中。每次扫到某个查询的方向

2015-07-19 10:14:27 791

原创 codeforces 557 E Ann and Half-Palindrome

题意是要求出一个串的第k大的半回文子串半回文串的定义是:若一个串其实位置为1,那么当所有奇数位i,且i那么这个串就是半回文串。作法就是,把这个串的所有半回文子串建成一个字典树,然后查第k大就好了#include#include#include#include#include#include#include#include#include#i

2015-07-19 08:42:38 973

原创 codeforces 558 E A Simple Task

题目大意就是给一个字符串,然后多个操作,每次操作可以把每一段区间的字符进行升序或者降序排序,问最终的字符串是怎样的。做法的话就是用线段树维护区间和  一开始只考虑字符串中字符'a'的情况,假设操作区间[L,R]中有x个'a',那么一次操作后,这x个'a'要么去最左(升序),要么去最右(降序),我们可以建立一颗线段树来维护这样的操作,字符'a'出现的位置值为1,否则为0,那么q次

2015-07-17 17:45:08 1043

原创 codeforces 558 D Guess Your Way Out! II

题意是这样:一颗高为h的完美二叉树,根节点为1,标号为i的结点的左右儿子标号分别为2*i,2*i+1q次操作,i,l,r,ansans==0时,代表在第i层,出口的祖先不在[l,r]之间ans==1时,代表在第i层,出口的祖先在[l,r]之间若出口(出口一定在叶子上)唯一则输出它的标号,不唯一或无解则分别输出对应的串我想到的做法很显然,把所有ans==1

2015-07-16 17:57:33 1273

原创 codeforces 558 C Amr and Chemistry

预处理两个数组:vis[x],有几个数能够变成xnum[x],所有数变成x最少需要变化的步数ans=min(num[x]),vis[x]==n#include#include#include#include#include#include#include#include#include#include#include#include#include

2015-07-15 10:40:01 1414

原创 codeforces 556 D Case of Fugitive

这个题很显然,可以转换成这个问题:有n-1个区间,m个数,每个数最多只能用一次,第i个数只要能被第j个区间包含,那么这个数就可以放入这个区间内。求出,当所有区间里都恰有一个数时的情况。我们把所有区间按照下限升序排序,所有数升序排序之后分治即可。分治过程,维护一个元素为区间的小堆,堆顶是上限最小的区间。考虑第i个数,把所有能够包含它的区间都丢到堆中,然后从堆中丢一个区

2015-07-13 22:30:33 1427

原创 codeforces 557 C

因为期末,很久没刷题了,CF一直掉……这个题其实很简单。。因为做法很容易想到嘛。。就是枚举max=x时,最大能保留多少价值,不断更新ans,结果就是所有价值和减去ans就好由于最大能够保留的长度是199+200,所以当max=x时,算最大能保留多少价值,也是一个循环算出当前长度比x小的那个桌子角的最大的那几个价值之和保留就行了,这里写的比较绕。。反正看看代码一下

2015-07-01 22:19:27 1088

Dev-Cpp 5.5.3 TDM-GCC x64 4.7.1 Setup.exe

官网下的,方便自己网吧使用。调试编译功能完整。

2014-04-24

空空如也

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

TA关注的人

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