上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页
摘要: 题目思路:动态规划 n^3 dp[i][j] 表示前 i 匹马分成 j 堆总的忧愁度。 阅读全文
posted @ 2016-08-07 09:58 Kurokey 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目大意:给n个数,m次询问,每次询问区间 l,r 内出现偶数次数的异或和 题目思路:前缀和+离线处理+树状数组 首先可以知道, l,r 内出现奇数次的数的和,就是把 l,r内所有数异或起来就是答案,那么出现偶数次的数就可以 先求出区间 l,r 内有多少不同的数,将这些数异或起来, 阅读全文
posted @ 2016-08-06 16:04 Kurokey 阅读(165) 评论(0) 推荐(0) 编辑
摘要: /* 01最优(小)比例生成树 求最大比例更改prim即可 poj2728 将图中点连成一棵树满足 总花费/总长度 最小 */ int n,m; double d[1005],cost[1005],ben[1005]; double pic[1005][1005]; ///两点间距离 double cpic[1005][1005]; ///两点间花费 int vis... 阅读全文
posted @ 2016-08-04 22:23 Kurokey 阅读(273) 评论(0) 推荐(0) 编辑
摘要: /* 01分数规划模板(Dinkelbach) 01分数规划就是把 sum(a)/sum(b)转换成 f(x)=sum(a)-ans*sum(b); 当f(x)取到0时,ans取到了最大(小)值 poj 2976 两个长度为n的数组a,b 可以除去m个,怎样选择才能使剩下的 sum(a)/sum(b)的百分数最大 */ int ... 阅读全文
posted @ 2016-08-04 22:14 Kurokey 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目大意:给你一棵树,根节点为1,树上每一个节点都有一个花费值和收入值(花费值>=收入值),要访问一个节点需先支付花费值,访问该节点结束后得到收入值 同时访问树时要求是有序的,即访问一个节点后,需要访问完它所有的子节点,才能访问它的兄弟节点。问我们最少需要带多少钱就能访问完所有的节 阅读全文
posted @ 2016-08-02 19:47 Kurokey 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目大意:给你一个矩阵,每个格子有一个值,现在你要从左上角走到右下角(走3次),使得经过路径的权值和最大。 每个格子的值只能取一次,取完后变为0,输出走完三次后最大的权值和。 题目思路:费用流做法,对于每个格子拆点,因为权值只有第一次能取,所以将每个格子拆为两条边,一条边容量为1, 阅读全文
posted @ 2016-08-01 18:35 Kurokey 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目思路: 要充分利用 距离计算公式,也就是说尽可能的把某一维度坐标上相近的点连接起来。 也就是说我们可以把每个点分三次情况考虑(因为只有三维),把每一维度按从小到大排序,相邻两点间距离就是这两个点关于这一维度上的最小值。 我们把点对和距离用结构体保存放到优先队列去,按距离从小到大 Kruskal 阅读全文
posted @ 2016-08-01 11:27 Kurokey 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目大意:n个点构成一棵树,给定 k*2 点,要分成 k 组,使每组点之间的距离之和最大。 题目思路:因为是求距离之和最大,所以我们可以知道这样一个性质。如果以一条边为界,两边的子树均有给定的点,则这条边一定会经过 min(左边的给定点数,右边的给定点数)次。 那么这条边的贡献就是 阅读全文
posted @ 2016-07-30 14:01 Kurokey 阅读(151) 评论(0) 推荐(0) 编辑
摘要: inline void add(int x,int y,int f,int c){ node[hcnt]=Node(y,head[x],f,c);head[x]=hcnt++; node[hcnt]=Node(x,head[y],0,-c);head[y]=hcnt++; } int spfa(){ mst(d,-1);d[S]=0; mst(vis,0);q.p... 阅读全文
posted @ 2016-07-29 16:22 Kurokey 阅读(152) 评论(0) 推荐(0) 编辑
摘要: int n,m,x; vectorV[1005]; int dp[105][maxn]; int w[1005],v[1005]; void dfs(int u,int m){/// m当前可用容量,u 父节点 if(m<=0)return; for(int e:V[u]){ ///vector模拟树 for(int k=0;k<=m-w[e];++k)d... 阅读全文
posted @ 2016-07-29 11:18 Kurokey 阅读(186) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页