uva动态规划题列表

合集下载

POJ 动态规划题目列表

POJ 动态规划题目列表

[1]POJ动态规划题目列表容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740(博弈), 1742, 1887, 1926(马尔科夫矩阵,求平衡), 1936,1952, 1953, 1958, 1959, 1962, 1975, 1989, 2018, 2029,2039, 2063, 2081, 2082,2181, 2184, 2192, 2231, 2279, 2329, 2336, 2346, 2353,2355, 2356, 2385, 2392, 2424,不易: 1019,1037, 1080, 1112, 1141, 1170, 1192, 1239, 1655, 1695, 1707,1733(区间减法加并查集), 1737, 1837, 1850, 1920(加强版汉罗塔), 1934(全部最长公共子序列), 1937(计算几何), 1964(最大矩形面积,O(n)算法), 2138, 2151, 2161(烦,没写), 2178,推荐: 1015, 1635, 1636(挺好的), 1671, 1682, 1692(优化), 1704, 1717, 1722, 1726, 1732, 1770, 1821, 1853, 1949, 2019, 2127, 2176, 2228, 2287, 2342, 2374, 2378, 2384, 2411 状态 DP 树 DP 构造最优解四边形不等式单调队列1015 Jury Compromise1029 False coin1036 Gangsters1037 A decorative fence1038 Bugs Integrated, Inc.1042 Gone Fishing1050 To the Max1062 昂贵的聘礼1074 Parallel Expectations1080 Human Gene Functions1088 滑雪1093 Formatting Text1112 Team Them Up!1141 Brackets Sequence1143 Number Game1157 LITTLE SHOP OF FLOWERS 1159 Palindrome1160 Post Office1163 The Triangle1170 Shopping Offers1178 Camelot1179 Polygon1180 Batch Scheduling1185 炮兵阵地1187 陨石的秘密1189 钉子和小球1191 棋盘分割1192 最优连通子集1208 The Blocks Problem 1239 Increasing Sequences 1240 Pre-Post-erous!1276Cash Machine1293 Duty Free Shop1322 Chocolate1323Game Prediction1338 Ugly Numbers1390 Blocks1414 Life Line1432 Decoding Morse Sequences 1456 Supermarket1458 Common Subsequence1475 Pushing Boxes1485 Fast Food1505 Copying Books1513 Scheduling Lectures1579 Function Run Fun1609 Tiling Up Blocks1631 Bridging signals 2 分+DP NLOGN 1633 Gladiators 1635 Subway tree systems 1636 Prison rearrangement1644 To Bet or Not To Bet1649 Market Place1651 Multiplication Puzzle1655 Balancing Act1661 Help Jimmy1664 放苹果1671 Rhyme Schemes1682 Clans on the Three Gorges1690 (Your)((Term)((Project)))1691 Painting A Board1692 Crossed Matchings1695 Magazine Delivery1699 Best Sequence1704 Georgia and Bob1707 Sum of powers1712 Flying Stars1714 The Cave1717 Dominoes1718 River Crossing1722 SUBTRACT1726 Tango Tango Insurrection 1732 Phone numbers1733 Parity game1737 Connected Graph1740 A New Stone Game1742 Coins P1745 Divisibility1770 Special Experiment1771 Elevator Stopping Plan 1776 Task Sequences1821 Fence1837 Balance1848 Tree1850 Code1853 Cat1874 Trade on Verweggistan 1887 Testing the CATCHER 1889 Package Pricing1920 Towers of Hanoi1926 Pollution1934 Trip1936 All in All1937 Balanced Food1946 Cow Cycling1947 Rebuilding Roads1949 Chores1952 BUY LOW, BUY LOWER 1953 World Cup Noise1958 Strange Towers of Hanoi 1959 Darts1962 Corporative Network 1964 City Game1975 Median Weight Bead 1989 The Cow Lineup2018 Best Cow Fences2019 Cornfields2029 Get Many Persimmon Trees2033 Alphacode2039 To and Fro2047 Concert Hall Scheduling2063 Investment2081 Recaman's Sequence2082 Terrible Sets2084 Game of Connections2127 Greatest Common Increasing Subsequence 2138 Travel Games2151 Check the difficulty of problems2152 Fire2161 Chandelier2176 Folding2178 Heroes Of Might And Magic2181 Jumping Cows2184 Cow Exhibition2192 Zipper2193 Lenny's Lucky Lotto Lists2228 Naptime 2231 Moo Volume2279 Mr. Young's Picture Permutations2287 TianJi -- The Horse Racing 2288 Islands and Bridges2292 Optimal Keypad2329 Nearest number - 22336 Ferry Loading II2342 Anniversary party2346 Lucky tickets2353 Ministry2355 Railway tickets2356 Find a multiple2374 Fence Obstacle Course2378 Tree Cutting2384 Harder Sokoban Problem2385 Apple Catching2386 Lake Counting2392 Space Elevator2397 Spiderman2411 Mondriaan's Dream2414 Phylogenetic Trees Inherited 2424 Flo's Restaurant2430 Lazy Cows2915 Zuma3017 Cut the Sequence 3028 Shoot-out3124 The Bookcase3133 Manhattan Wiring 3345 Bribing FIPA3375 Network Connection 3420 Quad Tiling ?。

动态规划练习题(含答案)

动态规划练习题(含答案)

动态规划练习题USACO 2.2 Subset Sums题目如下:对于从1到N的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的。

