自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ACMer_quack&cheer

when the hobby becomes your burden, you start to hate and desert it.

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

原创 COCI2009 PATULJCI

给出N个人的颜色,有c种不同的颜色。给出查询次数M查找区间[L,R],对于每次查询操作,问在区间[L,R]是否有有一种颜色的出现的次数>(L+R)/2,如果有,输出yes及颜色的种类,否则输出no。暴搜大概能过3个点。我的最先思路是对于每种颜色都求一个前缀和,然后每次的查询操作时间复杂度就是O(1),但是光是为了记录颜色的颜色和就已经超时了,而且还要暴内存,于是我们不得不寻求更简便的方法。

2015-08-25 17:46:20 714

转载 HDU2089 不要62 (数位DP)

传送门数位DP的入门题,看了半天才看懂。。。题解:http://blog.csdn.net/gengmingrui/article/details/47957397这里再解释一下,dp[i][j]表示第i位数为j的方案,很好想到dp[i][j] = sum(dp[i-1][k])其中j,k≠4,j≠6且k不同时等于2。在求区间[l,r]的时候,可以用区间[1,r]-[1,l-1]。因此

2015-08-24 21:18:37 363

原创 CodeVS2492 上帝造题的七分钟2(树状数组+并查集)

传送门树状数组模板题。注意优化,如果某个数的值已经是1了的话,那么我们以后就不用对他进行操作了,这个可以用并查集实现。这道题还有个坑的地方,给出查询区间端点的a,b,有可能a>b。#include#include#include#includeusing namespace std;inline void GET(int &t){ char c; t=0;

2015-08-23 13:38:27 652

原创 NOIP2012 借教室

自己YY出来的方法,时间复杂度为n*m,但实际上并没有这么多,codeVS上最慢的一组有300多ms。对于每一个订单,在它的左端点加上需要的教室数量,在右端点加1的位置减去需要的教室数量。然后统计前缀和,如果有某个点的前缀和大于了当天教室的数量,那么就有的订单就有问题了,然后从订单编号从小到大统计在订单区间的教室数量,保存恰好不能满足的那个订单;对于之后不满足题意的前缀和,统计订单的最大编号不

2015-08-18 19:59:48 1047

原创 POJ3761 Bubble Sort

对1~n组成的序列进行冒泡排序,一共进行了k趟,问有几个符合题意的序列。注意:这里指每一趟是指交换当前相邻的所有逆序对,例如:2 1 4 3进行一趟交换就是1 2 3 4如果我们细心观察,就会发现,需要进行的趟数等于序列中对于某个最多逆序对数的数。例如:在序列 3 2 1 4中,3的逆序对为0,2的逆序对为1,1的逆序对为2

2015-08-17 21:52:15 671

原创 UVA10288 Coupons(卡输出神题)

