————ACM相关————
文章平均质量分 82
LP_Cong
Python, Qt C++ Developer ACMer https://github.com/Linzecong
展开
-
GDUFS 2019信息学院程序设计新手赛(正式赛)题解
A lpoj is the best这题是送分题,主要考察转义字符#include<iostream>using namespace std;int main(){ int n; cin>>n; while(n--){ cout<<"\"www.lpoj.cn is the best!\""<<endl; ...原创 2019-11-25 21:54:41 · 1020 阅读 · 0 评论 -
POJ - 3486 Computers(DP)
很裸的DP,独立做完这道题对DP应该会更有感觉。首先定义一个数组dp[i]代表前i年所需的最小费用,根据决策无后效性原理,第i年的最小费用对后面的年份没有影响,所以对于每一年,只需遍历它前面的年份找到最小的那个,更新每一年即可,转移方程为dp[i]=min(dp[i],dp[j-1]+m[j][i]+C);意思是找到在第j-1年更新电脑所需的最小花费。(1<=j<=i)原创 2017-08-16 13:28:49 · 512 阅读 · 0 评论 -
POJ - 3404 Bridge over a rough river (DP)
很有意思的一道题目,不知道是用了贪心的思想还是动态规划。我认为一开始是贪心的思考,然后找到最佳决策,然后再用dp的思想去实现,前面的i个人的最少时间,对后面肯定没有影响。首先对时间进行排序,一开始肯定是想让走得最快的人跟过去,这样回来的时候原创 2017-08-16 13:59:45 · 322 阅读 · 0 评论 -
POJ - 1390 Blocks(记忆化搜索)
好题!一开始想着区间DP,两个维度怎么搞都搞不出来,后来看了题解,发现只要加一个维度,问题就迎刃而解了。但是这道题还是离不开搜索,之前做过一道这道题的二维形式,当时那道题数据水,直接爆搜就过了,这道题爆搜肯定超时,因此要用记忆化搜索,具体就是定义一个三维数组dp[i][j][rlen],代表消去i~j和右边与j相邻且颜色相同的长度为rlen的区间的最原创 2017-08-16 15:38:51 · 632 阅读 · 0 评论 -
HDU - 1203 I NEED A OFFER! (01背包变形)
很简单的一道背包DP变形,概率论要学好呀!不然会想复杂。至少一份offer的概率其实就是1减去一份都收不到的概率。这样子就是背包dp模型了。动归方程用的是收不到的概率原创 2017-08-16 17:13:07 · 249 阅读 · 0 评论 -
POJ - 1293 Duty Free Shop(01背包记录物品)
一开始不知道L是拿来干嘛的,后来才发现用于判断能不能全部装满的。一开始先贪心的用M装满尽可能大的空间,这里转化为01背包问题,然后再把剩下的盒子用L装,看看能不能装满。这里主要的难题原创 2017-08-16 20:13:50 · 556 阅读 · 0 评论 -
HDU - 6113 度度熊的01世界 (2017"百度之星"程序设计大赛 - 初赛(A)1006)
度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成。现在给你一个n*m的图像,你需要分辨他究竟是原创 2017-08-12 16:53:19 · 322 阅读 · 0 评论 -
HDU - 1114 Piggy-Bank(01背包变形)
样例很误导人,其实能逃跑的概率并不是简单的相加!如果是这样就会把能抢的钱当做价值,概率当做容量,然后就是个01背包问题。但这样是错的,被抓的概率并不能简单的相加。应该是求能逃跑的概率要大于题目给的(1-被抓的概率),由于是浮点数,概率当做容原创 2017-08-16 20:59:04 · 235 阅读 · 0 评论 -
HDU - 1114 Piggy-Bank (完全背包)
《背包九讲2.0》是个好东西,把里面的东西用上直接过,如果是必须填满,求最小时那么初始化为INF原创 2017-08-16 21:35:42 · 244 阅读 · 0 评论 -
POJ - 1276 Cash Machine(三种背包模板)
多重背包裸题,套模板即可,由于多重背包用到了01背包和完全背包,所以这里直接结合三种背包写成一个模板。代码有详细注释。多重背包的解法是用了二进制的思想,把N个物品分解成logN件,他们可以组合出各种各样的物品。详见代码。原创 2017-08-18 13:06:15 · 247 阅读 · 0 评论 -
HDU - 6144 Arithmetic of Bomb
Arithmetic of BombProblem Description众所周知,度度熊非常喜欢数字。它最近在学习小学算术,第一次发现这个世界上居然存在两位数,三位数……甚至N位数!但是这回的算术题可并不简单,由于含有表示bomb的#号,度度熊称之为 Arithmetic of Bomb。![](../../../data/images/C777-原创 2017-08-18 16:58:29 · 586 阅读 · 0 评论 -
2017百度之星程序设计大赛 总结
第一次参加,只是去切切水题而已。资格赛考了两道背包,当时正好在学背包九讲,一下子就做出来。然后去参加初赛A,服务器炸了很不爽,但其实对我没啥影响……一眼看到了一道搜索题,结果一堆细节没有注意到,WA了好几次……然后又发现了一题考日期规律的题,找了好几份代码,然后暴力做出来,结果还是有一个小细节没注意,又WA了几发。然后参加初赛B可以说是很崩,写个贪心写了好久,然后队友发现有个模板题,就这样勉强原创 2017-08-18 17:06:42 · 360 阅读 · 0 评论 -
HDU - 6098 Inversion (2017 Multi-University Training Contest - Team 6)
(2017 Multi-University Training Contest - Team 6)原创 2017-08-10 18:55:03 · 332 阅读 · 0 评论 -
HDU - 6106 Classes (2017 Multi-University Training Contest - Team 6)
(2017 Multi-University Training Contest - Team 6)原创 2017-08-10 18:49:22 · 209 阅读 · 0 评论 -
HDU - 6105 Gameia(必胜策略)(2017 Multi-University Training Contest - Team 6)
(2017 Multi-University Training Contest - Team 6)原创 2017-08-10 18:38:19 · 421 阅读 · 0 评论 -
HDU - 1081 To The Max ( 最大子矩阵)
解题思路:因为是连续的,所以一切都很简单,稍微思考就可以转化为最大连续子段和的问题了。我们枚举由行组成的连续矩阵,然后对每个矩阵的每一列求和,然后求最大连续子段和就可以了。原创 2017-08-09 22:17:33 · 244 阅读 · 0 评论 -
HDU - 1024 Max Sum Plus Plus(最大M段连续子段和,详细解释)
解题思路:膜拜前人,他们到底是怎么想到的,看了各种博客,最后加上自己的理解,终于搞懂了。希望以后自己也能独立思考出来。原创 2017-08-09 21:37:10 · 396 阅读 · 0 评论 -
HDU - 1003 Max Sum(最大连续子段和)
DP入门题。但觉得这道题更像是贪心,贪心的选取和最大的部分,稍微思考就可以写出来了,不过用到了DP的思想。原创 2017-08-09 19:51:11 · 327 阅读 · 0 评论 -
HDU - 2881 Jack's struggle (最长上升子序列变形)
Jack's struggleProblem DescriptionA team of airborne troops are ready to complete some missions.The battlefield was divided into a grid of n*n, this team can be air-dropped at any place on原创 2017-08-09 17:15:57 · 734 阅读 · 0 评论 -
POJ - 1692 Crossed Matchings(DP)
解题思路:慢慢练,相信以后也可以自己想到递推式!!用dp[i][j]代表第一行第1~i个和第二行第1~j个之间的最多连接数。先不考虑将a[i],b[j]连线的情况,肯定有dp[i][j]=max(dp[i][j-1],max(dp[i-1][j],dp[i-1][j-1]));然后再考虑连线的情况。如果a[i]==a[j],那么将a[i]和b[j]连线是毫无意义的,因为不可能产生相交,所以要考虑不相等的情况,这个时候应该怎么办呢。这里用到了贪心的思想,将第二行与a[i]最近相等的相连,和第一行与b[j]最近原创 2017-08-09 16:14:10 · 276 阅读 · 0 评论 -
POJ - 1952 BUY LOW, BUY LOWER(最长下降子序列,计数)
BUY LOW, BUY LOWERDescriptionThe advice to "buy low" is half the formula to success in the bovine stock market.To be considered a great investor you must also follow this problems' advice:原创 2017-08-09 15:19:28 · 377 阅读 · 1 评论 -
POJ - 1065 Wooden Sticks(最长上升子序列)
这里用到了一个定理, 上升子序列最少划分数=倒着来一遍最长上升子序列。以后再深入研究这个定理,暂时记着。原创 2017-08-09 11:29:03 · 314 阅读 · 0 评论 -
HDU - 1025 Constructing Roads In JGShining's Kingdom(最长单调子序列 nlogn)
解题思路:学习了nlogn的方法,怎么感觉比n^2的算法还要好理解……dp[i]存的是以i为最长上升子序列长度时,最后那个数的最小值。对于每一个数,我们只要找到dp数组里刚好比那个数大的那个数的位置,就是那个最长上升子序列的长度了,然后更新它的最小值。然后dp数组里存的肯定是有序上升的序列,因此可以采用二分查找。原创 2017-08-09 10:35:18 · 242 阅读 · 0 评论 -
POJ - 1141 Brackets Sequence (区间DP)
解题思路:参考最小括号匹配那题http://blog.csdn.net/lzc504603913/article/details/76944119那题输出最小匹配数,这题刚好相反,你要补最少的括号,使其可以完全匹配,思路类似,dp[i][j]存i到j这个区间内需要补的最少括号,如果s[i]==s[j],那么不用补,然后从中间枚举,并记录截断的位置,用于输出。详见代码注释。原创 2017-08-08 22:10:25 · 293 阅读 · 2 评论 -
POJ - 2955 Brackets (区间DP)
区间DP问题,首先枚举区间,根据题目第二个条件,如果符合则匹配数+2,根据题目第三个条件还要进行中间分隔,枚举所有情况。dp[i][j]代表i到j这个区间的最大匹配数,那么如果s[i]==s[j],dp[i][j]=dp[i+1][j-1]+2,然后我们再枚举中间截断的情况,dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]),详见代码。原创 2017-08-08 21:14:52 · 229 阅读 · 0 评论 -
POJ - 1976 A Mini Locomotive(背包DP)
解题思路:稍作思考,可以转化为背包问题,把连续k节车厢的人数和作为价值,每个车头占一个容量,背包大小为3. 因此有dp[i][j]数组,代表前i节车厢用j个车头去拉能得到的最大价值,相当于背包问题里的,前i个物品用背包容量大小为j的背包去放能获得的最大价值。因此有转移方程,先把a[i]转为前缀和形式原创 2017-08-08 20:29:47 · 328 阅读 · 0 评论 -
POJ - 3280 Cheapest Palindrome(区间DP)
解题报告:是时候深入学习下DP了,字符串题,枚举每一个字符,从每一个字符开始,往左枚举区间,区间从小到大,这个时候就有递推公式,当s[i]==s[j]时,就已经是回文串了,这个时候的最小值肯定就是两边都相减1,即dp[i+1][j-1]。如果不相等,那么要么往左边添加或删除,要么往右边添加或删除,在这里,添加和删除操作是等价的,因此直接去最小值。原创 2017-08-08 19:59:49 · 215 阅读 · 0 评论 -
POJ - 1797 Heavy Transportation(最短路变形,SPFA,Dijkstra)
解题思路:最短路变形题,求两点之间经过的路的最大值。普通的最短路是求最短的路径的和,因此只要把求和改成求最大即可。详细见代码!原创 2017-07-26 11:23:31 · 521 阅读 · 0 评论 -
POJ - 2387 Til the Cows Come Home(Dijkstra SPFA 邻接矩阵 邻接表)
最短路的模板题,以这题为例子,介绍各种最短路算法,和图的各种表示。这里介绍了经典Dijkstra算法和,队列优化的Bell算法,即Spfa算法。Dijkstra算法不能解决负环,而Spfa可以,本例中,spfa返回1代表有负环,0代表没有。算法具体解释参考其他博文原创 2017-07-25 10:31:44 · 593 阅读 · 0 评论 -
HDU - 4127 Flood-it!
经典的IDA*搜索题,可用于入门IDA*算法。用dfs不断地加深搜索深度,在当前深度下如果搜到答案,那么就是最少步数。我们注意到,每次上色,可以看看与当前颜色相邻的颜色有多少种,假设有4种如图原创 2017-07-23 16:23:59 · 576 阅读 · 0 评论 -
HDU - 1401 Solitaire
解题思路:简单的bfs,难点在于状态判断,这里使用了八维数组,刚好不会超空间。即把4个棋子的坐标作为状态,在这之前要先对棋子排序,因为1 1 2 2 3 3 4 4和4 4 3 3 2 2 1 1 其实是一样的状态。之后就是简单的bfs了。另外这题可以用双向bfs,即两边同时bfs,如果在4步内,状态能达到一模一样,那证明可以在8步内达到,这样可以大大优化时间。这里用的是单向bfs,直接搜到8步。原创 2017-07-22 17:43:17 · 395 阅读 · 0 评论 -
POJ - 3322 Bloxorz I
cin会超时cin会超时cin会超时cin会超时cin会超时cin会超时cin会超时cin会超时cin会超时原创 2017-07-17 21:28:46 · 332 阅读 · 0 评论 -
POJ - 2449 Remmarguts' Date
Remmarguts' DateDescription"Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. Softly touching his little ducks' head, he told them a story. "Pri原创 2017-07-09 17:53:52 · 329 阅读 · 0 评论 -
POJ - 2044 Weather Forecast
POJ - 2044 Weather Forecast原创 2017-07-07 17:53:46 · 475 阅读 · 0 评论 -
POJ - 1475 Pushing Boxes
解题思路:两个BFS即可,第一个BFS求出box的最小路径,然后在box中嵌套一个ren的bfs,求出ren到box的相邻位置的最短路径。然后合并答案即可。原创 2017-07-04 21:33:17 · 431 阅读 · 0 评论 -
C++输出谢尔宾斯基三角形
C++输出谢尔宾斯基三角形原创 2017-06-11 18:23:06 · 3532 阅读 · 3 评论 -
HDU - 5078 Osu!
解题思路:水题原创 2017-06-04 15:30:41 · 308 阅读 · 0 评论 -
POJ - 1250 Tanning Salon
解题思路:水题,与栈有点像原创 2017-06-04 15:28:04 · 327 阅读 · 0 评论 -
HDU - 3974 Assign the task
解题思路:DFS把树转换成区间,然后可以通过线段树去维护这些区间,从而变为线段树问题。原创 2017-06-04 15:19:55 · 264 阅读 · 0 评论 -
POJ - 3087 Shuffle'm Up
解题思路:水题,直接模拟即可原创 2017-06-04 14:37:30 · 239 阅读 · 0 评论