自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rainto的专栏

题解&人生

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

原创 Codeforces 514E 矩阵快速幂

/*有这样一棵树,每个节点都有n(1~100000)个儿子,伸向n个儿子的边从左到右分别为di(1~100)这棵树是无穷延伸的,求距离根节点距离小于等于x(1e9)的节点数目解法:好题,算是寒假第一题,手生,没做出来都解法是矩阵快速幂设dp[i]为距离根节点距离恰好为i的数目,首先很好想到dp[i+j] += dp[i]*cnt[j]那么这样就是一个很明显的矩阵构造矩阵的构造比较

2016-02-05 22:11:45 586

原创 Codeforces 542F 构造

/*被题目清纯的外表骗了,感觉就是个水题 = =!没想出来题目的意思是这样的,给出n(1000)个工作和时间T(100),每个工作有ti时间和qi有趣度要求用它们或者这些工作的子集来形成一棵二叉树满足如下条件1.有且只有叶子节点是一个工作2.工作的需要的时间ti加上该工作节点的深度<=T求最大的有趣程度解法就是:把工作按照需要的不同的时间分组从需要的时间少到需要的时间大扫描(

2016-02-05 20:52:37 601

原创 Codeforces 55D 数位DP

/*找出l到r内有多少个漂亮数漂亮数的定义是该数能被每个数位上的非零数字整除如250是漂亮数 250%2=250%5=0写出的bug1.注意返回dp值得调节是flag要为false2.下一个 状态的计算也错了。不应该写入是拆出的数位,应该是枚举的i*/#include #include #include #include #include #include using

2016-02-05 19:38:50 379

原创 Codeforces 77C 树形DP

/*给出一颗树,每颗树上有ki个虫子一个熊从根节点出发,沿着边走,每去一个地方吃一个虫子(去的地方少于1个虫子就不能去),最后必须要回到根,问最多能吃多少虫子解法:这题自己想出来的,,,但是细节没有想的很清楚,看了过了的代码才明白哪里错了首先画几个样例大概能明白这个问题可以递归解决,对每个节点v可以分两步1.从v出发去v的每个孩子,孩子处理完后,拿到孩子的收益2.所有孩子的收益拿完

2016-02-05 19:37:11 686

原创 ZOJ 3899 State Reversing【NTT+斯特林数+组合】

/**Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u011775691题意Alice有n1个可区分的糖,Bob有n2个不可区分的糖Alice的盒子是不可区分的,当Alice有n个盒子时候,如果n是质数,那么A

2015-11-04 19:50:36 523

原创 HDU 4441 【Splay】 Queue Sequence

/**Rainto96*Beijing University of Posts and Telecommunications School of SoftwareEngineering*http://blog.csdn.net/u011775691http://acm.hust.edu.cn/vjudge/contest/view.action?cid=96673#problem/K题

2015-11-04 14:08:19 350

原创 aoj2450 Do use segment tree 树链剖分

/**Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u01177569120万个点的树,每个点上有个点权两种操作1是将a到b上的所有点权改为c2是查询a到b路径上最大连续区间和1直接懒标记2的话考虑维护

2015-10-21 01:42:42 391

原创 UESTC 1712 E Easy Problem With Numbers 线段树+互质也可以求逆元

/**Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u011775691http://www.bnuoj.com/v3/problem_show.php?pid=24253n个数,m个操作1.查询区间积2.区

2015-10-08 18:47:39 395

原创 2015 上海网赛 HDU5469 树分治

/**Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u011775691题意:10000个节点的一颗树每个节点有个字母给出目标字符串求是否存在点对u,v使得u到v的路径上的字母正好组成这个字符串解法:就

2015-10-02 00:12:40 714

原创 HDU 5483 Nux Walpurgis 图的最小生成树中必要的边的数目 动态MST问题

裸的动态MST两次dp就可以辣#include#include#include#includeusing namespace std;#define scan(x) scanf("%d",&(x))#define scan2(x,y) scanf("%d%d",&(x),&(y))#define scan3(x,y,z) scanf("%d%d%d",&(x),&(y),

2015-09-26 23:02:01 813

原创 Codeforces 557E dp+字典树+字典序第k大

/*给出一个字符串和半回文串的定义,求出字典序第k大的是半回文串的子串先dp求l到r之间是不是半回文串然后插入到字典树中,然后dfs字典树即可*Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u011775691

2015-09-04 01:33:43 948

原创 HDU 5383 Yu-Gi-Oh! 过程中最小费用流

/*题意:有n种怪物,有两个种类0和1,每种怪物都有其等级和杀伤力,一只0怪物和一只1怪物可以组成一只大怪物,其等级是小怪物等级相加,他有自己的杀伤力。有些怪物要有特定的怪物组成。求出可以组成的怪物杀伤力的最大值。思路:先将两种怪物按照二分图一样分成两部分,能够组成大怪物等级的两只怪物连边,其权值是小怪物杀伤力和-大怪物杀伤力,因为我们最终要使得所有的怪物杀伤力最大。最终答案为:总的杀伤

2015-09-04 01:33:10 349

原创 UVALIVE 6958 I 求某TSP路径长度恰为定值+meet in middle + 折半

/*固定n-1为定点,先取一半点阶乘暴力,再取一半点阶乘暴力*Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u011775691*/#include #include #include #include