给出n,求Σn/i (i = 1 to n,n分数的基本运算,首先打好表。#includeusing namespace std;typedef long long LL;struct T{ LL zs,fz,fm;//整数,分子,分母 T(){zs = 0,fz = 0,fm = 1;} T(LL a,LL b,LL c) { zs = a; fz = b;

2015-08-17 20:10:25 530

原创 POJ1062 昂贵的聘礼(最短路)

说白了就是给你一张图,每个点有一个等级限制,在等级限制以内求一条最短路。构图方法:首先将原点0连向每一个物品对应的编号,那么边权为物品的初始价格;如果对于物品j,如果有了物品i,那么j的优惠价为w,就在i,j之间连一条权值为w的边。最后枚举等级的范围(注意等级的上下差为m,其中包含了酋长的等级,而不是与酋长等级差的绝对值小于等于m QAQ),求到原点到酋长(0号点到1号点)的最短路。#in

2015-08-17 16:59:53 524

原创 NOIP2010 引水入城

模拟考试的时候由于前面的题耗时太严重,所以没有写对于第一行的每个城市,我们可以预处理出在这座城市建立蓄水厂,水流能到达最下面一行的哪些城市;如果最终的题目是有解的,那么最后一行这些被覆盖的城市是连续的,反证:如果水流到达最下面一行的城市是断开不连续的,则说明中间有城市海拔比四周都高,其他城市过来的水流也流不上去,因此永远无法被覆盖,与我们之前的条件相矛盾。预处理出来每做城市的覆盖范围后,这

2015-08-16 21:22:00 1015

原创 NOIP2010 关押罪犯(图论+二分)

考试的时候写的最大生成树,然后二分图染色,因为这样两个矛盾很大的罪犯不会被分在一个监狱里面。然而最大生成树超时,80分。正解为二分边权,将边权值大于mid的全部连边构图,判断是否为二分图,如果不是二分图,那么无解。如果无解,则说明边权的限制条件太小了,因为连的边太多,不容易形成二分图;如果有解,则说明边权的限制条件太大,因为更少的边有利于形成二分图。80分代码,最大生成树:#i

2015-08-16 20:39:04 965

原创 NOIP2010 乌龟棋(多维DP)

考试的时候老是在想第一维是走到点i时候的最大值,然后没有考虑到这样可以计算出每种牌用了多少张。。。。。dp[i][j][k][l]表示第一种牌用i张,第二种牌用j张,第三种牌用k张,第四种牌用l张的最大值#include#include#define MAXN 355using namespace std;int c[5],a[MAXN],f[41][41][41][41];in

2015-08-16 19:33:40 523

原创 URAL1306 Sequence Median(卡内存神题)

给出n个数,n卡内存的神题,用数组存下来刚好1mb,再加上运行时消耗内存,马上爆。因此我们用优先队列存储一半的数。网上的某些代码,用priority_queue全爆内存。我存的125000长度的数组,加上STL的make_heap()#include#includeusing namespace std; int a[125010];int main(){ in

2015-08-16 14:15:42 650

原创 SGU183 Painting the balls(DP+优化)

给出n个白球,每个球有一个涂色的费用,要求任意连续m个球中至少有两个黑球,求最少的涂色费用。由于连续m个球中至少有两个黑球,我们不难得到递推式f(i,j) = min{ f(j,k) | i > j > k >=  i-m} + c[i] ,表示当前给第i个球涂色,上一个给第j个球涂色的最小费用。这个递推式的时间复杂度为O(N*M^2),由于SGU大多数都是卡时间的神题,我们为了追求更高效的算

2015-08-14 13:20:39 861

原创 UVA11261 Bishops

给出一个n*n的棋盘和m个象,每个象能够覆盖它所在的对角线,问没有被覆盖的点有多少个n*n的暴力方法很好想出来,但是肯定超时。但是我们可以把主对角线和从对角线保存下来,预处理好没有被覆盖的点,dp[i]表示第i条从对角线上面没有被覆盖的点,一共有2*n-1条从对角线。对于从对角线的上半部分,dp[i]初始化为dp[i-2]因为他们的奇偶性相同,则除去第i条从对角线的两个端点以外,如果第i-2条

2015-08-13 21:20:09 687

原创 POJ3045 Cow Acrobats(贪心)

题目链接:http://poj.org/problem?id=3045有n头奶牛叠罗汉,其中第i头奶牛的重量为wi,力量为si,每头奶牛有一个难受值di,等于他上面所有奶牛的重量和减去他的力量,现在找出一种方案,使得这n头奶牛中最大的难受值尽量小这里有一个猜想,把wi+si作为关键字排序,大的排在后面,反正我是没有想出来,在这里简单证明一下设i,j是相邻的奶牛,而且wi+si>wj+s

2015-08-12 21:47:25 620

原创 POJ3621 Sightseeing Cows(最优比率环)

题目链接:http://poj.org/problem?id=3621在一个有向图中选一个环,使得环上的点权和除以边权和最大,求这个比值。经典的分数规划问题,我觉得这两篇题解写得很清楚,可以参考一下http://blog.csdn.net/gengmingrui/article/details/47443705,http://blog.csdn.net/wall_f/article/det

2015-08-12 21:26:31 1603

原创 NOIP2013 货车运输(最大生成树+LCA)

模拟考试的时候暴搜,结果写丑了,分都不分下来啃了一下题解,发现要用到一个叫做倍增的东西,还没有学过。但是老师说的,没有那个东西,写暴力也有30~40分。。。我觉得最大生成树还是很好理解的,因为我们要求的是图中任意两个点之间的路径上,使得边权的最小值尽量大。因此首先求最大生成树。当我们得到最大生成树后,要求两个点之间边权最小值,我们可以首先找到他们的公共祖先。这里有一篇写得很详细的代码,

2015-08-11 21:28:58 4234 1

原创 NOIP2013 火柴排队

逆序对的经典题目。考试的时候不知道怎么写丑了,全WA了,正好带我复习了一遍逆序对。将火柴序列从小到大分配一个等级,当a的等级与对应的b的等级相同时,答案最小,至于为什么是这样,我就不证明了。这里的等级,实际上就是离散化。把a的等级从小到大排序之后,再把b对应a的等级排序,求出现在b的等级序列中的逆序对,就是我们要求的交换次数,因为每交换一次,只能使一组逆序对变成有序的。注意暴搜求逆序对

2015-08-11 21:05:15 1713 1

原创 POJ3169 Layout(差分约束)

有N头奶牛要排成一列,对于给定的规则   A B  w 表示B距离i至多为w,A B w 表示B距离i至少为w,求这N头奶牛至少能够排成多长。如果排不成一列,输出-1,如果可以排成任意长的距离,输出-2这道题带领我复习了一遍差分约束,学了好久几乎忘完了。题目给出的条件可以视作 dis(b) - dis(a) = w,dis()表示i点到

2015-08-11 19:55:53 447

原创 NOIP2009 最优贸易(BFS)

本题正解是tarjan,我没有去写之前的代码是错误的不好意思,由于数据太弱一直没有发现。同样还是两遍bfs,一次正向,一次反向。在正向的时候我们求出从起点走到各个点的最小值,在反向的时候求出从终点走向起点的最大值。这样一来,便可以知道对于每一个点i,在1到n的路径上面,经过的最大值是多少,经过的最小值是多少,最后max(mx[i]-mp[i])就是要求的答案。

2015-08-10 21:34:38 852

原创 NOIP2009 靶形数独(搜索)

以前做过一道hdu类似的数独题,那道题我没有加什么优化就过了,然后这道题不加优化可以得50~80分,要上80分就必须要优化可以用位运算保存每一行每一列每个九宫格内已经使用的数,例如userow[i] = 011101111表示第i行还有1,5两个数字没有使用,那么我们枚举每个未知的格子(i,j)时,他不能填的数就是userow[i]|usecol[j]|usebox[i/3*3+j/3] ,其

2015-08-10 21:01:54 1733

原创 NOIP2009 Hankson的趣味题

求出满足条件的x的个数:gcd(x,a0) = a1  lcm(x,b0) = b1我们不难得到gcd(x/a1,a0/a1) = 1  gcd(b1/x,b0/b1) = 1以前上数论的时候讲过这道题,结果我没有去及时写,然后就不会做了。。。。暴搜其实也能拿80分。。。参考了一下网上的题解点击打开链接

2015-08-10 19:45:26 1866

原创 Codeforces Round #299 (Div. 2) Tavas and Karafs(二分)

英语渣渣感觉无力。。。翻了下题解才知道题意。。。给你一个无限长的等差数列a,n个查询。对于每个查询,给出l,t,m,求最大的r。表示在等差数列a的第l号元素到第r号元素,执行t次操作,对于每一次操作,在[l,r]区间内选出m个数,并且把这m个数-1,执行完t次操作后,使得区间[l,r]内的数全部为0,求区间最大的右端点r。如果t小于a[l],那么执行完t次操作a[l]也不会为0,输出-1

2015-08-09 17:08:19 412

原创 NOIP2011 观光公交(贪心)

好吧,看到这道题的题目就晕了,好长一串。。。由于找不出来什么特别NB的算法,就上贪心吧。。。网上看了下各种题解,对于某个车站i,如果汽车的到达i站的时间比最后一个来到第i站的时间要短的话,我们就可以考虑使用加速器了。因此枚举在哪个车站i使用加速器能够使节约的时间最多,每次使用了加速器后,更新一遍汽车到站的时间。一直不停地找最优的车站使用加速器,直到加速器用光或者用不用加速器都一样的时候就退

2015-08-08 13:04:29 890

原创 Codeforces Round #313 (Div. 2) Gerald's Hexagon

给出一个六边形六条边的长度(六边形的每个角为120度),求出这个六边形中边长为1的等边三角形有多少个由于每个角都是120度并且上下两条边是平行的,因此我们可以补出一个矩形,再减掉周边四个角的面积,用剩下面积除以每个小三角形的面积。#includeusing namespace std;double a,b,c,d,e,f;int main(){ scanf("%lf%l

2015-08-07 17:55:03 468

原创 Codeforces Round #313 (Div. 2) Equivalent Strings(搜索)

题目大意:判断两个字符串是否等价。等价的条件(任意一条满足即可):1、两个字符串完全相同2、把每个字符串分成长度相同的两部分,若a1等价于b1并且a2等价于b2,或者a1等价于b2并且a2等价于b1由于等价的条件说得很模糊,我卡了不久。等价条件里的第2条的意思是,如果ab两个字符串的两两子串都满足这两个条件,那么ab是等价的(有点绕,对吧),如果我们都已经解读清楚这句话了,显然

2015-08-07 17:48:34 495

原创 NOIP2011 聪明的质监员(二分)

由于我们并不清楚要求的W的值,但是我们知道W的值不超过矿石中价值最大的,如果W大于了矿石中价值最大的,那么Y的值为0,无法达到最优解。因此,很容易就能想到在确定W的值要用二分的方法。在分析这道题的时候,我们很容易知道Y的值是满足单调性的,当W的值越大,Y的值越小,因为W越大,能够选的矿石就越少。所以我们把得到的Y值作为判断条件,如果Y比S小,就说明检验值了,而W取大了。每次更改W的同时

2015-08-07 17:25:13 1821

原创 NOIP2011 Mayan游戏(搜索)

第一反应是搜索题,想了一下如果用BFS的话,由于状态过多,可能超内存,因此我用的DFS。这里我们讨论一下剪枝条件:如果当前状态有一种颜色的数量小于3,那么这种颜色就无法被消除,因此我们可以提前退出迭代。如果两个连着的方块颜色是相同的话,我们不用交换。如果两个非空的方块交换,我们只用考虑左边那个方块右移,而不用考虑右边方块左移的情况,这样就能做到右移优先。如果一个方块是空的,它的

2015-08-06 21:37:33 4428

原创 Codeforces Round #312 (Div. 2) Amr and Chemistry(位运算+暴搜)

题目大意:给出n个数,对于每个数可以进行两种操作:变为原来的两倍,变为原来的一边并且下取整。对于每个数进行若干次操作,问总共经过多少次操作后,每个数都变成一样大。思路:看到乘2除以2就想到位运算。因为每个数的大小不超过10^5,因此我们先预处理出来这n个数能达到的10^5以内每个数(对于10^5内的每个数,如果这n个数中没有一个数通过位移能达到的话,它的vis值加1),并且求出来达到这

2015-08-06 20:05:36 477

原创 POJ2976(01分数规划+二分)

题目大意:给你n对a,b,现在让你删除其中k对,使得剩下的n-k对a,b的Σa/Σb的值最大。(所有的a这是我第一次做01分数规划的题,写得可能有点辣鸡。结果可以这样写a·x/b·x,a,b,x为向量,x∈{0,1}。x = 0表示不选否则表示选。易知n个x中有k个0。令p = a·x/b·x 。则有ax - p*bx = 0;定义函数f(p) = max{ax - p*bx}。当

2015-08-05 17:43:48 476

原创 USACO 奶牛食品(网络流)

题目大意:FJ的奶牛们只吃各自喜欢的一些特定的食物和饮料,除此之外的其他食物和饮料一概不吃。某天FJ为奶牛们精心准备了一顿美妙的饭食,但在之前忘记检查奶牛们的菜单,这样显然是不能不能满足所有奶牛的要求。但是FJ又不愿意为此重新来做,所以他他还是想让尽可能多的牛吃到他们喜欢的食品和饮料。FJ提供了F (编号为1、2、…、F)种食品并准备了D (编号为1、2、…、D)种饮料, 他的

2015-08-04 21:48:13 1629 2

原创 NOI2006 最大获利(网络流)

题目描述:新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战。THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究、站址勘测、最优化等项目。 在前期市场调查和站址勘测之后, 公司得到了一共 N个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需要投入的成本也是不

2015-08-04 19:33:34 761

空空如也

空空如也

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

TA关注的人

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