hdu 4296(贪心)
来源:互联网 发布:基本款斜挎包 知乎 编辑:程序博客网 时间:2024/05/24 15:41
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4296
题意:有 n 个地板,每个地板 i 有两个权值 Wi, Si,且 PDV(i) = (ΣWj) - Si ( j 表示在 i 上面的地板)。问如何调整顺序,使得【max(PDV)】最小。
思路:假设i,j相邻,并且i上面的重量为sum,若i在上面,则有pi=sum-si,pj=sum+wi-sj;若j在上面,则有pi'=sum+wj-si,pj'=sum-sj;
显然有pi<pi',pj>pj',于是令pj<pi',就有sum+wi-sj<sum+wj-si,即wi+si<wj+sj;
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6 using namespace std; 7 #define MAXN 100010 8 typedef long long ll; 9 struct Node {10 int w,s;11 } node[MAXN];12 int n;13 14 int cmp(const Node &p,const Node &q) {15 return p.w+p.s<q.w+q.s;16 }17 18 int main() {19 while(~scanf("%d",&n)) {20 for(int i=1; i<=n; i++) {21 scanf("%d%d",&node[i].w,&node[i].s);22 }23 sort(node+1,node+1+n,cmp);24 ll sum=0,MAX=0;25 for(int i=1; i<=n; i++) {26 MAX=max(MAX,sum-node[i].s);27 sum+=node[i].w;28 }29 printf("%I64d\n",MAX);30 }31 return 0;32 }
0 0
- hdu 4296(贪心)
- HDU 4296 Buildings(贪心)
- hdu 4296 Buildings(贪心)
- HDU 4296 Buildings(贪心)
- hdu 4296 贪心
- hdu 4296 贪心
- hdu 4296 Buildings(贪心)
- 贪心-- HDU - 4296 Buildings
- HDU 4296 Buildings 贪心
- HDU Saving HDU (贪心)
- hdu 2570 (贪心)
- hdu 4647(贪心?!)
- hdu 3069(贪心)
- hdu 1735(贪心)
- hdu 3979(贪心)
- hdu 2831(贪心)
- hdu 3183(贪心)
- hdu 2037(贪心)
- hdu 2236(最大匹配+枚举上下界)
- hdu 3861(缩点+最小路径覆盖)
- 关于tomcat服务器新学到的一些东西
- hdu 3335(最小路径覆盖)
- hdu 4313(类似于kruskal)
- hdu 4296(贪心)
- hdu 4311(枚举)
- hdu 2831(贪心)
- hdu 2819(二分匹配)
- hdu 2354(bfs求最短路)
- hdu 4324(dfs)
- hdu 2376(求树上任意两点之间距离之和的平均值)
- MFC编程之全局唯一标识符(GUID,Globally Unique Identifier)
- hdu 2444(二分图的判断以及求最大匹配)