2015年10月25日

Killer Problem(暴力)

摘要: 题意:给定一个序列,每次询问l到r之间两个数差的绝对值的最小值。分析:开始以为是线段树离线处理,实际暴力就好!#include #include #include #include #include #include #include #include #include #include #incl... 阅读全文

posted @ 2015-10-25 22:46 积跬步、至千里 阅读(186) 评论(0) 推荐(0) 编辑

Permutation

摘要: 题意:求1-k的排列中第n大的序列,题目给出n的计算方法:n = si*(k-1)+s2*(k-2)...+sk*0!已知si分析:si的含义是剩下没用的数中第(si+1)大的数,用线段树,0,1表示处理情况#include #include #include #include #include #... 阅读全文

posted @ 2015-10-25 22:44 积跬步、至千里 阅读(204) 评论(0) 推荐(0) 编辑

SKYLINE

摘要: 题意:n个建筑,给出其左右坐标和高度,有可能发生覆盖,求每个建筑在多长部分是最高的(覆盖度),求各覆盖度之和。分析:线段树,两个懒惰标记same区间是否同一高度、val区间最高高度#include #include #include #include #include #include #inclu... 阅读全文

posted @ 2015-10-25 22:38 积跬步、至千里 阅读(162) 评论(0) 推荐(0) 编辑

RMQ with Shifts

摘要: 题意:n个数两种操作,1、给出一组位置,使各位置的数循环移动,2、求给定区间的最小值。分析:单点更新,区间最值#include #include #include #include #include #include #include #include #include #include #incl... 阅读全文

posted @ 2015-10-25 22:28 积跬步、至千里 阅读(158) 评论(0) 推荐(0) 编辑

Potentiometers

摘要: 题意:线段树的单点修改,区间查询#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include... 阅读全文

posted @ 2015-10-25 22:25 积跬步、至千里 阅读(174) 评论(0) 推荐(0) 编辑

Fast Matrix Operations

摘要: 题意:二维的区间增、改,求区间最值、和值。分析:把二维化为一维,注意懒惰标记。#include #include #include #include #include #include #include #include #include #include #include #include #in... 阅读全文

posted @ 2015-10-25 22:24 积跬步、至千里 阅读(156) 评论(0) 推荐(0) 编辑

Frequent values

摘要: 题意:n个数q个询问,每次询问区间[i,j]中数出现最多的数的次数,序列是非降序的。分析:相同的数都是相邻的,把每段相同的数,标记起来,每段的标号id,左右边界left,right,数量num,当查询时,由三部分right[i]-i+1、j-left[j]+1、和编号id[i]+1,id[j]-1数... 阅读全文

posted @ 2015-10-25 22:21 积跬步、至千里 阅读(208) 评论(0) 推荐(0) 编辑

Ping pong

摘要: 题意:n个人的能力值,任意两个人找第三人能力值位于两者之间,组成一场比赛,问一共能组成几场比赛。分析:对于第i个人,BIT求出前面小于它的人数c和后面小于他的人数d,根据乘法原理,c*(n-i-d)+(i-c-1)*d;#include #include #include #include #inc... 阅读全文

posted @ 2015-10-25 22:15 积跬步、至千里 阅读(428) 评论(0) 推荐(0) 编辑

Blocks

