Uvalive 6424 - Russian Dolls (贪心)
来源:互联网 发布:淘宝卖家如何发动态 编辑:程序博客网 时间:2024/06/08 18:04
【题目链接】:click here~~
【题目大意】:
每个玩具有占用的空间和内部可容纳的空间。规定每个玩具只能直接嵌套一个玩具,可以间接嵌套,即A套B,B再套C,但是不能A同时套B和C。A能套B的条件是A的内部空间严格大于B的占用空间。第i个玩具有一个单位花费ci,乘以该玩具内部还剩于的空间即为花费。要问的是经过适当的嵌套之后,最小花费是多少。
【思路】:贪心问题,数据不大,两层for循环判断
显然,每次嵌套会使花费减少。
对于每个玩具,如果要将它套进别的玩具里面,在条件允许的情况下肯定是找单位花费大的套,这样花费减小才快。按找单位花费从大到小排序,注意当花费一样的时候,内部体积从大到小(ps:实测uvalive体积按小到大也对)
代码:
#include <bits/stdc++.h>using namespace std;const int N=1010;int n,m,t;struct node{ int out,in,c;} p[N];bool cmp(node a,node b)// sort the cost and volume{ if(a.c==b.c) return a.in>b.in; else return a.c>b.c;}bool vis[N];int main(){ while(scanf("%d",&n)!=EOF) { memset(vis,false,sizeof(vis)); int k,jj,sum,maxx=0; for(int i=1; i<=n; ++i) { scanf("%d%d%d",&p[i].out,&p[i].in,&p[i].c); } sort(p+1,p+n+1,cmp); sum=0; for(int i=1; i<=n; ++i) { int maxx=0; for(int j=1; j<=n; ++j) { if(i==j) continue; if(!vis[j]&&p[j].out<p[i].in) { maxx=max(maxx,p[j].out); } } if(maxx!=0) { for(int j=1; j<=n; ++j) { if(!vis[j]&&p[j].out==maxx) { vis[j]=true; break; } } } sum+=(p[i].in-maxx)*p[i].c; } cout<<sum<<endl; } return 0;}/*35 4 14 2 23 2 17after sort:4 2 2 //内部没有装其他玩具,总花费=2*2=43 2 1 //内部没有装其他玩具,总花费=2*1=25 4 1 //把外部体积为3的玩具装入,则花费=(4-3)*1=1;所以总共=4+2+1=7*/
0 0
- Uvalive 6424 - Russian Dolls (贪心)
- UVALive 6424 Russian Dolls(贪心)
- UVALive 6424 Russian Dolls 贪心
- UVALive 6424 Russian Dolls 贪心
- UVALive 6424 —— Russian Dolls(贪心)
- 文章标题UVALive 6424:Russian Dolls(贪心)
- UVALive 6424 Russian Dolls
- 6424 Russian Dolls--贪心
- Russian Dolls
- Russian Dolls
- hdu1677 Nested Dolls(贪心)
- uva 10549 Russian Dolls (DP)
- POJ 2303 Russian Dolls 笔记
- hdu1677--Nested Dolls(贪心+LIS)
- HDOJ 1677 Nested Dolls(贪心+LIS)
- HDU 1677 Nested Dolls (贪心)
- hdu1677—Nested Dolls(贪心)
- 【贪心】poj3636 nested dolls
- 奇数求和
- JZ2440 ping不通PC主机的原因及解决办法
- VC++笔记
- poj 3233 Matrix Power Series(矩阵乘法·二分等比数列)
- C++技术点积累(1)
- Uvalive 6424 - Russian Dolls (贪心)
- 浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系
- Android通用生命周期
- UIProgressView 进度条
- 黑马入门教程笔记04-OC(完结)
- System V 共享内存区
- 链表的基本操作
- poj 1085 Triangle War 1568 Find the Winning Move 极大极小搜索 alpha-beta剪枝
- Java Java!