自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 最小邮票数

     有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。       有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M<100。然后是一个数N,N〈20,表示有N张邮票。接下来是N个正整数,分别表示这N张邮票的面值,且以升序排列。对于每组数据,能够凑成总值M的最少邮票张数...

2019-02-02 14:30:27 361

原创 玛雅人的密码

玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码。给一个长度为N的字符串,(2=<N<=13)该字符串中只含有0,1,2三种数字,问这个字符串要移位几次才能解开密码,每次只能移动相邻的两个数字。例如02120经过一次移位,可以得到20120,01220,02210,02102,其中20120符合要求,因此输出为1.如果无论移位多少次都解不开密码,输出-1分析:想...

2019-02-01 18:04:59 874

原创 ICPC 2016 北京 E What a Ridiculous Election

题意:给了一个每一位由1-9数字组成的字符串,有三种操作,第一种操作可以无限次,交换任意相邻两位。第二种操作最多操作三次,可以把任何一位加一,超过9对10取模。第三种操作最多操作两次,可以把任意一位乘以2,超过9对10取模。问最少进行多少次操作能够将这个字符串转换成12345分析:首先BFS预处理,因为操作2和操作3是有限次,所以设ans[num][op2][op3]为当前数为num操作2有o...

2018-11-09 23:04:58 1022

原创 ICPC 2016 北京 K - JiLi Number

题意:在不超过N的正整数中,如果前x个数每个数中1的数量和为x,则x为JiLi Number,求不超过N的最大的JiLi Number分析:给的样例中100000000000,比它大的数增加数字1的个数的速率比递增1的速率大,不会再存在JiLi Number了。而它对应的数是1111111110,所以打表1e10即可,发现不超过82的数可以在有限的时间里打出来。代码:#include...

2018-11-09 20:21:52 259

原创 Codeforces 459C.Pashmak and Buses

题目链接:http://codeforces.com/contest/459/problem/C题意:有n个学生,k辆车,n个学生分到k辆车中d次,两个同学d次不能一直在同一辆车里。分析:很难想,k进制+分治。每次将n平均分成k份,分d次。第一次分成k组,第二次分成k^2组,第三次分成k^3组,最后只要保证k^d > n即可。因为k^d就是长度为d的k进制数的所有情况,对应每一行就有...

2018-10-25 22:58:45 175

原创 POJ 3069 Saruman's Army

题意:给了一列点,每个点周围不超过R举例内一定有一个被标记的点,求最少被标记的点的个数。分析:贪心,从起始位置开始,每次找右边不超过R的最远的位置,然后延伸R的距离,每个点负责的范围就是周围R的距离代码:#include<cstdio>#include<iostream>#include<algorithm>using namespace s...

2018-10-24 09:06:14 116

原创 POJ 3617 Best Cow Line

题意:给了一个字符串,每次从开头或者结尾删去一个字符,放到另外一个空串的末尾,问最后形成的字典序最小的新串是什么?分析:贪心,每次取开头或者结尾字符较小的那一个,如果相同就一直比较选取最先遇到较小字符的那一端。代码:#include<cstdio>#include<iostream>using namespace std;const int maxn =...

2018-10-23 19:38:59 140

原创 POJ 1015 Jury Compromise

题目链接:http://poj.org/problem?id=1015题意:先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团。选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小。如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选...

2018-09-23 21:34:10 181

原创 UVA 111 History Grading

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=47题意和分析:给了1-n的一个排列作为这n个数的排序,比如4231代表1是第4个数,2是第二个数,3是第三个数,4是第一个数.所以要先把这些数按照出现的位置整理一下,然后...

2018-09-21 16:13:08 151