摘要: 题意:n个带颜色的方块,每次可以选择一段颜色相同的连续方块消除得分为消去块数的平方,消除所有方块得到的最大分数。分析:区间dp,dp[i][j][k] 表示,从i到j块且j后面有k块与第j块的颜色一样。dp[l][r][k] = max(dp[l][r][k],dfs(l,i,k+1)+dfs(i+... 阅读全文

posted @ 2015-10-25 22:08 积跬步、至千里 阅读(159) 评论(0) 推荐(0) 编辑

Minimizing Maximizer

摘要: 题意:最少需要多少个区间能完全覆盖整个区间[1,n]分析:dp[i]表示覆盖[1,i]最少需要的区间数,对于区间[a,b],dp[b]=min(dp[a...b-1])+1;用线段树来维护区间最小值。#include #include #include #include #include #incl... 阅读全文

posted @ 2015-10-25 22:02 积跬步、至千里 阅读(246) 评论(0) 推荐(0) 编辑

Mountain Road

摘要: 题意:n个车,过一条路,有不同的方向,路上不允许同时有两个方向的车,给出每个车的起始时间,方向,和经过路花费的时间,车最小间隔10个时间,求最后一个车通过路的最早的时间。分析:dp[i][j][0]表示0方向经过i个车,1方向经过j个车,最后在0方向,最后一个车通过路的最早的时间。dp[i][j][... 阅读全文

posted @ 2015-10-25 21:56 积跬步、至千里 阅读(130) 评论(0) 推荐(0) 编辑

Garlands

摘要: 题意:n个数分成m段,每段偶数个数,最小化和最大段的半个区间的数字和。分析:先想到了二分,dp求能分成的最小段数。#include #include #include #include #include #include #include #include #include #include #in... 阅读全文

posted @ 2015-10-25 21:47 积跬步、至千里 阅读(169) 评论(0) 推荐(0) 编辑

Pitcher Rotation

摘要: 题意:n个人m个对手给出每个人能战胜每个敌人的概率,现在有g个比赛,每个人赛完后要休息4天(可重复用),求能获得胜利的最大期望个数。分析:因为只有每个人5天就能用一次,所以对于每个人来说,只有得分前5的会被使用上,所以后4维状态只需要5^4,进行状态转移dp[i][j][k][l][p]表示第i场比... 阅读全文

posted @ 2015-10-25 21:40 积跬步、至千里 阅读(127) 评论(0) 推荐(0) 编辑

Chopsticks

摘要: 题意:n个数3个相邻是一组,求选k组使得,各组组内较小的两个数的差之和最小。分析:对于每个数选或不选的问题,dp[i][j]表前i个数选了j组得到的最小和。dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+差)选或不选,数应该降序排列。#include #include #i... 阅读全文

posted @ 2015-10-25 21:30 积跬步、至千里 阅读(230) 评论(0) 推荐(0) 编辑

Learning Vector

摘要: 题意:给出n组x,y增量,从(0,0)开始以x,y坐标增加后等到的终点坐标,可以构成一个面积,再以这个终点为起点再增加,以此类推,使用增量顺序不同,得到的面积不,求用k组增量能得到的最大的面积。分析:先按(x,y)和(0,0)确定的斜率降序排列(这个贪心好想)dp[j][k]表示用j组增量能达到右边... 阅读全文

posted @ 2015-10-25 21:22 积跬步、至千里 阅读(153) 评论(0) 推荐(0) 编辑

Dyslexic Gollum

摘要: 题意:求长度是n的二进制串中,不含长度大于等于k的回文串的个数分析:dp[i][j][k]表示长度i,后11位状态是j不含长度大于等于k的回文串的个数(因为k最大是10,所把后11位状态压缩,dp[i][j][k]=dp[i-1][j>>1][k]+dp[i-1][j>>1|(1#include #... 阅读全文

posted @ 2015-10-25 21:09 积跬步、至千里 阅读(145) 评论(0) 推荐(0) 编辑

Locker

摘要: 题意:有2个数字串,每次可以变化1-3位(每位+1或-1(0-9,9-0)可循环),求由1串变到2串的最小用的次数。分析:dp[i][num]表示变到第i位时最后两位组成的数是num时最小次数(因为dp[i-1][num1],num1肯定是i位数的i-1,i-2位数,dp[i][num]=min(d... 阅读全文

posted @ 2015-10-25 20:59 积跬步、至千里 阅读(275) 评论(0) 推荐(0) 编辑

Folding

摘要: 题意:给定一个串,求能化成的最短循环节串(把重复字符串转化成循环节形式)分析:不是太好想,如果让求最短长度还好,dp[i][j],表示区间[i,j]化成的最小长度,dp[i][j]=min(dp[i][k]+dp[k+1][j]),即可但现在要求这个串不知怎么做,想着串能不能跟着转移啊,就用str[... 阅读全文

posted @ 2015-10-25 20:37 积跬步、至千里 阅读(187) 评论(0) 推荐(0) 编辑

Free Candies

摘要: 题意:有4堆东西,每堆有n个每个有一个颜色,现在有一个篮子最多能装5个不同的颜色的东西,每次都从堆顶拿,当篮子出现两个相同颜色,可以获得这两个东西,求获得的最大数量分析:因为就4推,可以把各堆的取得状态表示出来,用记忆化搜索,因为最多可以装5个作为转移的状态。#include #include #i... 阅读全文

posted @ 2015-10-25 20:11 积跬步、至千里 阅读(139) 评论(0) 推荐(0) 编辑

导航