poj 1776 Task Sequences】的更多相关文章

http://poj.org/problem?id=1776 题意: 有一个机器要完成N个作业, 给你一个N*N的矩阵, M[i][j]=1,表示完成第i个作业后不用重启机器,继续去完成第j个作业 M[i][j]=0,表示如果做完第i个作业,想要继续去做第j个作业,那么必须重启机器 对于任意两个作业都有M[i][j] = 1或者M[j][i] = 1. 求出完成这N个作业启动机器的最少次数,以及每次启动完成作业的数量和这些作业的顺序 初始时机器处于关闭状态. 将M当做图,就是找最少的路径条数覆盖…
链接:http://poj.org/problem?id=1776 本文链接:http://www.cnblogs.com/Ash-ly/p/5458635.html 题意: 有一个机器要完成一个作业,给你一个N*N的矩阵,如果M[i][j] = 1,说明完成第i个作业后不用重启机器,机器可以自动继续去完成第j个作业,否则M[i][j]等于0,则说明如果做完第i个作业,想要继续去做第j个作业,那么必须重启机器.对于每两个作业都有M[i][j] = 1或者M[j][i] = 1.让你求出完成这N个…
题目链接: http://poj.org/problem?id=1239 Increasing Sequences Time Limit: 1000MSMemory Limit: 10000K 问题描述 Given a string of digits, insert commas to create a sequence of strictly increasing numbers so as to minimize the magnitude of the last number. For…
原题链接:http://poj.org/problem?id=3553 这道题主要就是贪心思想吧,对于每个job,根据其截止时间 dj 从小到大排序,我们必须要尽快把dj最小的job完成掉,这样才能使max{Cj-dj, 0}最小(因为对于最小dj在没完成该工作时dj使不变的,如果你先做了其他没关联的工作,只会使Cj变大,从而使max{Cj-dj, 0}变大,这和题目所求刚好相反了).因为要完成dj工作会需要先完成其他工作,那么这时候dfs一下,一步一步找到其祖先打印出来即可. 网上有人用的拓扑…
http://poj.org/problem?id=1239 题意:给出一串序列,现在要添加逗号作为分隔符,使得序列是递增序列,然后让最后一个数尽量小,第一个数尽量大. 思路:先从头到尾进行一次dp,d[i]表示分析到第i位时往前的最小长度,这样一来,d[n]就表示最后一位的最小长度. 在满足了最后一位尽量小的情况下,我们再从尾到头进行一次dp,此时d[i]表示分析到第i位时往后的最大长度.思路和第一次dp是差不多的. #include<iostream> #include<algori…
Task schedule Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 515 Accepted: 309 Special Judge Description There are n preemptive jobs to be processed on a single machine. Each job j has a processing time pj and deadline dj. Preemptive cons…
//相邻的 2.3......d 之和都要不为素数 # include <algorithm> # include <stdio.h> using namespace std; int num[1010],vis[1010]; int n,m,d,cot; int flag[10010]; void init()//素数打表 { int i,j; for(i=2;i<10010;i++) { if(!flag[i]) for(j=i*i;j<10010;j=j+i) f…
竞赛图:图中的任意两点间有且仅有一条有向弧连接 求竞赛图中的哈密顿路的算法: 首先,由数学归纳法可证竞赛图在n>=2时必存在哈密顿路: (1)n=2时显然: (2)假设n=k时,结论成立,哈密顿路为V1,V2,...,Vi,...,Vk: 现添加第k+1个结点,若存在弧<Vi,Vk+1>和弧<Vk+1,Vi+1>,则可得哈密顿回路V1,V2,...,Vi,Vk+1,Vi+1,...,Vk: 若不存在上述的vi,考虑到Vk+1与v1~vk的连通状况,则只有下面种原哈密顿路的情况…
题意:略. 思路:进行两次dp. 第一次dp从前向后,用dp[x]表示从第x位向前dp[x]位可构成一个数字,且与前面的数组符合题意要求.最后求的dp[n]即为最后一个数字的长度. 而题目还有要求,所有解中输出前面数字最大的一个.因此还需要进行一次dp,从后向前. 具体看代码吧,当初也是看别人代码才看懂的. #include<stdio.h> #include<string.h> ]; ], n; bool judge(int st1,int len1,int st2,int le…
此文转载别人,希望自己能够做完这些题目! 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,…