2015-09-04 01:32:26 466

原创 HDU 5130 求圆和简单多边形公共部分面积

/*模板:求圆和简单多边形(可凸可凹,简单多边形是不自交的多边形)的公共面积原理:有序点集=多边形的点+圆和多边形的交点然后以圆心为一点,每次按顺序(逆时针或者顺时针)取点集中两点,构成三角形,比较三角形和对应弧形的绝对值面积大小,取绝对值较小的那块面积,按照逆时针为正面积,顺时针为负面积求得所有三角形的有向面积和即可,最后取绝对值*/struct GetCirclePolyIn

2015-09-04 01:31:59 1027

原创 Codeforces 466E LCA+搞

/**Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u011775691题意:给出10万个点,10万个操作操作有三种1.x->y 指定x为y的上级2.给x一份文件,x签名后给上级,上级签名后给上级的上级,直

2015-09-03 20:04:41 573

原创 Codeforces 463 E 乱搞

/**Rainto96*Beijing University of Posts and Telecommunications School of Software Engineering*http://blog.csdn.net/u011775691给一颗树,每个点有点权有两种操作1.问从根1到某个点i经过的点中(v1,v2,v3,,,vk , vk=i)gcd(f[vp],f[i]

2015-09-03 20:03:55 411

原创 CF488C Fight the Monster

题目链接:http://codeforces.com/contest/488/problem/C题意:给出勇士的血量,攻击力,防御力恶魔的血量,攻击力,防御力给出提升血量,攻击力,防御力的单价求打到恶魔的最小花费所有数字不超过100思路:特别简单,枚举攻击力最多到220和防御力最多到110,然后看血,缺多少血买多少即可,更新最小话费坑:

2014-11-23 15:16:55 632

原创 ZOJ 3543 Number String 【2011大连区域赛】【dp】

题意给出一串由D,I,?构成的长为n的字符串,这个字符串表示满足某种规则的1到n+1的排列集合,D表示该位置数字比前面一个小,I表示该位置的数字比前面一个大,?表示不确定可D可I比如满足DI的数字排列有3,1,2和2,1,31设计的dp如下dp[i][j] 代表满足上述字符串前i-1项的长为i尾巴为j的1到i的排列数目当第i-1项为D时dp[

2014-10-22 19:31:32 1159 2

原创 HDU4421 Bit Magic 【2-sat】

描述:给出这样的一个矩阵,求原来的a数组2-sat题,对每个位跑一边,跑31个位即可具体建边注意N=1的情况特判,还有检查对称元素是否相同#include #include #include #include #include #include #define pb push_back#include using namespac

2014-10-08 10:45:06 969

原创 HDU4422 The Little Girl who Picks Mushrooms【水题】

给出n个数,n小于等于5,不足5个数的剩下的自定,然后,先选3个数的和是1024的整数倍,如果没有则输出0,剩下两个数的和每次减1024直到小于等于1024为止解法可以看这里,http://www.cnblogs.com/kuangbin/archive/2012/10/16/2725626.html 水题,只想说,剩下两个数的和每次减1024直到小于等于1024为止,要么你写whil

2014-10-06 22:04:21 712

原创 CF95C volleyball [最短路+想法]

给出一个图,双向边,边上有权值代表路的距离,然后每个点上有两个值,t,c,t代表能从这个点最远沿边走t,且不能在半路下来,花费是c现在告诉你起点终点,问最少的花费点个数1000,边个数1000,边权1e9建新图对每个点求一次最短路,然后,连边,u:这个点,v:从这个点到其他点距离小于t的点,w:这个点的花费c,然后把新图以起始点为原点跑一边最短路,输出dis[终点]  

2014-10-06 21:15:05 606

原创 HDU 4810 Wall Painting【二进制+异或+暴力枚举】

给出n个数求从这n个数取k个数异或,所有情况得到的值(Cnk个值(可能有些相同))全加起来的值是多少k从1到n输出这n个数  这题一开始想毫无思绪也没有说这n个数的大概范围,想用背包来着本来 结果发现它是这么解的就样例来说,把四个数1,2,10,1拆开,当前是取k个数0001001010100001对第四位来说,如果某些方案是取k个数异或

2014-09-25 11:49:17 1681

原创 HDU4803 Poor Warehouse Keeper【贪心】

题意给出两个只能显示整数的牌子点击第一个牌子,

2014-09-25 11:21:02 1459

原创 HDU 4793 2013 Changsha Regional Collision[简单的平面几何]

给出一个圆形奖牌的半径和一个圆形区域的半径,还有一枚硬币的半径,然后桌面是光滑的,给出圆硬币的速度(大小和方向,vx,vy)和坐标(圆区域和圆奖牌同心且心作为源点),问硬币在圆区域滑动的时间是多少(任何一部分在圆区域都算),硬币碰到圆奖牌会反弹,能量不变(速度不变)第一次做平面几何题看了题解,题解的板子真好用大概来说有三种情况,如下图第一种是进入圆区而不碰撞,查看h和Rm+r的关系

2014-09-18 14:54:51 812

原创 HDU 4801 2013 Changsha Regional Pocket Cube[大模拟]

题意:2×2的魔方,给出初始状态,问7步之内最多能有几个面相同本来是道大水题但是,,,心酸啊一开始直接得到状态的hash,用bool vis来bfs,但是wa了,我以为不行,然后又用结构体哈希vis来bfs,然后还是WA,结果发现,,,魔方有6种转法,我只想到了4种。。。然后改成6种,各种T各种MLE,再改回bool vis才过了算了下,6^7=24W,然后我b

2014-09-17 17:30:06 848 1

原创 CF282 E Sausage Maximization[trie树]

给n个数求异或前缀(从前连续取一些数全作异或)和异或后缀(从后连续取一些数全作异或)异或的最大值好坑啊,指针好坑啊第一道trie树简单说下解法(其实壳还是不深):先异或所有数作为初始后缀然后从前往后的数逐个从后缀出来,进入前缀,在这个过程中,都把当前前缀变成二进制压入trie,然后当前后缀变成二进制从高位到低位尽量取和它数位不同的值,沿着trie往下走,得到一个最好

2014-09-08 17:49:34 680

原创 CF 463D Gargari and Permutations [dp]

给出一个长为n的数列的k个排列(1 ≤ n ≤ 1000; 2 ≤ k ≤ 5),求这个k个数列的最长公共子序列的长度dp[i]=max{dp[j]+1,where j#include #include #include #include #include #include #include using namespace std;#define pb push_back

2014-09-01 13:09:13 874

原创 CF359D Pair of Numbers [RMQ+ST算法]

题意:给一串数,找出最长的区间使得这个区间里面有个数能被其他所有数整除(包括它自己),求满足这个条件的最长区间的个数及长度,以及这些区间的左端的位置分析:这个区间的要求其实就是GCD(ALL)=MIN(ALL),能被其他数整除,这个数肯定是最小的,然后又能被其他数整除(包括自己)这个数就是GCD了可以二分枚举区间长度,然后验证答案的可靠性对当前长度的所有区间,套用RMQ

2014-09-01 12:53:17 963

原创 CF 383C Propagating tree [想法+树状数组]

题意:给一棵树给出两种操作:1.在某个结点上加上一个值,在这个结点所有的儿子结点上减去这个值,在这个结点的所有孙子结点上加上这个值,在所有曾孙子结点上减去这个值,直到底。2.查询某个结点上的值分析:把这个问题转化为树状数组的区间求和样例经过dfs处理后如下,每个结点处理出了两个值l,r,层数1,2,3...,层数为奇数的属性为0,层数为偶数的属性为1可以看到

2014-09-01 11:32:52 647

原创 CF 144D Missile Silos [最短路+想法]

题意:给出一张图和图上的一个顶点,求距离这个点距离为s(最短距离)的顶点或边上的点总共有几个(边上的点要保证也是最短距离)分析:先用DIJ求出最短路然后对所有顶点,距离为s的点都算上枚举每条边边上的两个顶点如果距离不够,则看在边上能不能找到一个点,顶点上的距离加上这个顶点到点的距离能为s(注意保证这个距离是最小距离(即这个点通过另外一端的顶点距离源点的距离小

2014-08-31 14:38:51 604

原创 CF380C Sereja and Brackets [想法+线段树]

题意:给出一串括号给出一些询问,问某个区间[l,r]内的能合法匹配的括号数有多少个分析:我们可以实现处理两个数组sum[i] 1....i中已经能匹配的右括号的数目left[i] 1....i中还不能匹配的左括号数目这两个数组可以很简单的扫描一遍动态维护得出来我们可以先求前缀和,即1...m中有多少能匹配的右括号sum[m]则,我们可以得到s

2014-08-31 14:34:16 782

原创 CF377B Preparing for the Contest [贪心+优先队列]

题意:给出n个人的能力值,m个问题的难度值,请n个人需要的花费,花钱的上限s每个人能解决难度值小于等于他能力值的问题求出能否在花钱不超过s的情况下把所有问题解决如果可以输出YES并输出每个问题由谁来解决的最快的方案如果不行输出NO分析:可以二分枚举天数,因为如果一个任务能x天完成,肯定也能在大于x的天数内完成如果现在我们是要x天内完成可以先把

2014-08-31 13:52:18 1141

原创 CF 319B Psychos in a Line 【单调队列】

给出一排神经病的编号1-n的某个排列给出规则一步能同时消除该数右边连续的小于该数的数问几步能消到最后状态 在纸上试了试,觉得这个问题很有点像lis,但是苦于方法突然看了一眼tags单调队列oh it is 可以把这些数字一个一个的加入单调队列中同时记录每个数字被吃掉的场次保持整个队列递减策略如下如果一个数进去没有弹出数,则这个数肯定是第一场就

2014-08-28 18:49:55 685

原创 CF156B Suspects 【逻辑+】

给出n个犯人的n条供述,并且知道有m条是真的正数代表当前犯人供述该号犯人犯罪负数代表当前犯人供述该号犯人没有犯罪例如+7代表当前犯人供述7号犯罪-3代表当前犯人供述3号没有犯罪 来想想某人可能犯罪的条件假设一个人犯罪那么如果说其他人犯罪的供述(暂时视作假话)条数+说他没有犯罪的供述(暂时视作假话)条数=n-m(假话条数)这个式子成立的话那么这个人就有

2014-08-28 18:24:01 792

原创 CF 111B Petya and Divisors【想法题+二分(可省略)】

给出n对询问每对询问类似x,y对该个询问,是这个x的约数却不是上面y个x的约数的约数个数是多少 很容易想出我们用一个二维数组来维护G[i]里面里面存的是含有约数i的位置有那些(由于从上到下来扫描并更新G,这个G[i]肯定是单增的) 那么对当前的一个询问x,y, 当前位置为i我们一个一个的得到x的约数,对每个约数m,看G[m]里面记录的位置有没有[i-y-

2014-08-28 17:53:28 597

原创 CF 371D Vessels 【并查集】

给出一个竖着的n个容器每个容器的容积,从上到下分别是1,2,3,4,,n,从某点开始浇水,保证该层满了后水能流向下一层,一层一层,直到不再溢出或者最底下都装满了留到地上去了为之。给出n个操作/询问在x点浇p的水查询x点的水量 这题平妈想的,用并查集来做。很容易想到暴力的方法,就是,如果是从m点开始浇水,则,我一个一个来处理m以后的点,如果这点点满了就下一个,一直到找到没满的

2014-08-28 17:49:48 784

原创 Codeforces 148E Porcelain [预处理+dp背包]

给出n行数,每行的数目不定(不超过100个),只能从

2014-08-26 15:42:04 458

原创 Codeforce 401D Roman and Numbers[数位DP+状态压缩]

给出数n和m,求n的所有排列中,模m得0的有多少个 n(1 ≤ n 18) andm (1 ≤ m ≤ 100).暴力法我们直接枚举n的所有排列,显然18!超时。考虑怎么dp假设给了我们数n=23765显然有(237%m*10+6)%m=2376%m(367%m*10+2)%m=3672我们很自然的想到了这样的状态转移dp[i][k]i代表取

2014-08-26 13:52:05 883

原创 Codeforces 223A Bracket Sequence [栈]

给一串由(,), [ ,]构成的字符串,求包含[最多的合法子串很容易,先把整个字符串丢入栈里处理栈的每一个元素存两个东西,字符,在字符串中的位置处理方式为如果是()匹配则直接丢弃,如果是[]匹配则在这个点vis[i]++,然后求vis的前缀和如果栈空,则说明整个串是合法的,直接输出串否则,扫描栈中剩下的元素的位置,这几个位置把整个原串切割成几段,这几段肯定是合法的,求这

2014-08-26 13:25:50 687

原创 CF 132C Logo Turtle[dp+记忆化搜索]

给出一串由FT构成的串,F代表前进,T代表转向,初始方向是1,转向后F由1变为-1(或者-1变成1)例如FTFFFTFFFFF值为3给出n,必须做n次操作(让F变为T或者让T变成F),求最远能离原来的地方前进多远(绝对值)可以搜索来解决这个问题对每次行程,我们可以选择继续按当前方向走或者改变方向那么,粗略估算一下,字符串最长为100,那么就是2^100,

2014-08-25 17:35:32 708

空空如也

空空如也

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

TA关注的人

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