上一页 1 2 3 4 5 6 ··· 13 下一页
摘要: 比较简单的树形DP题意:一个公司有一个电话网络,每个人的电话只和他的直接上级或者直接下属相连通。整个电话的网络和人事上下级关系一样,是一个树形的结构。现在Tanya希望向网络内的所有人传递一个信息,他就需要去打电话,他每分钟只能打一个电话,且他只能给他的直接上级或下属打电话,问最少需要多少时间,可以使得整个网络都得到这一消息。想法应该很简单,tanya对应的点当根节点,对所有节点来说,他对应的哪个儿子节点需要把消息发布到整棵子树的时间越长,就肯定应该给谁先打电话。然后对时间排序,稍作处理就不难得出答案。代码: 1 #include 2 #include 3 #include 4 #inc... 阅读全文
posted @ 2014-01-11 17:10 浙西贫农 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 题意:给你三个桶,容量分别为A,B,C,然后问你用这三个没有刻度的桶可以量出多少不同容量的水。0 2 #include 3 const int maxn = 1<<8; 4 bool d[maxn][maxn][maxn]; 5 bool vis[maxn*3]; 6 int A,B,C; 7 8 void dp(int n,int m,int k){ 9 if(d[n][m][k]) return;10 d[n][m][k] = 1;11 vis[n] = 1;12 vis[m] = 1;13 vis[k] = 1;14 vis[n+m] ... 阅读全文
posted @ 2014-01-11 14:55 浙西贫农 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 第一个插头DP,看了CDQ的论文看的一知半解,更不要说些代码了。真的写不来啊。orz orz orz参考的这位大神:http://hi.baidu.com/longmenwaideyu/item/0a11a033eb04db92b80c038c 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 15; 6 const int HASH = 30007; 7 const int SIZE = 1000010; 8 typedef long long LL; 9 int N,... 阅读全文
posted @ 2013-12-02 19:41 浙西贫农 阅读(356) 评论(2) 推荐(1) 编辑
摘要: 题意:一个工厂接到了N张订单。他们有M个车间,如果第i张单在第j个车间加工需要花费Zij的时间。现在给出这个Z的矩阵,问做完这N张单需要时间的平均值(总时间/N)包括等待时间。(比如说我在一个车间连续以1个时间单位接了3张单,那么总时间为1+2+3=6,平均值为6/3=2)(N,M 2 #include 3 #include 4 #include 5 #include 6 #define maxn 2600 7 #define maxm 1000000 8 #define INF 1 > q; 32 d[src] = 0; 33 q.pus... 阅读全文
posted @ 2013-11-20 21:56 浙西贫农 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 求补集。题意:给出一列长为n(n 2 int a[1000010],vis[1= 0;i--){11 if(vis[i]) continue;12 for(int j = 0;j < 22;j++){13 if(vis[i|(1<<j)]){14 vis[i] = vis[i|(1<<j)];15 break;16 }17 }18 }19 for(int i = 0;i < n;i++){20 if(v... 阅读全文
posted @ 2013-11-20 21:44 浙西贫农 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题意:城市中有从左到右排列起来的高度为hi的n个塔。现在要求作出一些改变使得景观更美丽,也就是要从左到右排列起来的塔呈非递减序列。你可以用吊车吊起一座塔然后叠加到左右相邻的任意一座塔上,这样新塔的高度等于两座塔之和,每次做这样的操作,塔的总数都会减少1(废话)。问最少进行几次这样子的操作可以使得景观美丽。dp(i)表示使得前i个塔美丽的最小操作次数,sum(i)表示前i座塔的前缀和,last(i)表示使得前i个塔美丽操作次数最小的情况下,最右侧一座塔最小的塔高。那么就有状态转移方程:dp(i)=min{dp(j)+i-j+1},sum(i)-sum(j)>=last(j). 1 #inc 阅读全文
posted @ 2013-11-20 13:10 浙西贫农 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 题意:在一张地图上,有N(N 2 #include 3 #include 4 using namespace std; 5 typedef long long LL; 6 double dp[1010]; 7 struct Node{ 8 int x,y,t; 9 double p;10 }node[1010];11 12 int cmp(Node a,Node b){13 return a.t = 1;i--){32 dp[i] = 0;33 for(int j = i+1;j ans ? dp[i] : ans;39 }... 阅读全文
posted @ 2013-11-18 21:35 浙西贫农 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 1001 本题一般是新手的处女题。要熟悉ACM的输入输出规则。还是要注意一下题目里说的是Each line will contain two integersAandB. Process to end of file.也就是说有多组测试数据,要用循环去输入。cin是有返回值的,只要你不断的输入,循环就不会结束。还有,大家不用担心程序不会终止。其实你是可以手动终止程序的,当然,在OJ测试用的文件的末尾有一个EOF的标志,一旦读到了文件的末尾,程序就会终止。 1 #include 2 using namespace std; 3 4 int main(){ 5 int a,b; 6 ... 阅读全文
posted @ 2013-11-16 23:14 浙西贫农 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一张有向图,现在要你删去一些边构造一张新图,新图的要求有1.对于起点s,出度-入度=1.2.对于终点t,入度-出度=1.3.对于其余的点,入度=出度.另外,保留每条边需要花费ai,删掉每条边需要花费bi。现在求一个最小花费的方案使得能够构造出符合要求的图。看到这题首先想到以前做过的几个混合图欧拉回路的问题,因为本题跟混合图欧拉回路有一些类似的地方,比如说,我无法去控制每个点具体的出度入度到底是多少,但是可以知道它们之间的关系。并且对于每条边,我都不知道到底该不该留,所以可能会考虑先假定它到底是留下还是不留,然后利用每个点度数的关系跟源汇相连,用网络流去求解一个方案。所以本题就应该是一 阅读全文
posted @ 2013-11-15 20:36 浙西贫农 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题意:Little Tom要“环”游一些城市,每个城市只能游玩一次。现在给出一张有向图和每条边的费用。求最小费用。要走环,很容易想到二分图匹配。这里还是一样的,拆点。把每个点拆开,变成i,i',分别和源点S汇点T相连,费用是0,容量是1。然后对原图中的每条边(u,v),对应边(u,v',1,cost),跑费用流,如果最大流=城市数,说明存在一个方案,答案就是最小费用流算出来的费用。 1 #include 2 #include 3 #include 4 #include 5 #define maxn 210 6 #define maxm 100000 7 #define INF 阅读全文
posted @ 2013-11-14 10:33 浙西贫农 阅读(135) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 13 下一页