UVA10003 【Cutting Sticks】】的更多相关文章

[分析] 设d(i,j)为切割小木棍i-j的最优费用,则d(i,j)=min{d(i,k)+d(k,j)|i<k<j}+a[j]-a[i],其 中最后一项a[j]-a[i]代表第一刀的费用.切完之后,小木棍变成i-k和k-j两部分,状态转 移方程由此可得.把切割点编号为1-n,左边界编号为0,右边界编号为n+1,则答案 为d(0,n+1). 状态有O(n2)个,每个状态的决策有O(n)个,时间复杂度为O(n3). [实现] 递推版本要枚举区间长,我个人认为比较僵硬,于是我写的是记忆化搜索. 附…
[Link]: [Description] 给你一根长度为l的棍子; 然后有n个切割点; 要求在每个切割点都要切割一下; 这样,最后就能形成n+1根小棍子了; 问你怎样切割,消耗的体力最小; 认为,消耗的体力,为每次切的那根棍子的长度; [Solution] 在开头增加一个位置0,在结尾增加一个位点L; 这样,在算长度的时候比较好算一点; 长度不再是一点一点的了,而是一段一段的; (即i..i+1代表了一段); 设f[i][j]表示,将i..j这一段切掉需要花费的最小体力值; 则在记忆化搜索中枚…
题目:uva 10003 Cutting Sticks 题意:给出一根长度 l 的木棍,要截断从某些点,然后截断的花费是当前木棍的长度,求总的最小花费? 分析:典型的区间dp,事实上和石子归并是一样的,花费就是石子的和.那么久不用多说了. AC代码: #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include <map> #include <…
[题目链接] http://poj.org/problem?id=1011 [算法] 深搜剪枝 首先我们枚举木棍的长度i,那么就有s/i根木棍,其中s为木棍长度的总和,朴素的做法就是对每种长度进行搜索,然而这样是会超时的,考虑优化 : 优化1 : 优化搜索顺序,将这些木棍的长度从大到小排序,搜索时按递减的顺序选取木棍(优先选择长的木棍) 优化2 : 排除等效亢余,对于每根木棒,记录最近一次尝试的木棒,如果有与最近一次同样长度的木棒,则不尝试,因为这必定也是失败的 优化3 : 排除等效亢余,   …
[题目链接] http://codeforces.com/contest/451/problem/A [算法] 若n和m中的最小值是奇数,则先手胜,否则后手胜 [代码] #include<bits/stdc++.h> using namespace std; int n,m; int main() { scanf("%d%d",&n,&m); == ) printf("Malvika\n"); else printf("Aksh…
[题目链接] http://poj.org/problem?id=2311 [算法] 博弈论——SG函数 [代码] #include <algorithm> #include <bitset> #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex> #include <cstdio> #…
[题目链接]:http://codeforces.com/contest/794/problem/B [题意] 给你一个等腰三角形; 它的底边为1; 高为h; 要求你把这个等腰三角形分成n份面积相等的部分; 而且是用平行于底面的横线分的; 让你求出这n-1条横线的位置在哪里; [题解] 数学: 从上往下推; 容易得到高的公式; [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l…
[Link]: [Description] 给你最多n个棍子; (n< = 64) 每根棍子长度(1..50) 问你这n根棍子,可以是由多少根长度为x的棍子分割出来的; x要求最小 [Solution] 首先,将各根棍子的长度求和->sum 最后的长度x肯定是sum的因子; 则枚举x从各根棍子长度的最大值到sum作为因子; 枚举量假设为len; 然后一直用剩余的棍子去凑这个长度len 凑够了,就重新选择剩下的棍子,继续凑len; 剪枝: 1.还需要凑的量为len,但是尝试用完某根棍子之后,无法…
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Generous sponsors of the olympiad in which Chloe and Vladik took part allowed all the participants to choose a prize for them on their own. Chri…
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Bash wants to become a Pokemon master one day. Although he liked a lot of Pokemon, he has always been fascinated by Bulbasaur the most. Soon, thi…