![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM补题集
@萌橙开心
这个作者很懒,什么都没留下…
展开
-
逆波兰表达式求值 解题报告
逆波兰表示法是一种将运算符(operator)写在操作数(operand)后面的描述程序(算式)的方法。举个例子,我们平常用中缀表示法描述的算式(1 + 2)*(5 + 4),改为逆波兰表示法之后则是1 2 + 5 4 + *。相较于中缀表示法,逆波兰表示法的优势在于不需要括号。请输出以逆波兰表示法输入的算式的计算结果。输入格式:在一行中输入1个算式。相邻的符号(操作数或运算符)用1个空...原创 2019-03-26 19:24:38 · 946 阅读 · 0 评论 -
Shuffle UVA - 12174 解题报告
疯狂刷题!题目大意:给你一个长度为N的播放记录,让你求一求随机排序所发生的时间有多少中可能性。思路:连续的S个数,首先会让我们想到滑动窗口,但是只是简单的使用滑动窗口并不能解决此题,一开始的思路是,使用滑动窗口,然后记录窗口中每个数出现的次数,如果每个数书都唯一,那么便是符合的,即前面的可以随意划分,但是这种利用贪心思想的滑动窗口是并不成立的,它会导致很多情况的漏判,比如第一个窗口虽然符合...原创 2019-03-07 09:32:53 · 230 阅读 · 0 评论 -
Children's Game UVA - 10905 解题报告
题目大意:给你N个数,让你把他们连接起来,使他们连起来的数最大。思路:这个题目是贪心算法,重点比较的是第一位的大小,然后交了一发WA了,然后看了看题解,发现自己的排序标准错了,不能看s>s1,而是要看s+s1>s1+s,改完之后AC。注意这里使用string来储存数字,目的就是方便比较。一个很实用的小技巧。下面给出一组样例,如果不按上述的排序方法,此样例便无法通过。2...原创 2019-03-14 10:44:47 · 188 阅读 · 0 评论 -
Erratic Expansion UVA - 12627 解题报告
这道题目大体的意思就是让你求K个小时后X----Y行红球的个数。思路:我们仔细观察这幅图,发现这幅图是有规律可循的,K+1时刻的左上左下右上又是第K时刻的原图,而右下全部是蓝色的气球。所以我们不妨根据这幅图的特点来找一下规律。过程。。。没啥好过程的就是枚举数据,从中找出规律。这道题的主要思想还是想让我们分治吧,虽然规律也不好找。下面给出AC代码:#include<io...原创 2019-03-05 19:23:25 · 163 阅读 · 0 评论 -
HDU - 5534 H - Partial Tree解题报告
In mathematics, and more specifically in graph theory, a tree is an undirected graph in which any two nodes are connected by exactly one path. In other words, any connected graph without simple cycles...原创 2019-02-26 13:12:01 · 158 阅读 · 0 评论 -
Copying Books UVA - 714 解题报告
今天开始正式开始疯狂的刷题生活!题意: 多组案例,大意是说先给定两个数m和k,m表示数据个数,k表示将m个数据分为k份,要求划分后的子序列的和的最大值最小,每次划分尽量往右划分。1<=k<=m<=500,子序列和的最大值不超过10000000。 输入:首行输入案例数,次行输入m和k(使用空格符分隔),第三行输入m个数据。 输出:...原创 2019-03-05 15:38:50 · 195 阅读 · 0 评论 -
CodeForces - 892B 解题报告
Hands that shed innocent blood!There arenguilty people in a line, thei-th of them holds a claw with lengthLi. The bell rings and every person kills some of people in front of him. All people kil...原创 2019-03-01 20:23:09 · 276 阅读 · 1 评论 -
Book Borders (Gym - 101480B)解题报告
题目全文:Problem B: Book Borders Time limit: 2 s Memory limit: 512 MiB A book is being typeset using a fixed width font and a simple greedy algorithm to fill each line. The book contents is just a seque...原创 2019-02-26 10:26:35 · 334 阅读 · 0 评论 -
Stages CodeForces - 1011A 解题报告
Natasha is going to fly to Mars. She needs to build a rocket, which consists of several stages in some order. Each of the stages is defined by a lowercase Latin letter. This way, the rocket can be des...原创 2019-03-01 19:56:19 · 226 阅读 · 0 评论 -
Largest Rectangle in a Histogram HDU - 1506 解题报告
一道从来没见过的单调栈题目,先来一篇大佬有关于单调栈的详解。单调栈详解题目大意:让你选出图表中面积最大的矩形。思路:在刚看完单调栈的详解后,自己也试了试做这道题,但是仍然没有思路,包括看完题解之后脑子一片混沌,不明白这是怎么和单调栈扯上关系的,反复思考了许多遍代码之后才有了一点心得,在这里与大家分享(具体题目的思路在上面的详解中有)。首先这道题我们需要先规定一个标准,枚举每个点,只...原创 2019-03-07 12:23:31 · 195 阅读 · 0 评论 -
Erasing and Winning UVA - 11491 解题报告
题目大意:给你一个N位数字,让你删除其中的D位,使得剩下的数字最大。思路:这道题是一道贪心题,一开始自己的贪心思想是这样的,使用一个结构体保存原本的位置和数字,读完后排次序消除前D个最小值,再根据结构体中储存的位置排序,然后输出,但是WA,最后发现自己的贪心思想是有错误的,我们如果想保证剩下的数是最大的,那么我们必须保证第一位是最大的,而后是第二位,那么最理想的数字,应该是从左到右数字大小依次...原创 2019-03-10 16:13:22 · 209 阅读 · 0 评论 -
Bits Equalizer UVA - 12545 解题报告
题目大意:给你两个串,S,T,S串包括0,1,?,但T中只包含1,0,你的任务是用最小的步骤把S变为T。你可以对S进行三种操作:1、将?变为1 or0.2、将0变为1.3、0,1互相交换位置。思路:一开始感觉这是一道贪心题,目的就是让你制定一个规则,然后在这个规则下,能使进行的步骤最少。一开始就在按照自己的思想进行模拟,但最后发现这个方法很不好实现,去网上搜了搜其他大佬的...原创 2019-03-10 16:43:37 · 219 阅读 · 0 评论 -
部落 解题报告
在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数N(≤104),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:KP[1]P[2]⋯P[K]其中K是小圈子...原创 2019-03-26 10:46:39 · 285 阅读 · 0 评论 -
拯救007(升级版) 解题报告
题目:在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫。)设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0,...原创 2019-03-21 10:12:00 · 1935 阅读 · 0 评论 -
Bin Packing UVA - 1149 解题报告
题目大意:一个背包最多装两个东西,问装完需要几个背包;思路:一道基本的贪心问题,先装最大的看看能不能捎带这装个小的,另外这个题的需要格式控制一下。下面给出AC代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+100;const int IN...原创 2019-03-08 11:03:39 · 252 阅读 · 0 评论 -
Crane UVA - 1611 解题报告
题目大意:输入一个1—n的排列,用不超9的6次方的操作把他变成升序,每次操作都可以选一个长度为偶数的连续区间,交换前一半后一半。紫书提示:2n次操作就够了。思路:这道题要注意审题,因为人家没说必须要求最简,在规定次数内弄完就行。。。本来就是对的,因为感觉不是最简,花里胡哨改了一个小时,看完题解崩溃了QAQ。先判断自己所选的区间是不是在所选范围内,如果可以,则直接进行交换,如果不可以,则利用...原创 2019-03-11 23:09:16 · 236 阅读 · 0 评论 -
Party Games UVA - 1610 解题报告
题目大意:自己写一个串S,使得题中给出串一半小于等于S,另一半大于S,如果有多解,输出字典序,最小的。思路:一道十分细节的题目,里面的细节点太多,导致反复的改,反复的WA。刚开始的思路,就是排序,比较中间两个串,但是比较里面的细节非常多,特比是在处理末尾字符的时候,自己最后是卡死在末尾全是Z串上,虽然卡的时间比较长,但感觉收获比较多,不卡题怎么进步呢。下面给出AC代码:#incl...原创 2019-03-11 16:43:48 · 231 阅读 · 0 评论 -
石子合并问题--直线版 HRBUST - 1818 解题报告
开头一句话,寒假一时爽,开学火葬场。石子合并问题,经典的区间DP问题。可能有人不理解什么事区间DP,这里引进一篇非常不错的博客区间DP详解。看完之后你会惊讶的发现啊,原来卡死自己的题竟然只是一道模板题。自己寒假做的跪着也要疯狂学完。下面给出AC代码:#include <bits/stdc++.h>using namespace std;typedef l...原创 2019-03-07 19:41:51 · 427 阅读 · 0 评论 -
Fire! UVA - 11624 解题报告
逐渐唤醒被寒假尘封的搜索知识!题目大意:JAKE跟一团火呆在一个迷宫里,注意火每分钟会向四个方向同时蔓延,问JAKE能否及时逃出去,我们假设只要JAKE走到边缘就算已经走出。思路:稍微带一点技巧性的BFS,首先我们BFS跑一遍火的时间,然后再跑一边JAKE的时间两者进行比对,得出最后结果。下面给出AC代码:#include <bits/stdc++.h>using...原创 2019-03-07 17:26:40 · 201 阅读 · 0 评论 -
Find a way HDU - 2612 解题报告
一道BFS广度搜索的题,唉太长时间没写过代码了,这个都忘了,这个故事告诉我们寒假一时爽,事后火葬场。题目大意:求两个人到达KFC的最小时间。输入输出:4 4Y.#@.....#..@..M4 4Y.#@.....#..@#.M5 5Y..@..#....#...@..M.#...#668866思路:由于m,n都非常的小,并且KFC并不止一家...原创 2019-03-07 15:27:24 · 248 阅读 · 0 评论 -
Pond Cascade Gym - 101670B 解题报告
题目:The cascade of water slides has been installed in the park recently and it has to be tested. The cascade consists of some number of reservoirs, or “ponds” for short, which are linked into a singl...原创 2019-02-28 16:25:51 · 215 阅读 · 0 评论 -
Prefix Free Code 解题报告
Considernninitial strings of lower case letters, where no initial string is a prefix of any other initial string. Now, consider choosingkkof the strings (no string more than once), and concatenati...原创 2019-02-28 08:46:33 · 330 阅读 · 0 评论 -
Digit Primes UVA - 10533 解题报告
题目链接 题目大意:给你N为数据个数,区间t—t1,让你求这个区间内数字素数的个数(本身为素数,且各位数字之和仍为素数)。额。。。首先说自己为什么WA了,使用Eratosthenes筛法(下面给出的代码中会有模板)时,i从1开始的。。。。(超低端错误,1既不是质数也不是合数),再就是前缀和数组,当时每出一组数据就数一次(严重怀疑当初自己傻了)。下面给出AC代码:#include...原创 2018-08-21 19:52:42 · 273 阅读 · 0 评论 -
Different Sums URAL - 2065 解题报告
题目链接 题目大意:给你两个数字n,k,让你写一串数列,要求是这串数列的不同数字的数目不能少于k且长度为n,并且要求它各个区间和的种类最小。很典型的思维题。。。额。。。首先说一下这道题自己为什么WA了,为了使各个区间和的种数最小,我想到写成正负交替,这样一来,选完区间后,和大多为零,直接重复到n,但是满足k-1后,其余项全部输出为0,会使其更简单,注意【i,i】这种区间,一开始考虑不周,疯狂...原创 2018-08-21 18:57:43 · 156 阅读 · 0 评论 -
Secret of Chocolate Poles Aizu - 1378 解题报告
一道。。。很水很水的DP题,虽然我没看出来。。。\羞愧题目链接说一下题目大意,就是给你个格子,必须黑白相间,格子的顶和底都必须是黑的,黑的有粗的有细的,可不必填满,问你一共有多少种方法。这道题。。。唉。。。可以用DP求解,因为可不必填满,所以DP数组中的每一个值,都代表了方法的种数,第一位代表填写的高度,第二维填写的是填入的颜色,只需要每次填写,选白色,选细的黑色,和选白的黑色,就行(...原创 2018-08-27 20:39:30 · 272 阅读 · 0 评论 -
CodeForces - 948C 解题报告
题目链接这道题看出来了是一道STL题,本来一开始用队列去做,结果TLE,在这里先给出TLE代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e5 + 10;int n,V[maxn],T[maxn];int main(){ while...原创 2018-08-23 10:20:58 · 181 阅读 · 0 评论 -
Matrix Chain Multiplication UVA - 442 解题报告
这道题。。。也很水。。。但是没做出来(吐血),简单分析一下原因,这道题跟刚入门stack时的一道题目非常像,然后脑子中就不停的出现,然后就在栈中储存了(,导致整个崩溃,还有就是,忽略了输入符合运算要求,想了很多不该想的,唉,这种题应该是可以拿到的,却总是丢了题目链接:https://vjudge.net/problem/UVA-442下面给出AC代码:(最后一些有趣的事情)#incl...原创 2018-08-22 21:02:05 · 278 阅读 · 0 评论 -
How Many Tables HDU - 1213 解题报告
一道简单的并查集的题题目,自己当初没有AC实在是不应该,有些细节处理的不到位,统计根的个数的时候并未走到最后,而是只统计了,他表面所储存的值。题目链接下面给出AC代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1000 + 10;int ...原创 2018-08-22 19:38:11 · 194 阅读 · 0 评论 -
Reading comprehension HDU - 4990 解题报告
这道题。。。一开始用整数的矩阵快速幂做然后成功各种BUG加WA,不得以换做了结构体矩阵快速幂,然后还是WA,原来是,三行一列,被我写成了一行三列,然后提交还是WA,原来是数据范围太大,然后改为ll,提交成功AC(一把辛酸泪)。下面给出AC代码,注意构造的矩阵可能会有所不同,只要结果正确即可#include <bits/stdc++.h>using namespace s...原创 2018-08-22 19:05:29 · 255 阅读 · 0 评论 -
Maximum Value CodeForces - 485D 解题报告
题目链接:https://vjudge.net/problem/CodeForces-485D这道题。。。比赛的时候我是真的不会,一道有思维含量的lower_bound的贪心题,是一道很好的开拓思维的题。首先利用贪心的思想,怎样才能是他的mod值最大,当Ai是Aj的倍数-1时,此时获得的值是最大的,所以我们就按照这个规则进行搜素,为了方便,我们使用lower——bound函数进行,Aj的整...原创 2018-08-26 11:04:01 · 187 阅读 · 0 评论 -
UVA - 12101 解题报告
题目链接 题目大意,给你两个素数,一次只能改变一位,问多少次能改变完成,不能则输出impossible这道题,一开始拿到手之后,并不知道怎么做,联想一下最短路径想到BFS,但是感觉BFS没有办法解决,便没有尝试,比赛完之后,看了别人的代码竟然真的是BFS,然后尝试着自己写了写,结果连样例都没过去,原因是没有及时进行位数的还原(代码中会有体现),一开始写的时候还忘了标记使用(傻得不谈了),最后...原创 2018-08-21 21:00:58 · 127 阅读 · 0 评论 -
Make a Permutation! CodeForces - 864D 解题报告
这道题的思路并不难,贪心+模拟,每次把没出现的往前排就可以,但是当时比赛时这道题反复WA了很多次,就是没过,比赛完看别人的代码,才发现自己忽略了一个限制条件,那就是重复数有多个,且含有最大的值得情况(QAQ),每次都离AC差了那么点,唉题目链接下面给出WA的代码,以示警戒:#include <bits/stdc++.h>using namespace std;type...原创 2018-08-25 19:21:55 · 159 阅读 · 0 评论 -
A - Permutations CodeForces - 124B 解题报告
说出来这道题我为什么WA,你可能都不信,我把按位数乘的=写成了+=,我真的是佛了。。。假装这道题是自己不会全排列WA的,这里注意全排列的一个用法,数据很小也不用怕超时,还是比较好想。题目:https://vjudge.net/problem/CodeForces-124BAC代码:#include <bits/stdc++.h>using namespace std...原创 2018-08-25 20:11:14 · 178 阅读 · 0 评论 -
树状数组详解
先贴一下树状数组的模板代码: 1 int lowbit(int i) 2 { 3 return i & -i;//或者是return i-(i&(i-1));表示求数组下标二进制的非0最低位所表示的值 4 } 5 void update(int i,int val)//单点更新 6 { 7 while(i<=n){ 8 ...转载 2019-02-28 08:35:54 · 166 阅读 · 0 评论 -
Gym - 101234G Dreamoon and NightMarket结题报告(集合元素的组合中第K大的值)
题意:给你n种物品的价值,让你求这些物品组合的第k大的集合的值(集合内放的是物品种类,不得重复,但价值可以重复)、思路:这是一类经典的问题求集合元素所有组合中第K大的值。具体的步骤如下:(1)首先将储存元素的数组排序;(2)假设当前组合中最后一个元素的下标为 i , 考虑为以i为最后一个元素的全排列都举过了。那么从当前组合(sum, i)到下一个最小组合有两种可能:减去本身再加上后...原创 2019-01-18 17:42:23 · 455 阅读 · 0 评论 -
Gym - 101234C Crazy Dreamoon 解题报告(有关精度)
题目大意:大鹏经常在ACM比赛时做不出题,于是就开始画一些线段,无聊的他想知道他画的线段一共穿过了多少正方形格子,但由于他比较垃圾,所以想请你帮忙计算(多条直线经过一个格子算一个)。思路:当初拿过来这道题很蒙,以为是靠什么公式,但是推了半天也没推出来,补题的时候才知道是每一个单位横坐标一个个讨论,类似于分治法思想,但是这道题仍然不能AC,看了看大佬的代码,发现自己缺少精度的控制,垃圾的我赶紧找...原创 2019-01-18 14:42:13 · 533 阅读 · 0 评论 -
Pocket Cube UVALive - 7735结题报告
题目大意:给你一个二维魔方,只让你将一个面转动90度或者不转动,问你是否能使每个面的数字都相同。题目链接这是一道模拟题,模拟的方法有很多,最常用的有两种:1、直接暴力枚举,每个面的转动情况,判断后输出结果;2、每转动一次,便将整个魔方翻转,重新定义上下,左右,前后面。(翻转魔方和转动魔方是不一样的,前者是将魔方整个翻身,例如,翻身后,右面成了上面,左面成了下面…)本博客采用的第一种方法,...原创 2018-10-04 18:40:51 · 204 阅读 · 0 评论 -
Rich Game HDU - 6245 解题报告
这是一道,额。。。很水的贪心题,分情况讨论一下即可,然后这道题,再稍微注意读题就好,我先补一下小学语文再来打ACM。题目链接:https://vjudge.net/problem/HDU-6245;题意就是两个人玩游戏,我赢一分我给你X,我输一分给你Y,问你最多能赢几场,一定注意X,Y的含义!!!(唉 ,惨的一批) 这里有一个稍微特殊一点的规则就是平局的时候就是必须领先两分,所以局数可以...原创 2018-09-06 10:58:35 · 230 阅读 · 0 评论 -
除法分块法与Gym - 101615C 结题报告
这道题是除法分块法的模板题,,,这也是我第一次接触这个知识,在这里一起学习一下。首先给出除发分块的意义:通过对某些连续且相同的数进行区间的划分,使得我们能够一下子计算出这一整个区间的数,提高我们的运算效率;除法分块的大略模板:for(int l=1,r;l<=n;l=r+1){ r=n/(n/l);}接下来我们分析这道题,下取整n/i,求出的是 i 这个数字在...原创 2018-09-05 09:50:42 · 158 阅读 · 0 评论 -
D - array array array HDU - 6197解题报告
一道DP水题,求最长上升子序列(LIS)问题,二分是省时的关键!!!唯一的不同就只是倒过来看看而已,唉,再次输给DP,等我把你学会了再说的。最长子序列详解+模板题目链接:https://vjudge.net/problem/HDU-6197#include <bits/stdc++.h>using namespace std;const int maxn=1e5+10;...原创 2018-08-30 09:53:59 · 177 阅读 · 0 评论