UVA 111 (复习dp, 14.07.09)】的更多相关文章

 History Grading  Background Many problems in Computer Science involve maximizing some measure according to constraints. Consider a history exam in which students are asked to put several historical events into chronological order. Students who order…
 Coin Change  Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make changes with these coins for a given amount of money. For example, if we have 11 cents, then we can make changes with one 10-cent coin an…
题目传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18201 其实是一道不算难的DP,但是搞了好久,才发现原来是题目没读清楚,囧,原序列那里简直太坑了, 看了别人好多的都是用最长公共子序列,但是我用的是最长上升子序列来做,就是将原序列逐渐递增映射成递增的数列,这道题目的数据恰好符合这个条件 比如正确的序列为$$5 \ 6 \ 4  \ 1 \  3 \  2$$,我就可以将他一一映射成为 $ID[5]\righta…
错失AK记 2019.07.09[NOIP提高组]模拟 B 组 明明今天的题都很水,可就是没蒟蒻. 写题的时候: T0一眼高精(结果没切)T1看到2啊8啊果断转二进制观察,发现都是左移几位然后空出的位置填1_秒切T2理性观察,感性思考,发现不就是初中几何?切线长定理转化,勾股定理计算T3说来惭愧,写完前三题忙着去预知未来,可是改第一题就把时间花光了,看一眼T3感觉题面很麻烦就...... 结果最后40+100+100+0=240/400 Rank=32/82 虽然都有清晰的思路,但是由于太水了就…
最近忙着面试耽误了几天,今天刷了07,09都是字符串处理,一个是大数反转,一个是回文数判断,我都是转成字符串处理的,过了是过了,但是挺慢的,先记着,等有机会优化下 题目 给定一个 32 位有符号整数,将整数中的数字进行反转. /** * @param {number} x * @return {number} */ var reverse = function(x) { x=x.toString(); if(x[x.length-1]==0&&x.length==1){ return pa…
UVA.10192 Vacation (DP LCS) 题意分析 某人要指定旅游路线,父母分别给出了一系列城市的旅游顺序,求满足父母建议的最大的城市数量是多少. 对于父母的建议分别作为2个子串,对其做LCS处理,最后的结果即为所求. 核心状态转移方程: if(c1[i] == c2[j]) dp[i][j] =dp[i-1][j-1]+1; else dp[i][j] = max(dp[i-1][j],dp[i][j-1]); 这里还有一个小技巧,当希望读取的字符数据,不是从字符数组的第0个元素…
UVA.10130 SuperSale (DP 01背包) 题意分析 现在有一家人去超市购物.每个人都有所能携带的重量上限.超市中的每个商品有其相应的价值和重量,并且有规定,每人每种商品最多购买一个.求这一家人所能购买到的最大价值是多少. 每个人的所能携带的最大重量即为背包容量.此题只是换成n个人而已.所以分别以每个人最大携带重量为背包容量,对所有商品做01背包,求出每个人的最大价值.这些最大价值之和即为这家人购物的最大价值. 核心状态转移方程: dp[i][j] = max(dp[i][j],…
2021.07.09 K-D树 前置知识 1.二叉搜索树 2.总是很长的替罪羊树 K-D树 建树 K-D树具有二叉搜索树的形态,对于每一个分类标准,小于标准的节点在父节点左边,大于标准的节点在父节点右边. 例如:有三个坐标(2,2),(5,1),(6,4),x轴以5为标准,则(2,2)为(5,1)左儿子,(6,4)为(5,1)右儿子. 常见的建树方法有两个: 1.交替 从根节点出发,依次把k个维度作主要关键词. 例如:第一层以x轴坐标为关键词,第二层以y轴坐标为关键词,第三层还是以x轴坐标为关键…
P2365 任务安排 题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti.在每批任务开始前,机器需要启动时间S,而完成这批任务所需的时间是各个任务需要时间的总和(同一批任务将在同一时刻完成).每个任务的费用是它的完成时刻乘以一个费用系数Fi.请确定一个分组方案,使得总费用最小. 例如:S=1:T={1,3,4,2,1}:F={3,2,3,3,4}.如果分组方案是{…
顺序对齐 题目描述 考虑两个字符串右对齐的最佳解法.例如,有一个右对齐方案中字符串是 AADDEFGGHC 和 ADCDEGH. AAD~DEFGGHC ADCDE~~GH~ 每一个数值匹配的位置值 2 分,一段连续的空格值 -1 分.所以总分是匹配点的 2 倍减去连续空格的段数,在上述给定的例子中,6 个位置 (A,D,D,E,G,H) 匹配,三段空格,所以得分 2*6+(-1)*3=9,注意,我们并不处罚左边的不匹配位置.若匹配的位置是两个不同的字符,则既不得分也不失分. 请你写个程序找出最…
题目链接 题意:给N,第二行是答案,n个数c1---cn, 代表第一个的顺序是c1,第二个数顺序是c2; 下面每一行是学生的答案,格式同上. 注意:这个给的顺序需要处理一下,不能直接用. 思路:LCS. #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; #defi…
题意:题意就是坑,看不大懂么,结果就做不对,如果看懂了就so easy了,给定n个事件,注意的是, 它给的是第i个事件发生在第多少位,并不是像我们想的,第i位是哪个事件,举个例子吧,4 2 3 1, 表示的是第一个事件发生在第四,第二个事件发生在第二位,第三个在第三位,第四个在第一位. 然后输入n个答案,求有多少个事件相对位置是和原来一样的. 那么知道输入好办了,我们只需对输入做一下预处理,就变成了LIS. 代码如下: #include <iostream> #include <cstd…
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]); CODE: BZ: /*================================================================= # Created time: 2016-03-28 21:10 # Filename: uva4394.cpp # Desc…
Given an increasing sequence of integers a1, a2, a3, . . . , ak, the E-transform produces a sequence of thesame length, b1, b2, b3, . . . , bk such that• b1 = a1• for j > 1, bj is the only integer aj−1 < bj ≤ aj, which is divisible byaj − aj−1.For e…
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=970 第一次正式用hash表. 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ; ;…
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1095 题目大意:有许多只王八,每一只王八有着两个属性,重量w和力量s,这些王八最多能叠多少层不会让出现王八被压死,注意王八承受的重量 要算上自己的重量 思路分析:首先是贪心,我们要选择力量最大的王八放在下面是最优的,证明如下 分析,如果力量大的在下面,力量小的在上面,那么力量大的…
题目连接:111 - History Grading 题目大意:给出一个n 代表序列中元素的个数, 然后是一个答案, 接下来是若干个同学的答案(直到文件结束为止), 求出两个序列的最长公共子序列, 注意给出的答案均是以该事件处于第几个发生的, 例如 :2 3 4 1 即是 对应第1个事件在第2个发生,第2个事件在第3个发生 ...转换一下就是  4 1 2 3. 解题思路:最长公共子序列问题, 状态转移方程 d[i][j] = 0( i == 0 ||  j == 0) d[i - 1] [j…
UVA 1358 - Generator option=com_onlinejudge&Itemid=8&page=show_problem&category=524&problem=4104&mosmsg=Submission+received+with+ID+14082913" target="_blank" style="">题目链接 题意:有m种字符(从'A'開始往后数的大写字母),如今有一个字符串,长…
题目连接:uva 1534 - Taekwondo 题目大意:有两组什么东西,题目背景有点忘记了,就是给出两组数,两组个数分别为n,m,要求找出min(n,m)对数.每一个数最多最多选一次,使得这min(n,m)对数ai,bi.ai-bi的绝对值之和最小. 解题思路:贪心.将两组数分别排序,然后dp[i][j]表示i对,匹配到j时候的最优解. #include <cstdio> #include <cstring> #include <cmath> #include &…
UVA 10118 题意: 有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果, 如果篮子里有两个相同的糖果,那么就可以把这两个(一对)糖果放进自己的口袋里,问最多能拿走多少对糖果.糖果种类最多20种. 思路:记忆化搜索 Orz:在输入的时候不小心写错了,导致一直调试.感觉自己的函数并没有问题,纠结了好久. 找出问题时瞬间想si #include <iostream> #include <cstdio> #include <…
uva 紫书例题,这个区间dp最容易错的应该是(S)这种匹配情况,如果不是题目中给了提示我就忽略了,只想着左右分割忘记了这种特殊的例子. dp[i][j]=MIN{dp[i+1][j-1] | if(match(i,j) , dp[i][k]+dp[k+1][j] | i<=k<=j .}注意初始化dp[i][i]=1,表示1个字符最少需要一个才能匹配,dp[i+1][i]=0,因为可能只有两个字符使得i+1>j-1,我们可以认为中间是空字符已经匹配了. 打印路径利用了递归,很巧妙,lr…
Trees are fundamental in many branches of computer science (Pun definitely intended). Current state- of-the art parallel computers such are based on fat trees . Quad- and octal-trees are fundamental to many algorithms in computer graphics. This probl…
题意:有一个 n 位密码锁,每位都是0-9,可以循环旋转.同时可以让1-3个相邻数字进行旋转一个,给定初始状态和目状态,问你最少要转多少次. 析:很明显的一个DP题.dp[i][j][k] 表示前 i 位已经转好,并且第 i+1 位是 j ,第 i+2 位是 k,那么我们先把第 i 位转到指定位置,然后计算转多少次, 然后再考虑 i+1位和 i+2位,要旋转小于等于第 i 位的次数,这就转移完了.比较简单的一个DP,只是没有遇见过. 代码如下: #pragma comment(linker, "…
UVA 1292 - Strategic game 守卫城市,城市由n个点和n-1条边组成的树,要求在点上安排士兵,守卫与点相连的边.问最少要安排多少士兵. 典型的树形dp.每一个点有两个状态: dp[t][i]表示t节点在i状态下其所在的子树所有的边都被守卫的最少士兵数量. 有士兵守卫和没有士兵守卫.假设有士兵守卫.其子节点的状态随意. 假设没有士兵.子节点必须所有都有士兵守卫. dp[t][0] = sum{dp[ti][1]}; dp[t][1] = sum{min(dp[t1][0],…
题意:k个水球,现在在一个n层建筑物上,水球可能在某一层层以上扔下去会破掉,现在求一个最少的次数使得用这k个水球能确定出哪一层. 思路:假设有i个小球,还可以实验j次时,第一个小球从x处扔下去,如果破了,那么可以确定答案肯定在x之下找,剩下i-1个小球和j-1次实验,可以在x之下确定出最高层数,那么x-1就是这最高层数(试想如果x-1 > 最高层数,那么中间可能有一些层数就无法确定了)所以x = f[i - 1][j - 1] + 1; 然后在考虑,如果这个小球在x位置没破,那么就往上找,这时候…
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35396 题目大意:每晚打游戏.每晚中,赢一局概率p,最多玩n局,如果最后不能保证胜率大于p,则从此不玩.问打游戏的天数的期望. 解题思路: 首先分析每天晚上的. 设f[i][j]为前i天,已经赢j局的概率. 由全概率公式,那么当天晚上完蛋的概率q=f[n][0]+f[n][1]+.....f[n][终止条件]. 至于为什么从完蛋(输)的角度考虑,主要是由于n局的…
好吧,其实<JavaScript语言精粹>后面还简单介绍了代码风格,优美特性,以及包含的毒瘤.糟粕. 但我很快就看完了,发现其实都在前面讲过了,所以就不写了. 至今为止已经算是把JavaScript简单复习了一遍用时11天,其中4天有很重要的事情没有写博客. 总的来说,我的看法依然是JS是一门入门简单,写法很随意的语言,所以在写代码的时候需要用更严谨更规范的手法来写. 然后实际应用过程中还是蛮复杂的,特别是对应一些大型的脚本而言.所幸有了Jquery,所幸我也不是一个专业前端,更不用去考虑兼容…
 History Grading  Background Many problems in Computer Science involve maximizing some measure according to constraints. Consider a history exam in which students are asked to put several historical events into chronological order. Students who order…
In most professional sporting events, cheerleaders play a major role in entertaining the spectators. Theirroles are substantial during breaks and prior to start of play. The world cup soccer is no exception.Usually the cheerleaders form a group and p…
最开始的时候思路就想错了,就不说错误的思路了. 因为这n个数的总和是一定的,所以在取数的时候不是让自己尽可能拿的最多,而是让对方尽量取得最少. 记忆化搜索(时间复杂度O(n3)): d(i, j)表示原序列中第i个元素到第j个元素构成的子序列,先手取数能够得到的最大值. sum(i, j) 表示从第i个元素到第j个元素的和 因为要让对手获得最小的分数,所以状态转移方程为: d(i, j) = sum(i, j) - min{d(枚举所有可能剩给对手的序列), 0(0代表全部取完)} s数组保存a…