摘要: First bloodUVA11729 Commando Warhttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=456&page=show_problem&problem=2829题目描述:突击战你有n个部下,每个部下需要完成一向任务,第i个部下需要花B[i]分钟交代任务,然后他会立即、相互无间断的执行任务J[i]的时间。你需要按照一定顺序交代任务,一边所有任务尽早结束,不能同时给两个部下交代任务,但是他们可以同时做自己的任务。解题思路:(原先放在博客上的 阅读全文
posted @ 2013-09-26 23:02 little_w 阅读(429) 评论(0) 推荐(0)
摘要: WA的代码:#include#include#include#define LL long long#define maxn 1000+5//最多的小数位数using namespace std;double a[maxn];const double eps=1e-10;double abs(double n){ return n>0 ? n:-n;}int find(int cnt)//关键{//判断第cnt个数是否在前面出现过 for (int i=1;i<cnt;i++) { if (abs(a[i]-a[cnt])<eps) return i; }... 阅读全文
posted @ 2013-09-01 10:34 little_w 阅读(267) 评论(0) 推荐(0)
摘要: 这道题用到二次筛选素数的方法,优化了时间复杂度,不然会超时;区间长度在10^6以内,可用数组标记,再大也不怎么能实现。这道题是限制多多的。题目出现的主要问题 1、TLE 2、RE主要说说RE的问题:1、用数组标记L--U的素数时,容易超下界,但是我当时写的代码没什么问题,可证明一定不会超2、这个就是个奇葩了LL s=(LL)sqrt(U+0.0);for(LL i=0;prim[i] #include#include#include#define LL long long#define maxn 46600bool flag[maxn];int prim[maxn/3+5];bool f[10 阅读全文
posted @ 2013-09-01 10:20 little_w 阅读(173) 评论(0) 推荐(0)
摘要: Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( 2 #include 3 #define maxn 1000+5 4 using namespace std; 5 int bin[maxn]; 6 int findx(int x){ 7 int r=x; 8 while... 阅读全文
posted @ 2013-08-03 16:23 little_w 阅读(192) 评论(0) 推荐(0)
摘要: 描述:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。变式:有的物品能只有1个,有的物品有多个。状态转移方程:dp[i][j]=max{dp[i][j],dp[i-1][j-c[i]*k]+w[i]*k}//0s){ total++; w[total]=w[i]*s; c[total]=c[i]*s n[i]=n[i]-s; s=s*2; } w[i]=n[i]*i;}空间优化后的0... 阅读全文
posted @ 2013-08-02 19:48 little_w 阅读(526) 评论(1) 推荐(2)
摘要: 一、01背包问题简述:n种物品,每种一个,选或不选随你,背包一定有容量,求不超过容量的情况下,价值最大。递归方程:dp[i][v]=max{dp[i][v],dp[i-1][v-c[i]]+w[i]}我们要注意的是下一次背包放I个物品的状态的可达性必然要满足上一次放I-1个物品时的可达性,觉得数学归纳法可以证明出来。所以这里有个隐含的判断,就是初始时memset(dp,0,sizeof(dp));在这里已经将dp清零,所以我们可以认为在dp==0是,这一节点是没有被访问到的。因为我们取得是大的值,自然0的情况怎么都不会被选中。递推表示:memset(dp,0,sizeof(dp));for(i 阅读全文
posted @ 2013-08-02 15:40 little_w 阅读(413) 评论(0) 推荐(0)
摘要: 递归分析:d[i][j]=max{d[i+1][j]+v[i+1][j],d[[i+1][j+1]+v[i+1][j+]}//这里已经不是单线程的问题了,所以要用二维坐标表示。所以上从上层节点反回溯到下层节点。递推分析:自下而上。初始化:最底层的节点信息最优子结构:树的每一个节点都是d[i][j]当前最大路径代码:#include#include#define maxn 1000+5using namespace std;int map[maxn][maxn];int dp[maxn][maxn];int main(){ int n;//这是一个n*n的数塔 cin>>n; for 阅读全文
posted @ 2013-07-30 12:55 little_w 阅读(248) 评论(0) 推荐(0)
摘要: 一、装配线调度问题详细的证明和分析在《算法导论》的第193页数据结构:s[0][i],s[1][i]t[0][i],t[1][i]算法:自底而上,递推法.状态转移方程:(哈哈,我自己写的):S[1][i]=min(s[0][i-1]+v[1][i]+t[0][i-1,s[1][i-1]+v[1][i]);边界条件:i==n;赋初值:s[1][1]=start[1]+v[1][1];S[0][1]=start[0]+v[0][1];最终值:max{s[0][n]+end[0],s[1][n]+end[1]};//注意:整个过程是单向的,过程是一步步的,不可逆的..状态:状态(state)表示每个 阅读全文
posted @ 2013-07-30 12:34 little_w 阅读(270) 评论(0) 推荐(0)
摘要: 一、最短通路问题模型分析:不同的城市之间相互有通路:我们要从1城市出发,最终到达n城市,最所走的最短路径,并输出任意最短路径数据结构:邻接矩阵(n*n)算法分析:1、最优子结构:s[i]:存储从最底层到达i点的最短路径。2、递推公式:自下而上:s(i)=max{s(j)+m(i,j)}(j:和i邻接的点)3、边界条件:s[1]=0;//从1点出发,到达1点,路径为0。4、数据存储:Const M : array[1..7, 1..7] of integer = ( //注意:这是单向联通的图 (0, 5 ,2 ,0 ,0 ,0, ... 阅读全文
posted @ 2013-07-30 10:42 little_w 阅读(410) 评论(0) 推荐(0)
摘要: DescriptionMichael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个 区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这... 阅读全文
posted @ 2013-07-29 17:09 little_w 阅读(248) 评论(0) 推荐(0)