举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的:and {1,2}这是唯一一种分发(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分发的子集合各数字和是相等的:{1,6,7} and {2,3,4,5} {注1+6+7=2+3+4+5}{2,5,7} and {1,3,4,6}{3,4,7} and {1,2,5,6}{1,2,4,7} and {3,5,6}给出N,你的程序应该输出划分方案总数,如果不存在这样的划分方案,则输出0。

程序不能预存结果直接输出。

PROGRAM NAME: subsetINPUT FORMAT输入文件只有一行,且只有一个整数NSAMPLE INPUT (file subset.in)7OUTPUT FORMAT输出划分方案总数,如果不存在则输出0。

SAMPLE OUTPUT (file subset.out)4参考程序如下:#include <fstream>using namespace std;const unsigned int MAX_SUM = 1024;int n;unsigned long long int dyn[MAX_SUM];ifstream fin ("subset.in");ofstream fout ("subset.out");int main() {fin >> n;fin.close();int s = n*(n+1);if (s % 4) {fout << 0 << endl;fout.close ();return ;}s /= 4;int i, j;dyn [0] = 1;for (i = 1; i <= n; i++)for (j = s; j >= i; j--)dyn[j] += dyn[j-i];fout << (dyn[s]/2) << endl;fout.close();return 0;}USACO 2.3 Longest Prefix题目如下:在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。

动态规划练习试题和解答

动态规划练习试题和解答

动态规划练习题[题1] 多米诺骨牌(DOMINO)问题描述:有一种多米诺骨牌是平面的,其正面被分成上下两部分,每一部分的表面或者为空,或者被标上1至6个点。

现有一行排列在桌面上:顶行骨牌的点数之和为6+1+1+1=9;底行骨牌点数之和为1+5+3+2=11。

顶行和底行的差值是2。

这个差值是两行点数之和的差的绝对值。

每个多米诺骨牌都可以上下倒置转换,即上部变为下部,下部变为上部。

现在的任务是,以最少的翻转次数,使得顶行和底行之间的差值最小。

对于上面这个例子,我们只需翻转最后一个骨牌,就可以使得顶行和底行的差值为0,所以例子的答案为1。

输入格式:文件的第一行是一个整数n(1〈=n〈=1000〉,表示有n个多米诺骨牌在桌面上排成一行。

接下来共有n行,每行包含两个整数a、b(0〈=a、b〈=6,中间用空格分开〉。

第I+1行的a、b分别表示第I个多米诺骨牌的上部与下部的点数(0表示空)。

输出格式:只有一个整数在文件的第一行。

这个整数表示翻动骨牌的最少次数,从而使得顶行和底行的差值最小。

[题2] Perform巡回演出题目描述:Flute市的Phlharmoniker乐团2000年准备到Harp市做一次大型演出,本着普及古典音乐的目的,乐团指挥L.Y.M准备在到达Harp市之前先在周围一些小城市作一段时间的巡回演出,此后的几天里,音乐家们将每天搭乘一个航班从一个城市飞到另一个城市,最后才到达目的地Harp市(乐团可多次在同一城市演出).由于航线的费用和班次每天都在变,城市和城市之间都有一份循环的航班表,每一时间,每一方向,航班表循环的周期都可能不同.现要求寻找一张花费费用最小的演出表.输入: 输入文件包括若干个场景.每个场景的描述由一对整数n(2<=n<=10)和k(1<=k<=1000)开始,音乐家们要在这n个城市作巡回演出,城市用1..n标号,其中1是起点Flute市,n是终点Harp市,接下来有n*(n-1)份航班表,一份航班表一行,描述每对城市之间的航线和价格,第一组n-1份航班表对应从城市1到其他城市(2,3,...n)的航班,接下的n-1行是从城市2到其他城市(1,3,4...n)的航班,如此下去.每份航班又一个整数d(1<=d<=30)开始,表示航班表循环的周期,接下来的d个非负整数表示1,2...d天对应的两个城市的航班的价格,价格为零表示那天两个城市之间没有航班.例如"3 75 0 80"表示第一天机票价格是75KOI,第二天没有航班,第三天的机票是80KOI,然后循环:第四天又是75KOI,第五天没有航班,如此循环.输入文件由n=k=0的场景结束.输出:对每个场景如果乐团可能从城市1出发,每天都要飞往另一个城市,最后(经过k天)抵达城市n,则输出这k个航班价格之和的最小值.如果不可能存在这样的巡回演出路线,输出0.样例输入: 样例输出:3 6 4602 130 150 03 75 0 807 120 110 0 100 110 120 04 60 70 60 503 0 135 1402 70 802 32 0 701 800 0[题3] 复制书稿(BOOKS)问题描述:假设有M本书(编号为1,2,…M),想将每本复制一份,M本书的页数可能不同(分别是P1,P2,…PM)。

动态规划练习题

动态规划练习题

最小乘车费用 (bus)【问题描述】而任意一辆汽车从不行驶超过1 0公里。

某人想乘车到达n公里远的地方,假设他可以任意次换车,请你帮他找到一种乘车方案,使得总费用最小。

注意:1 0公里的费用比1公里小的情况是允许的。

【输入文件】共两行:第一行为1 0个不超过200的整数,依次表示行驶1~1 0公里的费用,相邻两数间用一个空格隔开:第二行为某人想要乘车的公里数(不超过20000的整数)。

【输出文件】仅一行,包含一个整数,表示到达n公里所需要的最小费用。

【样例输入】12 21 31 40 49 58 69 79 90 10115【样例输出】147船 (ships)【问题描述】PALMIA国家被一条河流分成南北两岸,南北两岸上各有N个村庄。

北岸的每一个村庄有一个唯一的朋友在南岸,且他们的朋友村庄彼此不同。

每一对朋友村庄想要一条船来连接他们,他们向政府提出申请以获得批准。

由于河面上常常有雾,政府决定禁止船只航线相交(如果相交,则很可能导致碰船)。

你的任务是编写一个程序,帮助政府官员决定批准哪些船只航线,使得不相交的航线数目最大。

【输入文件】ships.in输入文件由几组数据组成。

每组数据的第一行有2个整数X,Y,中间有一个空格隔开,X代表PALMIA河的长度(10<=X<=6000),Y代表河的宽度(10<=Y<=100)。

第二行包含整数N,表示分别坐落在南北两岸上的村庄的数目(1<=N<=5000)。

在接下来的N行中,每一行有两个非负整数C,D,由一个空格隔开,分别表示这一对朋友村庄沿河岸与PALMIA 河最西边界的距离(C代表北岸的村庄,D代表南岸的村庄),不存在同岸又同位置的村庄。

最后一组数据的下面仅有一行,是两个0,也被一空格隔开。

【输出文件】ships.out对输入文件的每一组数据,输出文件应在连续的行中表示出最大可能满足上述条件的航线的数目。

【输入样例】30 4722 42 610 315 129 817 174 20 0【输出样例】4DOLLARS (dollars)【问题描述】在以后的若干天里戴维将学习美元与德国马克的汇率。

vijos题库(最终修改完整版)

vijos题库(最终修改完整版)

VIJOS【颜色代表内容形式!!!】题目附件算法正文注意引用说明1000 A+B Problem数学(?)请Ctrl c+ctrl vprogram Plus;var a,b:longint;beginreadln(a,b);writeln(a+b);end.注意:不是高精度加法程序来自:VIJOS1001 谁拿了最多奖学金模拟仔细点就行了。

1001.pas1002 过河解法1:动态规划设f[i]表示跳到i所能碰到的最少石子数,方程式很容易。

f[i]=min{f[i-t],f[i-t+1]...f[i-s]}+i上的石子数因为题目中的l非常大,但石子数却非常少,在这种情况下我们会发现f数组有一大段一大段的值都是完全一样的,这时候多算下去也没有意义,设有一段f[i-t]...f[i]完全相同,这时我们完全可以把它们移动到下一个石头的前面去,这样就能节省掉许多时间。

实现中,我们可以用循环数组,方程式完全一样,只不过如果发现i前t个值全部一样时,就直接把i的坐标跳到下一个石子处。

当s=t时我们的方法行不通,因为f数组中不会出现连续的相同值,这时可以特判,石子的坐标mod s=0的就会被踩到。

注意:为了方便,循环数组可从0开始编号;最后一步没说一定要跳到l;判断f[i]到f[i-t]是否相同时可加个优化:数组g记录以i结尾的连续相同的值有多少个,每次判断g[i]是否大于t就行了,不过本题s,t过小,效果并不明显。

1002.pas解法2:动态规划总体思想和解法1相同,我们可以确定当两颗石子(包括终点和最后一颗石头的距离)的距离大于100时,完全可以将其距离缩短为100(证明我还不会),但注意你把i石子往前推时,i后面的石子(包括终点l)也得一起往前推,这样压缩完之后直接动归就不会超时了。

1002-2.pas1006 晴天小猪历险记之Hill动态规划如果只能从下往上走,那么本题会非常简单,但小猪还能左右走,于是只能把从i+1到i层的行动分为2步:从i+1到I层,再在i层左右移动。

S t r a w _ b e a r 算 法 学 习

S t r a w _ b e a r 算 法 学 习

(转载)uva题目难度分级列表Solved byDifficultyThe 3n 1 problemEcological Bin PackingBack to High School Physics Hashmat the Brave WarriorTEX QuotesThe DecoderUgly NumbersJolly JumpersPrimary ArithmeticReverse and AddMaximum SumPower of Cryptography Kindergarten Counting Game Train SwappingThe Blocks ProblemBox of BricksWhat's Cryptanalysis? Ecological PremiumSkew BinaryCombinationsPower CrisisPerfectionAbove AverageFactors and Factorials MinesweeperClockHandsCount on CantorInteger InquiryWhat's The Frequency, Kenneth? Light, More LightError CorrectionGoldbach's Conjecture BicoloringWhat is the Median?Goldbach's Conjecture (II)The Skyline ProblemFibonacci FreezeWord ScrambleVito's FamilyFunny Encryption MethodQuirksome SquaresStreet NumbersPizza CuttingBinomial ShowdownHistory GradingAll in AllPoints in Figures: Rectangles Roman DigititisParentheses BalancePeter's SmokeStacks of FlapjacksTo Carry or not to CarryPig-LatinThe Circumference of the Circle Flip SortPalindromesStacking BoxesFactorial FrequenciesPseudo-Random NumbersDecode the Mad manCarmichael NumbersJust the FactsEeny Meeny MooLongest Common SubsequencePrime FactorsThe Department of Redundancy Department Summation of PolynomialsPoints in Figures: Rectangles and Circles Kibbles ``n'' Bits ``n'' Bits ``n'' Bits Prime CutsSelf NumbersOil DepositsDivisorsMutant Flatworld ExplorersThe Cat in the HatMarvelous MazesTree SummingThe Collatz SequenceLCD DisplaySuper long sumsKnight MovesHumble NumbersCoin ChangeBeat the Spread!Ackermann FunctionsContinued FractionsGreedy Gift GiversI Love Big Numbers !Perfect CubesThe Sultan's SuccessorsEncoder and DecoderAdding Reversed NumbersPolynomial ShowdownLove CalculatorCircle Through Three PointsThe House Of Santa ClausAnt on a ChessboardHangman JudgeSoftware CRCThe Dole QueueRotating SentencesCutting SticksThe SnailGenerating Fast, Sorted Permutation Triangle WaveUniform GeneratorZeros and OnesSimply EmirpFermat vs. PythagorasMachined SurfacesFactorial! You Must be Kidding! Haiku ReviewRare OrderIs This Integration ?Common PermutationPolygon Inside A CircleTell me the frequencies! Unidirectional TSPTree RecoverySimple Base ConversionIs Bigger Smarter?A Multiplication GameCount the factorsArbitragePrime WordsWord IndexAnanagramsSimply SubsetsPoints in Figures: Rectangles, Circles, Triangles Guessing GameYou can say 11Secret ResearchThe Knights Of The Round TableMischievous ChildrenThe Twin TowersRoman RouletteThe Seasonal WarFind the TelephoneFibonacci NumbersVacationPowers Et Al.The Postal Worker Rings OnceLongest PathsCombination LockAll SquaresIntersectionEuclid ProblemThe Land of JusticeHappy NumberTrees on the levelPipe FittersDog and GopherAll You Need Is LoveOrdering TasksFrecklesLet Me Count The WaysBasically SpeakingRay Through GlassesWhere's Waldorf?Simply SyntaxThe Tourist GuideMaya CalendarWorld Cup NoiseDungeon MasterDividing coinsPolly the PolynomialDNA SortingPolynomial CoefficientsBabelfishOne Little, Two Little, Three Little Endians Optimal Array Multiplication SequenceMatrix Chain MultiplicationA Node Too FarJoseph's CousinPrime FrequencyInterpreterSummation of Four Primes Master-Mind HintsStudent GrantsSmith NumbersRecyclingDigit PrimesList of ConquestsSCUD BustersBaudot Data Communication Code Automatic PoetryTwin PrimesGetting in LineHeavy CargoHow Many Fibs?Intersecting LinesTrouble with a PentagonTake the LandBlowing FusesRobot MotionHay PointsRank the LanguagesArtificial Intelligence? SatellitesWord AmalgamationLongest NapRelational OperatorHanoi Tower Troubles Again! There's treasure everywhere!Big ChocolatePrime Ring ProblemFind the ways !What Base Is This?Prime LandShellSortHeads - Tails ProbabilityThe Bases Are LoadedSelf-describing SequenceLeap Year or Not Leap Year and . How many nodes ?Squares (III)Repeating Decimals SuperSal。

动态规划习题完整版

动态规划习题完整版

动态规划习题Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】动态规划专题分类视图数轴动规题:题1.2001年普及组第4题--装箱问题【问题描述】有一个箱子容量为V(正整数,0≤V≤20000),同时有n个物品(0<n≤30),每个物品有一个体积(正整数)。

要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

【输入格式】输入文件box.in有若干行。

第一行:一个整数,表示箱子容量V;第二行:一个整数,表示物品个数n;接下来n行,分别表示这n个物品的各自体积。

【输出格式】输出文件box.out只有一行数据,该行只有一个数,表示最小的箱子剩余空间。

【输入样例】2468312797【输出样例】题2.1996年提高组第4题--砝码秤重__数据加强版【问题描述】设有n种砝码,第k种砝码有Ck 个,每个重量均为Wk,求:用这些砝码能秤出的不同重量的个数,但不包括一个砝码也不用的情况。

【输入格式】输入文件weight.in的第一行只有一个数n,表示不同的砝码的种类数.第2行至第n+1行,每行有两个整数.第k+1行的两个数分别表示第k种砝码的个数和重量.【输出格式】输出文件weight.out中只有一行数据:Total=N。

表示用这些砝码能秤出的不同重量数。

【输入样例】22223【输出样例】Total=8【样例说明】重量2,3,4,5,6,7,8,10都能秤得【数据限制】对于100%的数据,砝码的种类n满足:1≤n≤100;对于30%的数据,砝码的总数量C满足:1≤C≤20;对于100%的数据,砝码的总数量C满足:1≤C≤100;对于所有的数据,砝码的总重量W满足:1≤W≤400000;题3.石子归并-szgb.pas【问题描述】有一堆石头质量分别为W1,W2,…,Wn.(Wi≤10000),将石头合并为两堆,使两堆质量的差最小。

【输入】输入文件szgb.in的第一行只有一个整数n(1≤n≤50),表示有n堆石子。

动态规划总结经典题目(经典中的经典)

动态规划总结经典题目(经典中的经典)

动态规划总结——经典问题总结本文着重讨论状态是如何表示,以及方程是怎样表示的。

当然,还附上关键的,有可能作为模板的代码段。

但有的代码的实现是优化版的。

经典问题总结最长上升子序列(LIS)问题描述如下:设L=<a1,a2,…,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,…,akm>,其中k1<k2<…<km且aK1<ak2<…<akm。

求最大的m值。

这里采用的是逆向思维的方法,从最后一个开始想起,即先从A[N](A数组是存放数据的数组,下同)开始,则只有长度为1的子序列,到A[N-1]时就有两种情况,如果a[n-1] < a[n] 则存在长度为2的不下降子序列a[n-1],a[n];如果a[n-1] > a[n] 则存在长度为1的不下降子序列a[n-1]或者a[n]。

有了以上的思想,DP方程就呼之欲出了(这里是顺序推的,不是逆序的):DP[I]=MAX(1,DP[J]+1)J=0,1,...,I-1但这样的想法实现起来是)O(n^2)的。

本题还有更好的解法,就是O(n*logn)。

利用了长升子序列的性质来优化,以下是优化版的代码://最长不降子序const int SIZE=500001;int data[SIZE];int dp[SIZE];//返回值是最长不降子序列的最大长度,复杂度O(N*logN)int LCS(int n) { //N是DATA数组的长度,下标从1开始int len(1),low,high,mid,i;dp[1]=data[1];for(i=1;i<=n;++i) {low=1;high=len;while( low<=high ) { //二分mid=(low+high)/2;if( data[i]>dp[mid] ) {low=mid+1;}else {high=mid-1;}}dp[low]=data[i];if( low>len ) {++len;}}return len;}最长公共子序列(LCS)给出两个字符串a, b,求它们的最长、连续的公共字串。

动态规划典型例题

动态规划典型例题

1、单调递增最长子序列描述求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出输出字符串的最长递增子序列的长度样例输入3aaaababcabklmncdefg样例输出1372、最长公共子序列描述如题,需要写一个程序,得出最长公共子序列。

tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。

其定义是,一个序列S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则S 称为已知序列的最长公共子序列。

输入第一行给出一个整数N(0<N<100)表示待测数据组数接下来每组数据两行,分别为待测的两组字符串。

每个字符串长度不大于1000.输出每组测试数据输出一个整数,表示最长公共子序列长度。

每组结果占一行。

样例输入2asdfadfsd123abcabc123abc样例输出363、括号匹配时间限制:1000 ms | 内存限制:65535 KB描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。

如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的输入第一行输入一个正整数N,表示测试数据组数(N<=10)每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100输出对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。

每组测试输出占一行样例输入4[]([])[]((]([)]样例输出324、完全背包描述直接说题意,完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用。

各大OJ题目归类

各大OJ题目归类

各大OJ题目归类—————————–最优化问题————————————- ———————-动态规划SOJ1162 I-KeyboardSOJ2096 Maximum SubmatrixSOJ2111 littleken bgSOJ2505 The County FairSOJ2818 QQ音速SOJ2469 Exploring PyramidsSOJ1833 Base NumbersSOJ2009 Zeros and OnesSOJ2032 The Lost HouseSOJ2289 A decorative fenceSOJ2089 lykooSOJ2440 The days in fzkSOJ2718 BookshelfSOJ2722 Treats for the Cows(二维状态,0维决策)SOJ2726 Deck of CardsSOJ2729 Space ElevatorSOJ2730 Lazy CowsSOJ2702 AlannaSOJ2713 Cut the SequenceSOJ2768 BombSOJ2779 Find the max (I) (最大M子段和问题)SOJ2796 Letter Deletion(DP基础题,最长公共子序列问题) SOJ2800 三角形SOJ2804 Longest Ordered Subsequence (II)SOJ2896 Alphacode (动态规划简单题)SOJ2930 积木城堡SOJ3037 Painting the ballsSOJ3104 Game(注意大数运算,高精度)SOJ3264 Evil GameSOJ3300 Stockholm Coins(背包问题)SOJ3360 Buying Hay(背包问题)SOJ3531 Number Pyramids(背包问题)—————-状态DPSOJ2089 lykooSOJ2819 AderSOJ2842 The TSP problemSOJ3025 Artillery(状态DP)SOJ3088 windy’s cake VIIISOJ3259 Counting numbersSOJ3262 Square Fields(二分+状态DP)SOJ3371 Mixed Up Cows—————最优化之排序(思考两个元素之间的先后关系,以此得出一个二元比较关系,并验证此关系可传递,反对称,进而排序)SOJ2509 The Milk QueueSOJ2547 cardsSOJ2850 Protecting the FlowersSOJ2957 Setting ProblemsSOJ3167 ComputerSOJ3331 Cards(2547加强版)SOJ3327 Dahema’s Computer(通过此题学会排序)—————–最优化之必要条件枚举(思考最优解所具有的性质,得出最优解的一个强必要条件,在此基础上枚举)SOJ3317 FGJ’s PlaneSOJ3429 Food portion sizes——————————–贪心—————————————SOJ1078 BlueEyes’ ScheduleSOJ1203 Pass-MurailleSOJ1673 Gone FishingSOJ2645 Buy One Get One FreeSOJ2701 In a CycleSOJ2876 Antimonotonicity(经典模型O(n)算法)SOJ3343 Tower——————————–搜索—————————————SOJ1626 squareSOJ2061 8 puzzleSOJ2485 SudokuSOJ1045 SticksSOJ2736 FliptileSOJ2771 Collecting StonesSOJ2715 Maze BreakSOJ2829 binary strings(双向BFS)SOJ3330 Windy’s Matrix(BFS)——————————–DFA—————————————-—————状态矩阵+DFA:SOJ1826 Number SequenceSOJ2552 Number of TilingsSOJ2919 Matrix Power Series (学习矩阵的快速乘法从此开始)SOJ2920 Magic BeanSOJ3021 Quad TilingSOJ3046 Odd Loving BakersSOJ3176 E-stringSOJ3246 Tiling a Grid With DominoesSOJ3323 K-Satisfied NumbersSOJ3337 Wqb’s Word—————-DFA+DPSOJ1112 Repeatless Numbers(DFA+二分)SOJ2913 Number SubstringSOJ2826 Apocalypse SomedaySOJ3030 DNA Sequence(AC自动机+矩阵二分)SOJ3128 windy和水星—水星数学家1SOJ3182 Windy numbers———————————图论———————————————————–最短路+最小生成树+强连通SOJ2832 Mars city(强连通分支,算法多多)SOJ2198 HighwaysSOJ3427 Dark roads(最小生成树,kruskal:快排+并查集)SOJ3346 Best Spot(最短路,N^3放心的写)SOJ3013 tree(树的最大—最小划分问题,二分+贪心,勉强算在图论里面吧。

动态规划题库

动态规划题库
输出格式: 答案输出到当前目录下的文本文件“bridge.out”中。 文件只有一行,输出全部车辆通过小桥的最短时间(s),精确到小数点后一位。
输入输出样例:
bridge.in bridge.out 100 5 10 40 25 50 20 70 10 12 50 9 70 49 30 38 25 27 50 19 70 75.0
动态规划题库
0. 最大子串和 〖题目描述〗 在一个一维数组里找出连续的几个数,使数的总和最大。
1. 最短路(Shortest path) 〖题目描述〗 从 A 地到 E 地可以经过不同的路径,不同的路有不同的发费,问如何走可以得到耗费最少的 路径?
2. 最小中间和数 〖题目描述〗 给定一个正整数序列 a1,a2,a3,……,an 不改变序列中每个在序列中的位置,把它们相加, 并括号记每次加法所得的和,称为中间和。问如何加括号可以使所有的中间和相加为最少。
Ship.in 30 4 7 22 4 26 10 3 15 12 98 17 17 42 00
Ship.out 4
6.过桥问题 〖题目描述〗
GDOI 工作组遇到了一个运输货物的问题。现在有 N 辆车要按顺序通过一个单向的小桥,
-2-
由于小桥太窄,不能有两辆车并排通过,所以在桥上不能超车。另外,由于小桥建造的时间 已经很久,所以小桥只能承受有限的重量,记为 Max(吨)。所以,车辆在过桥的时候必须要 有管理员控制,将这 N 辆车按初始顺序分组,每次让一个组过桥,并且只有在一个组中所有 的车辆全部过桥以后才让下一组车辆上桥。现在,每辆车的重量和最在速度是已知的,而每 组车的过桥时间由该组中速度最慢的那辆车决定。 现在请你编一个程序,将这 N 辆车分组,使得全部车辆通过小桥的时间最短。

动态规划习题集全

动态规划习题集全

动态规划专题训练护卫队【问题描述】护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥。

因为街道是一条单行道,所以任何车辆都不能超车。

桥能承受一个给定的最大承载量。

为了控制桥上的交通,桥两边各站一个指挥员。

护卫车队被分成几个组,每组中的车辆都能同时通过该桥。

当一组车队到达了桥的另一端,该端的指挥员就用电话通知另一端的指挥员,这样下一组车队才能开始通过该桥。

每辆车的重量是已知的。

任何一组车队的重量之和不能超过桥的最大承重量。

被分在同一组的每一辆车都以其最快的速度通过该桥。

一组车队通过该桥的时间是用该车队中速度最慢的车通过该桥所需的时间来表示的。

问题要求计算出全部护卫车队通过该桥所需的最短时间值。

【输入格式】输入文件中的第一行包含三个正整数(用空格隔开),第一个整数表示该桥所能承受的最大载重量(用吨表示),第二个整数表示该桥的长度(用千米表示),第三个整数表示该护卫队中车辆的总数(n<1000)。

接下来的几行中,每行包含两个正整数W和S(用空格隔开),W表示该车的重量(用吨表示),S表示该车过桥能达到的最快速度(用千米/小时表示)。

车子的重量和速度是按车子排队等候时的顺序给出的。

【输出格式】输出文件中应该是一个实数,四舍五入精确到小数点后1位,表示整个护卫车队通过该桥所需的最短时间(用分钟表示)。

【输入输出样例】输入:100 5 1040 2550 2050 2070 1012 509 7049 3038 2527 5019 70输入:75.0DOLLARS【问题描述】在以后的若干天里戴维将学习美元与德国马克的汇率。

编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值。

【输入格式】输入文件中的第一行是一个自然数N(1<=N<=100),表示戴维学习汇率的天数。

接下来的N行中每行是一个自然数A(1<=A<=1000)。

第i+1行的A表示预先知道的第i+1天的平均汇率,在这一天中,戴维既能用100美元买A马克也能用A马克购买100美元。

常见动态规划题目详解

常见动态规划题目详解

常见动态规划题⽬详解1.爬楼梯题⽬描述:假设你正在爬楼梯。

需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。

你有多少种不同的⽅法可以爬到楼顶呢?注意:给定 n 是⼀个正整数。

⽰例 1:输⼊: 2输出: 2解释:有两种⽅法可以爬到楼顶。

1. 1 阶 + 1 阶2. 2 阶⽰例 2:输⼊: 3输出: 3解释:有三种⽅法可以爬到楼顶。

1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶实现代码:class Solution {public:int climbStairs(int n) {vector<int> a(n);a[0] = 1;a[1] = 2;if(n == 1){return 1;}if(n == 2){return 2;}for(int i = 2; i < n;i++){a[i] = a[i - 1] + a[i - 2];}return a[n - 1];}};2.变态跳台阶题⽬描述:⼀只青蛙⼀次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。

求该青蛙跳上⼀个n级的台阶总共有多少种跳法。

实现代码:class Solution {public:int jumpFloorII(int number) {if(number == 0){return 0;}int total = 1;for(int i = 1; i < number; i++){total *= 2;}return total;}};3.n年后⽜的数量题⽬描述:假设农场中的母⽜每年会产⽣⼀头⼩母⽜,并且永远不会死。

第⼀年农场中只有⼀头成熟的母⽜,第⼆年开始,母⽜开始⽣⼩母⽜,每只⼩母⽜三年之后成熟⼜可以⽣⼩母⽜,给定整数N,求N年后母⽜的数量。

实现代码:class solution{ public: int f(int n){ if(n < 1){ return 0; } if(n == 1|| n== 2||n == 3){ return n; } int res = 3; int pre = 2; int prepre = 1; int tmp1=0; int tmp2 = 0; for(int i = 4;i < n;i++){ tmp1 = res; tmp2 = pre; res = pre + prepre; pre = tmp1; prepre = tmp2; } return res; }};4.矩形覆盖题⽬描述:我们可以⽤2*1的⼩矩形横着或者竖着去覆盖更⼤的矩形。

100个动态规划方程

100个动态规划方程

100个动规方程 1. 资源问题1-----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2. 资源问题2------01背包问题 F[I,j]:=max(f[i-1,j-v]+w,f[i-1,j]); 3. 线性动态规划1-----朴素最长非降子序列 F:=max{f[j]+1} 4. 剖分问题1-----石子合并 F[i,j]:=min(f[i,k]+f[k+1,j]+sum[i,j]); 5. 剖分问题2-----多边形剖分 F[I,j]:=min(f[i,k]+f[k,j]+a[k]*a[j]*a); 6. 剖分问题3------乘积最大 f[i,j]:=max(f[k,j-1]*mult[k,i]); 7. 资源问题3-----系统可靠性(完全背包) F[i,j]:=max{f[i-1,j-c*k]*P[I,x]} 8. 贪心的动态规划1-----快餐问题 F[i,j,k]:=max{f[i-1,j',k']+(T-(j-j')*p1-(k-k')*p2) div p3} 9. 贪心的动态规划2----过河 f=min{{f(i-k)} (not stone) {f(i-k)}+1} (stone); +贪心压缩状态 10. 剖分问题4-----多边形-讨论的动态规划 F[i,j]:=max{正正 f[I,k]*f[k+1,j]; 负负 g[I,k]*f[k+1,j]; 正负 g[I,k]*f[k+1,j]; 负正 f[I,k]*g[k+1,j];} g 为min 11. 树型动态规划1-----加分二叉树 (从两侧到根结点模型) F[I,j]:=max{f[I,k-1]*f[k+1,j]+c[k]} 12. 树型动态规划2-----选课 (多叉树转二叉树,自顶向下模型) F[I,j]表示以i 为根节点选j 门功课得到的最大学分 f[i,j]:=max{f[t.l,k]+f[t.r,j-k-1]+c} 13. 计数问题1-----砝码称重 f[f[0]+1]=f[j]+k*w[j]; (1<=i<=n; 1<=j<=f[0]; 1<=k<=a;)14. 递推天地1------核电站问题 f[-1]:=1; f[0]:=1; f:=2*f[i-1]-f[i-1-m] 15. 递推天地2------数的划分 f[i,j]:=f[i-j,j]+f[i-1,j-1]; 16. 最大子矩阵1-----一最大01子矩阵 f[i,j]:=min(f[i-1,j],v[i,j-1],v[i-1,j-1])+1; ans:=maxvalue(f); 17. 判定性问题1-----能否被4整除 g[1,0]:=true; g[1,1]:=false; g[1,2]:=false; g[1,3]:=false; g[i,j]:=g[i-1,k] and ((k+a[i,p]) mod 4 = j) 18. 判定性问题2-----能否被k 整除 f[I,j±n mod k]:=f[i-1,j]; -k<=j<=k; 1<=i<=n 20. 线型动态规划2-----方块消除游戏 f[i,i-1,0]:=0 f[i,j,k]:=max{f[i,j-1,0]+sqr(len(j)+k), f[i,p,k+len[j]]+f[p+1,j-1,0]} ans:=f[1,m,0] 21. 线型动态规划3-----最长公共子串,LCS 问题 f[i,j]={0(i=0)&(j=0); f[i-1,j-1]+1 (i>0,j>0,x=y[j]); max{f[i,j-1]+f[i-1,j]}} (i>0,j>0,x<>y[j]); 22. 最大子矩阵2-----最大带权01子矩阵O(n^2*m) 枚举行的起始,压缩进数列,求最大字段和,遇0则清零 23. 资源问题4-----装箱问题(判定性01背包) f[j]:=(f[j] or f[j-v]);24. 数字三角形1-----朴素の数字三角形 f[i,j]:=max(f[i+1,j]+a[I,j],f[i+1,j+1]+a[i,j]);25. 数字三角形2-----晴天小猪历险记之Hill 同一阶段上暴力动态规划if[i,j]:=min(f[i,j-1],f[I,j+1],f[i-1,j],f[i-1,j-1])+a[i,j] 26. 双向动态规划1数字三角形3 -----小胖办证 f[i,j]:=max(f[i-1,j]+a[i,j],f[i,j-1]+a[i,j],f[i,j+1]+a[i,j])27. 数字三角形4-----过河卒 //边界初始化 f[i,j]:=f[i-1,j]+f[i,j-1]; 28. 数字三角形5-----朴素的打砖块 f[i,j,k]:=max(f[i-1,j-k,p]+sum[i,k],f[i,j,k]); 29. 数字三角形6-----优化的打砖块 f[I,j,k]:=max{g[i-1,j-k,k-1]+sum[I,k]} 30. 线性动态规划3-----打鼹鼠’ f:=f[j]+1;(abs(x-x[j])+abs(y-y[j])<=t-t[j]) 31. 树形动态规划3-----贪吃的九头龙 32. 状态压缩动态规划1-----炮兵阵地 Max(f[Q*(r+1)+k],g[j]+num[k]) If (map and plan[k]=0) and ((plan[P] or plan[q]) and plan[k]=0) 33. 递推天地3-----情书抄写员 f:=f[i-1]+k*f[i-2] 34. 递推天地4-----错位排列 f:=(i-1)(f[i-2]+f[i-1]); f[n]:=n*f[n-1]+(-1)^(n-2); 35. 递推天地5-----直线分平面最大区域数 f[n]:=f[n-1]+n :=n*(n+1) div 2 + 1; 36. 递推天地6-----折线分平面最大区域数 f[n]:=(n-1)(2*n-1)+2*n; 37. 递推天地7-----封闭曲线分平面最大区域数 f[n]:=f[n-1]+2*(n-1) :=sqr(n)-n+2; 38 递推天地8-----凸多边形分三角形方法数 f[n]:=C(2*n-2,n-1) div n; 对于k 边形 f[k]:=C(2*k-4,k-2) div (k-1); //(k>=3) 39 递推天地9-----Catalan 数列一般形式 1,1,2,5,14,42,132 f[n]:=C(2k,k) div (k+1);40 递推天地10-----彩灯布置排列组合中的环形染色问题f[n]:=f[n-1]*(m-2)+f[n-2]*(m-1); (f[1]:=m; f[2]:=m(m-1);41 线性动态规划4-----找数线性扫描sum:=f+g[j];(if sum=Aim then getout; if sum<Aim then inc(i) else inc(j);)42 线性动态规划5-----隐形的翅膀min:=min{abs(w/w[j]-gold)};if w/w[j]<gold then inc(i) else inc(j);43 剖分问题5-----最大奖励f:=max(f,f[j]+(sum[j]-sum)*i-t44 最短路1-----Floydf[i,j]:=max(f[i,j],f[i,k]+f[k,j]);ans[q[i,j,k]]:=ans[q[i,j,k]]+s[i,q[i,j,k]]*s[q[i,j,k],j]/s[i,j];45 剖分问题6-----小H的小屋F[l,m,n]:=f[l-x,m-1,n-k]+S(x,k);46 计数问题2-----陨石的秘密(排列组合中的计数问题)Ans[l1,l2,l3,D]:=f[l1+1,l2,l3,D+1]-f[l1+1,l2,l3,D];F[l1,l2,l3,D]:=Sigma(f[o,p,q,d-1]*f[l1-o,l2-p,l3-q,d]);47 线性动态规划------合唱队形两次F:=max{f[j]+1}+枚举中央结点48 资源问题-----明明的预算方案:加花的动态规划f[i,j]:=max(f[i,j],f[l,j-v-v[fb]-v[fa]]+v*p+v[fb]*p[fb]+v[fa]*p[ fa]);49 资源问题-----化工场装箱员50 树形动态规划-----聚会的快乐f[i,2]:=max(f[i,0],f[i,1]);f[i,1]:=sigma(f[t^.son,0]);f[i,0]:=sigma(f[t^.son,3]);51 树形动态规划-----皇宫看守f[i,2]:=max(f[i,0],f[i,1]);f[i,1]:=sigma(f[t^.son,0]); f[i,0]:=sigma(f[t^.son,3]);52 递推天地-----盒子与球f[i,1]:=1;f[i,j]:=j*(f[i-1,j-1]+f[i-1,j]);53 双重动态规划-----有限的基因序列f:=min{f[j]+1}g[c,i,j]:=(g[a,i,j] and g[b,i,j]) or (g[c,i,j])54 最大子矩阵问题-----居住空间f[i,j,k]:=min(min(min(f[i-1,j,k],f[i,j-1,k]),min(f[i,j,k-1],f[i-1,j-1,k])),min(min(f[i-1,j,k-1],f[i,j-1,k-1]),f[i-1,j-1,k-1]))+1;55 线性动态规划------日程安排f:=max{f[j]}+P[I]; (e[j]<s)56 递推天地------组合数C[I,j]:=C[i-1,j]+C[I-1,j-1]C[I,0]:=157 树形动态规划-----有向树k中值问题F[I,r,k]:=max{max{f[l,I,j]+f[r,I,k-j-1]},f[f[l,r,j]+f[r,r,k-j]+w[I,r]]}58 树形动态规划-----CTSC 2001选课F[I,j]:=w(if i∈P)+f[l,k]+f[r,m-k](0≤k≤m)(if l<>0)59 线性动态规划-----多重历史f[i,j]:=sigma{f[i-k,j-1]}(if checked)60 背包问题(+-1背包问题+回溯)-----CEOI1998Substractf[i,j]:=f[i-1,j-a] or f[i-1,j+a]61 线性动态规划(字符串)-----NOI 2000 古城之谜f[i,1,1]:=min{f[i+length(s),2,1],f[i+length(s),1,1]+1}f[i,1,2]:=min{f[i+length(s),1,2]+words[s],f[i+length(s),1,2]+words[s]}62 线性动态规划-----最少单词个数f[i,j]:=max{f[I,j],f[u-1,j-1]+l}63 线型动态规划-----APIO2007 数据备份状态压缩+剪掉每个阶段j前j*2个状态和j*2+200后的状态贪心动态规划f:=min(g[i-2]+s,f[i-1]);64 树形动态规划-----APIO2007 风铃f:=f[l]+f[r]+{1 (if c[l]<c[r])}g:=1(d[l]<>d[r]) 0(d[l]=d[r])g[l]=g[r]=1 then Halt;65 地图动态规划-----NOI 2005 adv19910F[t,i,j]:=max{f[t-1,i-dx[d[[t]],j-dy[d[k]]]+1],f[t-1,i,j];66 地图动态规划-----优化的NOI 2005 adv19910F[k,i,j]:=max{f[k-1,i,p]+1} j-b[k]<=p<=j;67 目标动态规划-----CEOI98 subtraF[I,j]:=f[I-1,j+a] or f[i-1,j-a]68 目标动态规划----- Vijos 1037搭建双塔问题F[value,delta]:=g[value+a,delta+a] or g[value,delta-a]69 树形动态规划-----有线电视网f[i,p]:=max(f[i,p],f[i,p-q]+f[j,q]-map[i,j])leaves>=p>=l, 1<=q<=p;70 地图动态规划-----vijos某题F[I,j]:=min(f[i-1,j-1],f[I,j-1],f[i-1,j]);71 最大子矩阵问题-----最大字段和问题f:=max(f[i-1]+b,b); f[1]:=b[1]72 最大子矩阵问题-----最大子立方体问题枚举一组边i的起始,压缩进矩阵B[I,j]+=a[x,I,j]枚举另外一组边的其实,做最大子矩阵73 括号序列-----线型动态规划f[I,j]:=min(f[I,j],f[i+1,j-1](ss[j]=”()”or(”[]”)),f[I+1,j+1]+1 (s[j]=”(”or”[” ] , f[I,j-1]+1(s[j]=”)”or”]” )74 棋盘切割-----线型动态规划f[k,x1,y1,x2,y2]=min{min{f[k-1,x1,y1,a,y2]+s[a+1,y1,x2,y2],f[k-1,a+1,y1,x2,y2]+s[x1,y1,a,y2]min{}}75 概率动态规划-----聪聪和可可(NOI2005)x:=p[p[i,j],j]f[I,j]:=(f[x,b[j,k]]+f[x,j])/(l[j]+1)+1f[I,i]=0f[x,j]=176 概率动态规划-----血缘关系F[A, B]=(f[A0, B]+P[A1, B])/2f[I,i]=1f[I,j]=0(I,j无相同基因)77 线性动态规划-----决斗F[I,j]=(f[I,j] and f[k,j]) and (e[I,k] or e[j,k]),i<k<j78 线性动态规划-----舞蹈家F[x,y,k]=min(f[a[k],y,k+1]+w[x,a[k]],f[x,a[k],k+1]+w[y,a[k]]) 79 线性动态规划-----积木游戏F[I,a,b,k]=max(f[I,a+1,b,k],f[i+1,a+1,a+1,k’],f[I,a+1,a+1,k’]) 80 树形动态规划(双次记录)----NOI2003 逃学的小孩朴素的话枚举节点i和离其最远的两个节点j,k O(n^2)每个节点记录最大的两个值,并记录这最大值分别是从哪个相邻节点传过来的。

动态规划算法题(5题)

动态规划算法题(5题)

动态规划算法题(5题)1、题⽬描述(⽹易)有 n 个学⽣站成⼀排,每个学⽣有⼀个能⼒值,⽜⽜想从这 n 个学⽣中按照顺序选取 k 名学⽣,要求相邻两个学⽣的位置编号的差不超过d,使得这 k 个学⽣的能⼒值的乘积最⼤,你能返回最⼤的乘积吗?输⼊描述:每个输⼊包含 1 个测试⽤例。

每个测试数据的第⼀⾏包含⼀个整数 n (1 <= n <= 50),表⽰学⽣的个数,接下来的⼀⾏,包含 n 个整数,按顺序表⽰每个学⽣的能⼒值 ai(-50 <= ai <= 50)。

接下来的⼀⾏包含两个整数,k 和 d (1 <= k <= 10, 1 <= d <= 50)。

输出描述:输出⼀⾏表⽰最⼤的乘积。

试题分析:本题要使⽤动态规划来解,动态规划的特点:1.求解的是最优化问题;2.可以分解为最优⼦结构本题可以先求解在第i个学⽣的位置下,j(j<K)个学⽣的能⼒值的最⼤值,得到所有学⽣位置下j个学⽣的能⼒值的最⼤值;在j个学⽣的情况下,得到j+1个学⽣的最⼤值,样例输出: 10 8 7 2 -7 9 5 4 10 -7 1 3 3输出: 630如上,第⼀步先计算k=2的情况:7:在d=3的情况下,最⼤最⼩值都为562:在d=3的情况下,最⼤值为16,最⼩值为14-7:在d=3的情况下,最⼤值为-14,最⼩值为-56......得到第⼀趟的结果k=3的情况下(这⾥以第⼀趟的结果为基础,只有这样就不需要考虑第⼀趟中d=3的限制):2:在d=3的情况下,最⼤最⼩值都为112(56*2)-7:在d=3的情况下,最⼤值为-98(14*-7)最⼩值为-392(56*-7)9:在d=3的情况下,最⼤值为504(56*9)最⼩值为-504(-56*9)......得到第⼆趟的结果返回最⼤值就是最后的结果#-*- coding:utf-8 -*-n=input()array=[int(i) for i in raw_input().split()]k,d=[int(i) for i in raw_input().split()]# n=36array_max=array_min=array#轮询k-1趟即可for i in range(0,k-1):_max=[-float('inf')]*n#将最⼤值的数组赋值⽆穷⼩_min=[float('inf')]*n#将最⼩值的数组赋值⽆穷⼤for j in range(i+1,n):if j<=d+i:#下⾯对应的min、max都是考虑到array[j]为负值的情况下temp_max = max(max(ii*array[j] for ii in array_max[i:j]),max(ii*array[j] for ii in array_min[i:j]))temp_min = min(min(ii*array[j] for ii in array_max[i:j]),min(ii*array[j] for ii in array_min[i:j]))else:temp_max = max(max(ii*array[j] for ii in array_max[j-d:j]),max(ii*array[j] for ii in array_min[j-d:j]))temp_min = min(min(ii*array[j] for ii in array_max[j-d:j]),min(ii*array[j] for ii in array_min[j-d:j]))_max[j]=temp_max_min[j]=temp_minarray_max=_maxarray_min=_minprint array_maxprint array_minprint max(array_max)2、题⽬描述(腾讯):腾讯⼤厦有39层,你⼿⾥有两颗⼀抹⼀眼的玻璃珠。

动态规划训练题目

动态规划训练题目

动态规划题目【引例1、上楼梯】一个含有n阶的楼梯,一次可以走1阶或2阶,从底走到顶一共有几种走法?n<=90。

【引例2、数字三角形】a1有一个数字三角形,编程求从最顶层到最底层的一条路所经过位置上数字之和的最大值。

每一步只能向左下或右下方向走。

下图数据的路应为7->3->8->7->5,和为30。

输入:文件输入(从键盘读入文件名),文件格式:第一行:R(1<=R<=10000),数字三角形共有R行;以下R行:依次表示数字三角形中每行中的数字。

每个数都是非负的,且<=100.输出:一个正整数,路径上数字之和的最大值。

输入样例:573 88 1 02 7 4 44 5 2 6 5输出样例:30【引例3、求最大连续子序列的和。

】a2输入:第一行:n(N<500)第二行:n个整数(-3000,3000)。

输出:最大连续子序列的和。

样例:输入:7-6 4 -1 3 2 -3 2输出:81、最长递增序列b1设有整数序列b1,b2,b3,…,bm,若存在i1<i2<i3<…<in,且bi1<bi2<bi3<…<bin,则称b1,b2,b3,…,bm 中有长度为n的递增序列bi1,bi2,bi3,…,bin。

求序列b1,b2,b3,…,bm中最大递增序列长度(n)。

输入:m(<1000),整数序列输出:最大长度n样例:输入:7-6 4 -1 3 8 -3 2输出:42、背包问题b2设有n种物品,每种物品有一个重量及一个价值。

同时有一个背包,最大载重量为W,今从n种物品中选取若干件,使其重量的和小于等于W,而价值的和为最大。

输入数据:第一行两个数:物品总数N(<100),背包载重量W(<100);两个数用空格分隔;第二行N个数,为N种物品重量Wi;两个数用空格分隔;第三行N个数,为N种物品价值Vi; 两个数用空格分隔;输出数据:第一行总价值;输入样例:4 103 4 5 77 15 20 25输出样例:353、迷宫寻宝b3一个n行m列的迷宫(1<=n,m<=50),入口在左上角,规定只能向下或向右走。

大白书刷题计划

大白书刷题计划
例题 4 LA3708 Graveyard
例题 5 UVa10881 Piotr's Ants
例题 6 LA2995 Image is Everything
例题 7 UVa11464 Even Party
例题 8 LA3401 Colored Cubes 除了解题代码之外还提供生成常量表的代码
例题 24 UVa10755 Garbage heap 19:39 2016/9/3
例题 25 LA2965 Jurassic Remains 0:00 2016/9/1
动态规划 (Dynamic Programming)
例题 26 LA3882 And Then There Was One 10:18 2016/9/1
置换(Permutation)
例题18 UVa10294 Arif in Dhaka (First Love part 2)
例题19 LA3641 Leonardo's Notebook
例题20 UVa11077 Find the Permutations
例题21 LA3510 Pixel Shuffle
例题13 LA3026 Period
例题14 LA4670 Dominating Patterns
例题15 UVa11468 Substring
例题16 UVa11019 Matrix Matcher
例题17 UVa11107 Life Forms 倍增法实现的后缀数组,主算法为二分+线性扫描判定
例题 17 UVa11462 Age Sort
上面的例题在12:51 2016/8/31之前已经大部分做完,少量题没法写。。。

UVALive-7197Axles动态规划多个背包问题

UVALive-7197Axles动态规划多个背包问题

UVALive-7197Axles动态规划多个背包问题题意需要⽣产n种(2<=n<=14)零件,每种零件可以⽤两种材料制作,对这两种材料的消耗相同,产出价值不同。

但是⼀种零件⼀旦选定原材料就不能更改。

给这两种原材料的量和各零件⽣产⽅案,问⽣产最⼤价值多少。

思路⼀开始WA好⼏次,没发现原材料就不能更改的条件呵呵。

⾸先对零件分个类,⽤第⼀种材料还是第⼆种。

然后分别做两个完全背包即可-_-总复杂度O(nm2^n)顺便,这种多背包解决问题的思考⽅向,在另⼀个题⽬⾥提到了。

关于理解背包的本质,就在那道题了,这道题也是好题。

提交过程WA原材料就不能更改AC代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxw=2e3+20, INF=0x3f3f3f3f;const int maxn=100+20;int n, q, r;int wei[maxn], val_1[maxn], val_2[maxn];int f[maxw], g[maxw], ans;bool vis[maxn];void compKnap(int dp[], int total, int cost, int val){for (int i=cost; i<=total; i++)dp[i]=max(dp[i], dp[i-cost]+val);}void dfs(int dep){if (dep==n+1){memset(f, 0, sizeof(f));memset(g, 0, sizeof(g));for (int i=1; i<=n; i++){if (vis[i]) compKnap(f, q, wei[i], val_1[i]);else compKnap(g, r, wei[i], val_2[i]);}ans=max(ans, f[q]+g[r]);}else{vis[dep]=true; dfs(dep+1);vis[dep]=false;dfs(dep+1);}}int main(void){while (scanf("%d", &n)==1 && n!=-1){for (int i=1; i<=n; i++)scanf("%d%d%d", &wei[i], &val_1[i], &val_2[i]);scanf("%d%d", &q, &r);ans=0;dfs(1);printf("%d\n", ans);}return 0;}Time Memory Length Lang Submitted 1699ms None1020C++ 5.3.02018-08-21 05:35:04。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

u v a动态规划题列表SANY GROUP system office room 【SANYUA16H-SANYHUASANYUA8Q8-103 Stacking Boxes108 Maximum Sum maximum111 History Grading116 Unidirectional TSP147 Dollars164 String Computer166 Making Change231 Testing the Catcher348 Optimal Array Multiplication Sequence 357 Let Me Count The Ways437 The Tower of Babylon473 Raucous Rockers481 What Goes Up497 Strategic Defense Initiative507 Jill Rides Again531 Compromise562 Dividing Coins590 Always on the Run607 Scheduling Lectures620 Cellular Structure624 CD674 Coin Change702 The Vindictive Coach709 Formatting Text711 Dividing up714 Copying Books787 Maximum Sub-sequence Product825 Walking on the Safe Side836 Largest Submatrix882 The Mailbox Manufacturers Problem907 Winterim Backpacking Trip909 The BitPack Data Compression Problem 910 TV game926 Walking Around Wisely944 Happy Numbers986 How Many?988 Many paths, one destination990 Diving For Gold991 Safe Salutations10003 Cutting Sticks10029 Edit Step Ladders10032 Tug of War10036 Divisibility10051 Tower of Cubes10066 The Twin Towers10069 Distinct Subsequences10074 Take the Land10081 Tight words10100 Longest Match10111 Find the Winning Move10118 Free Candies10128 Queue10130 SuperSale10131 Is Bigger Smarter?10149 Yahtzee10151 Spaghetti10154 Weights and Measures10157 Expressions10159 Star10163 Storage Keepers10166 Travel10169 Urn-ball probabilities10185 Phylogenetic Trees Inherited 10192 Vacation10201 Adventures in Moving - Part IV 10207 The Unreal Tournament10247 Complete Tree Labeling!10259 Hippity Hopscotch10261 Ferry Loading10271 Chopsticks10280 Old Wine Into New Bottles 10285 Longest Run on a Snowboard 10296 Jogging Trails10304 Optimal Binary Search Tree 10306 e-Coins10313 Pay the Price10340 All in All10358 Matrix10400 Game Show Math10401 Injured Queen Problem10404 Bachet's Game10405 Longest Common Subsequence10453 Make Palindrome10465 Homer Simpson10482 The Candyman Can10496 Collecting Beepers10534 Wavio Sequence10549 Russian Dolls10558 A Brief Gerrymander10559 Blocks10564 Paths Through The Hourglass 10593 Kites10599 Robots (II)10604 Chemical Reaction10605 Mines for Diamonds10616 Divisible Group Sums10617 Again Palindromes10618 Tango Tango Insurrection 10625 GNU = GNU'sNotUnix10626 Buying Coke10635 Prince and Princess10643 Facing Problem With Trees 10645 Menu10648 Chocolate Box10651 Pebble Solitaire10654 The Uxuhul Voting System 10663 Non-Powerful Subsets10664 Luggage10665 Diatribe against Pigeonholes 10667 Largest Block10681 Teobaldo's Trip10684 The Jackpot10688 The Poor Giant10690 Expression Again10700 Camel Trading10702 Travelling Salesman10712 Count the Numbers10721 Bar Codes10722 Super Lucky Numbers10723 Cyborg Genes10739 String to Palindrome10755 Garbage Heap10759 Dice Throwing10817 Headmaster's Headache 10819 Trouble of 13-Dots10827 Maximum Sum on a Torus 10891 Game of Sum10910 Mark's Distribution10911 Forming Quiz Teams10912 Simple Minded Hashing 10913 Walking on a Grid10917 Walk Through the Forest 10918 Tri Tiling10943 How do you add?10953 Stochastic Digit Generator 10970 Big Chocolate11002 Towards Zero11003 Boxes11008 Antimatter Ray Clearcutting 11022 String Factoring11026 A Grouping Problem11052 Economic Phone Calls11081 Strings11087 Divisibility Testing11125 Arrange Some Marbles11126 Relaxed Golf11133 Eigensequences11137 Ingenuous Cubrency11149 Power of Matrix11151 Longest Palindrome11153 Museums11156 Continuous Drawing11158 Elegant Permuted Sum11162 Independent Attacking Zones 11171 SMS11176 Winning Streak11238 Innumerous Bowling Games 11240 Antimonotonicity11258 String Partition11259 Coin Changing Again11284 Shopping Trip11285 Exchange Rates11307 Alternative Arborecsence 11311 Exclusively Edible11324 The Largest Clique11331 The Joys of Farming11341 Term Strategy11361 Investigating Div-Sum Property 11368 Nested Dolls11370 Moogle11372 Arranging11375 Matches11391 Blobs in the Board11394 Digit Blocks11400 Lighting System Design11404 Palindromic Subsequence11420 Chest of Drawers11421 Arranging Cards11427 Expect the Expected11432 Busy Programmer11438 Integer Transmission11441 Encoding/Decoding11450 Wedding Shopping11471 Arrange the Tiles11472 Beautiful Numbers11481 Arrange the Numbers11485 Extreme Discrete Simulation 11500 Vampires11502 Rocket Stages11514 Batman11515 Cranes11517 Exact Change11523 Recycling11532 Simple Adjacency Maximization 11539 Another Word Game11540 Sultan's Chandelier11552 Fewest Flops11553 Grid Game11555 Aspen Avenue11560 Fixing the Bugs11569 Lovely Hint11578 Situp Benches11584 Partitioning By Palindromes 11586 Train Tracks11587 Brick Game11590 Prefix Lookup11598 Optimal Segments11600 Masud Rana11611 Colored Tiles11617 An Odd Love11625 Nice Prefixes strings 11632 Elias Gamma Coding 11643 Knight Tour11654 Arithmetic Subsequence 11655 Water Land11658 Best Coalitions11680 Dragster11691 Allergy Test11698 Code Permutations11700 Pipes11708 Lexicographical Ranking 11721 Instant View of Big Bang 11725 Colorful Board11753 Creating Palindrome 11755 Table Tennis11758 Left Right11762 Race to 111766 Racing Car Computer 11780 Miles 2 Km11782 Optimal Cut11790 Murcia's Skyline。

相关文档
最新文档