原创 hdu 1159 Common Subsequence

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159题意:给了两个字符串,求最大公共子序列的长度分析:裸的LCS题目,dp[i][j]表示第一个字符串前i个字符和第二个字符串前j个字符最长公共子序列的长度。如果第i个字符和第j个字符相同,它们的最长公共子序列的长度为前i-1个字符和前j-1个字符的最长公共子序列的长度加一,否则取dp[i-1...

2018-09-19 22:51:37 114

原创 HDU 1503

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1503题意:给了两个字符串,找出它们的最长公共子序列和剩下的两部分拼接后的串分析:利用LCS过程,标志出两个串不同长度时的状态,再回溯,逆向输出结果代码:#include<cstdio>#include<cstring>#include<iostream...

2018-09-19 18:04:16 299

原创 hdu 3092 Least common multiple

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3092题意:给了一个数把它分成若干个数的和的形式,求这若干个数的最小公倍数的最大值是多少分析:gcd(a,b) = 1时lcm最大,所以目标是尽可能将这个数处理成全为素数的形式。先用线性素数筛出3000里的所有质数,然后枚举每个质数,尽可能将这个质数填到n中,此时就类似于完全背包,每一个大于等于...

2018-09-16 23:24:32 174

原创 POJ 1170 Shopping Offers

题目链接:http://poj.org/problem?id=1170题意:有k种物品,每种物品对应若干标号,给出了这k种物品的标号和它们对应的数量和单价。有s种价格优惠方式,每种方式告诉了一些标号和数量以及它们的优惠价格。求恰好购买k种物品及其对应的数量所需的最小费用。分析:离散化+状态压缩dp+背包思想,因为只有5种物品,每种物品的数量也不超过5,所以想到了状态压缩dp,用六进制,有5...

2018-09-15 23:36:18 266

原创 HDU 2159

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159题意:有n种怪物,杀掉每种怪物减少一定的忍耐值,增加一定的经验值,经验值超过n才能晋级,忍耐度不超过m,最多杀死s只怪物,问晋级剩下的忍耐度最大值为多少,不能晋级输出-1分析:二维背包+完全背包,二维费用背包的两种费用分别为杀死的怪物数和忍耐度ti,dp[i][j]表示杀死j只怪物剩下i忍...

2018-09-14 20:46:10 103

原创 hdu2844

题意:给了n件物品,每件物品有对应的价值Ai和数量Ci,求1-m价值之间有多少价值能够通过这些物品的价值凑出来分析:多重背包,因为n很大需要二进制优化 nlogn的复杂度#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using names...

2018-09-14 09:46:13 1229

原创 hdu 1864 最大报销额

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864题意:给了n张发票,每张发票只报销A,B,C三类物品,每件物品的报销额不超过600,每张发票的报销额不超过1000,在只能报销q元的条件下,问最多能报销多少钱,输出两位小数。分析:背包问题。最大容量就是只能报销的钱数q,背包里每一个物品占的体积就是它的价格,获得的价值也是对应的价格。但是q...

2018-09-11 23:09:10 123

原创 HDU 4055 Number String

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055题意:给了一组字符串包含'?','I','D'。'I'代表当前字符比后一个字符大,'D'代表当前字符比后一个字符小,'?'则都可以。询问有多少个这样的排列(包含1-n+1,n为字符串的长度)分析:递推。有两种情况第一种是第i个为I(小于号,升序):dp[i][j] = dp[i-1][...

2018-09-10 22:41:10 175

原创 hdu 4489 The King’s Ups and Downs

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4489题意:给了一个数n,求使得n个不同的数高低间隔排列的所有种数分析:设每次插入一个人的高度是最高的那一个,则为了满足条件,它左边的是从高到低,右边是从低到高则求从高到低的排列数即可.设dp[i][0]表示开头是递增的,dp[i][1]表示结尾是递减的,则对于有i个人的排列,种数为dp...

2018-09-06 16:37:11 125

原创 Codeforces 1015 E2. Stars Drawing (Hard Edition)

题意:给了一个1000x1000的矩形,每个格子不是'.'就是'*',要求找到一种方案,使得每个'*'上下左右四个方向的延伸长度相同,不同的十字可以相互覆盖,如果没有这种方案输出-1分析:由于是1000x1000只能O(n^2),不能暴力搜索,只能dp.先预处理出每个为'*'的格子上下左右都有多少个'*'的延伸,然后这四个方向长度的最小值是十字的长度,压入vector里.然后判断是否有点没有被...

2018-09-05 20:16:36 317

原创 Codeforces 1016C Vasya And The Mushrooms

题目链接:http://codeforces.com/contest/1016/problem/C题意:从左上角格子开始走,每次走一个临近的格子,速率为1,走过的格子取走所有的蘑菇,每个格子上的蘑菇有一个增长速率,问获得的最大的增长速率是多少分析:dp。除了样例中给的两种走法,还有可能是两种走法的结合。预处理出来每次折线走法的每一个格子获得的速率值,绕圈走法左边的列相当于它右边的一列加...

2018-08-30 16:54:00 126

原创 Codeforces 1025D Recovering BST

题目链接:http://codeforces.com/contest/1025/problem/D题意:给了一组数,最大公约数不为1的两个数可以连一条边,问能否构造出一棵二叉搜索树分析:区间dp,r[i][j]表示i-j区间的数能否作为以第i-1个数为根的右子树,l[i][j]表示i-j区间的数能否作为以第i-1个数为根的左子树,注意用相邻的两个数赋初值代码:#include&l...

2018-08-28 20:32:46 261

原创 2018 Multi-University Training Contest 8 HDU6400 Parentheses Matrix

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6400题意:给出n,m 。构造出一个行、列符合括号匹配最大的数的矩阵分析:n,m均为奇数,结果为0个n,m有一个为奇数,结果为那个奇数n,m均为偶数一般情况构造如下:舍弃第一行和最后一行,满足尽可能多的列,舍弃第一列和最后一列,满足尽可能多的行,可以得到这种情况为n+m-4个...

2018-08-16 20:56:16 117

原创 UVA10328

题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1269题意:抛n次骰子,求至少出现 连续k次 正面的有多少次分析:动态规划,dp[i][j]表示第i次为出现j (j = 0为正面,j = 1为反面 ),出现至多连...

2018-08-16 10:32:18 259

原创 ZOJ 3747 Attack on Titans

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5170题意:有n个位置,填充G,P,R三个字母,问填充至少m个连续的G,至多k个连续的R的情况有多少种分析:动态规划,dp[i][j](j = 0->G,j=1->P,j = 2->R)dp[i][j]表示第i个数填充j对应的字母的时候,前...

2018-08-14 17:10:27 179

原创 Codeforces 429B. Working out

题目链接:http://codeforces.com/problemset/problem/429/B题意:给了一个nxm的矩阵,A从(1,1)出发,每次只能走相邻的右边或者下边的格子走到(n,m)停止.B从(n,1)出发,每次只能走相邻的右边或者上边的格子,走到(1,m)停止,两人的路线只能交于一个格子,除相交的格子外,求两人路线上其他格子总和的最大值分析:动态规划.通过递推求出分别以左...

2018-08-09 21:01:06 204

原创 Codeforces 1017 CThe Phone Number

题意:给了数n代表数列的长度,要求构造一个数列使得最长上升自序列的长度和最长下降子序列的长度和最小分析:  构造.我们把这个序列分成若干段,首先满足最长上升子序列的长度最小的话,就尽可能让每一段是递减的,而最长上升子序列的长度和子段有关.  再考虑最长下降子序列,因为已经每一段之间都是递减的关系,那么子段递增才可能尽可能让递减序列的长度小.  至于分成多少段,我们假设分成x段,则最长上升子序列...

2018-08-09 12:45:42 356

原创 Codeforces 975C

题意:有n个战士,分别对应n个力量值,有k次攻击,每次攻击消灭一部分战士,当所有战士被消灭的时候,所有战士复活,问每次攻击剩下多少个战士活着分析:由于n和q是200000,直接暴力超时,所以二分.我算了前缀和,同时攻击值累加,找到比攻击值大的最小战士下标,注意判断此时的前缀和是否和攻击和相等,输出结果对应不同.注意下一次是从之前结束的战士开始(如果被消灭就是下一个)代码:#inclu...

2018-08-07 19:45:50 166

原创 Codeforces 1015D.Walking Between Houses

题目链接:http://codeforces.com/contest/1015/problem/D题意:给了1-n这n个位置,从1开始走,每次必须走到相对于当前位置的另外一个位置,问是否可以用k步走s的距离,每次走的距离为|pos1-pos2|(pos1为原位置,pos2为走到的位置)分析:坑爹的大模拟。先贪心地走尽可能远的位置,我直接选取了左右两边,每次走n-1步,假设有x个这样的走法,...

2018-08-03 00:06:02 310

原创 Codeforces 980C Posterized

题意:给了一组数,要求分成连续的组,每一组的个数不超过k,每一组中的所有数赋值成这个组里最小的数,求生成的字典序最小的数列分析:贪心。我们的目标是尽可能让给的数列里靠前面的数更小,就暴力枚举每一个数的前k个数,如果没被用过就赋值成前k个最小的数,如果前面被用了,就赋值成没被用的最小的那个,但是这样的数有可能没有用完k个,如果后面的数的前k个包含了前面的某一组没到k个的,就衔接上。代码:...

2018-08-02 16:19:31 229

原创 Codeforces 979C Kuro and Walking Route

题意:给了一棵树,求不包含给定的x点和y点之间的最短路径的数量分析:不难得到,总共有n * (n - 1)条路径,减去从x点到y点路径的数量即可。以x点为树根,x点的一个分支包含y点,对于以y点为根的子树上的所有点和这个x点构成的路径都不满足,该分支外其他的分支到y点的最短路径必先经过x点,找出这些点乘以y点及子树的点的和就是所有经过x和y点的路径的数量。代码:#include&lt...

2018-08-01 16:48:42 182

原创 Codeforces 984C. Finite or not?

题意:给了两个数p,q和一个进制数b,问p/q在b进制下是否是有限小数分析:首先对p/q约分,将十进制分数转化为b进制数就是不断乘以b,小数点后依次加上整数部分,如果是有限小数,肯定是最后可以乘到一个数能整除q。但是对于p直接乘以b的话会爆long long 的,这里用到一个trick,就是乘以b最后能整除q的话,其实就看每次乘以b之后会不会产生大于1的b与q的公约数,q的因子就不断被约掉了,...

2018-07-31 17:35:31 162

原创 Codeforces 987C. Three displays

题意:给了数组s1,s2...sn和数组c1,c2...cn,求满足i<j<k且si<sj<sk的ci+cj+ck的最小值分析:dp+暴力 ,我们用dp[i][j]表示用了i个数(i = 1,2,3)的前j个数的满足题意的最小值。用了i个数的前j个数的结果可以由用了i-1个数的前j个数的结果加上满足大小关系的第j个数得到。由此可以得到,状态转移方程为dp[i][j] =...

2018-07-31 14:53:52 339

原创 Codeforces 990D

题意:给了一个图的顶点数,图的强连通分量数a,它的补图的强连通分量数b,求这个图的邻接矩阵,不能输出NO分析:通过画图可以得到,a>1时b只能等于1,因为不同的连通分量中的点可以相互连接,构造一个连通分量。特别注意a和b同时为1的时候,n=2,3是不满足的,需要特判(画图能得到)。其他的直接找多的那个连通分量数,比如a比b大,则构造a-1个独立点,剩下的构成一个完全图,b比a大对称即可。...

2018-07-29 23:39:16 137

原创 Codeforces 989C.A Mist of Florescence

题意:给了A,B,C,D四个字母联通块的数量,要求构造出一个长宽均不超过50的含对应字母联通块个数的矩形分析:由于每个字母数量不超过100,我们将50全部利用上,分成上、下、左、右四个部分,每个部分从第二行开始,每一行间隔着放同一个字母,每一列间隔一行放,这样就保证这个字母被封闭在这个区域里而且间隔开来,同时这个区域的剩余部分是联通的代码:#include<bits/stdc+...

2018-07-29 15:07:23 148

原创 Codeforces 992D. Nastya and a Game

题意:给定一个数组,求子数组的乘积/子数组的和=k的个数分析:由于ai的范围是1e8,n是2e5。和最多为1e13,k最大是1e5,所以子数组乘积最多不超过2e18,乘以1时候乘积不变,跳过所有的1,每次按照乘以2的话最多乘60次,复杂度为O(n * 60)。有代码:#include<bits/stdc++.h>using namespace std;typedef ...

2018-07-28 19:51:41 235

原创 Codeforces CFGym 101192D. Bulls and cows

题意:交互式题目,猜数字的游戏。一方想一个四位数(每一位数字都不同),另一方每次猜一个四位数,该方回复一个两位数,第一位代表有多少个数字完全正确,第二位代表有多少个数字位置不正确但是包含在正确的四位数里,求不少于8次的猜法分析:暴力。先存好所有的四位不同的数,然后随便选一个猜,得到回复后,在存好的数里所有满足这个回复的四位数中随机选择一个作为下一次要猜的数,再次得到回复之后,再在存好的数里面找...

2018-07-24 13:34:05 460

原创 CFGym 101192G. ReHanoi Towers

题意:给了四柱汉诺塔,求将一个柱子上的所有圆盘移到另一个柱子上的最小步数分析:打表找规律。由于n是1e9,肯定不能递归,打表发现结果相邻分别是2,2,4,4,4,8,8,8,8...由于2个2,3个4...x个2^(x-1)。把每一个2的幂看成一组,求第n个数则找到之前有多少完整的组,直接加上,剩下的都相同直接加即可。1+2+...+n = (n+1)*n/2 。复杂度O(根号n)代码:...

2018-07-23 21:21:58 237

原创 CFGym 101192F Stone,grass and file

题意:给了一个含有'.'和'X'的nxm的田野,'.'代表草坪,'X'代表石头,在田野的不同区域里会有燃着的草,不同地方的草燃着的时间不同,燃着的草每一秒可以向它相邻的区域蔓延,直到燃着的时间为0,求燃着的草有多少(石头不能被烧着)分析:DFS。从燃着的位置开始沿四个方向DFS,记录所到位置之后还能燃着的时间,燃着的时间为0或者其他火苗也扩散到该点后,燃着的时间比当前能燃着的时间短则返回。...

2018-07-23 18:27:00 161

原创 CFGym 101192I Abacaba Ltd

题意:给了一个字符串,一组数代表字符间隔a1,a2...ai,要求必须且只能交换一次两个间隔为ai的字符,求形成新的字典序最小的字符串分析:贪心,从前往后找第一个字符比后面大的(意味着可以交换越靠前的被替换字典序就越小),然后这个位置固定,看之后有没有比它还要小的可以替换它。如果没有这样的字符就说明当前字典序已经最小,看一下是否有给定距离的相同的字母(这样可以保证至少字典序不变),没有的话就交...

2018-07-23 16:34:20 207

原创 Codeforces 996C. Tesla

题意:有四行n列的车场,k辆车,一开始这些车都在第二行和第三行,第一行和第四行是停车的地方,标号代表对应的车只能停到该停车位,第一行和第四行0代表不能停车,第二行和第三行0代表有空位,问是否能通过不超过20000次的移动使得所有车进入停车位。(停车位是满足的)分析:借鉴大神的思路,只要一开始第二行和第三行有空位或者能够有车进入停车位,则会满足第二行和第三行有空位,则以空位为头,按照一个方向旋转...

2018-07-22 11:17:05 382

空空如也

空空如也

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

TA关注的人

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