10月6號 卡車
阿新 • • 發佈:2018-10-06
font ace pre 問題 tchar 圖片 cmp -c stream
題目
分析
第一眼看去,,很明顯的背包問題。
但看看數據規模,於是就想到了貪心,算出性價比,排序
有一個關鍵點要註意
題目的容積只有1和2
所以當容積是雙數時,一定能裝完
但單數時呢??
比如
3 3
1 7
2 14
1 9
排序後貪心一個個加後發現會容積無法達到0
所以為了排除這種情況
在排序是要優先排列 容積為 2 的
代碼
1 #include<iostream> 2 #include<algorithm> 3#include<cstdio> 4 using namespace std; 5 struct sb 6 { 7 int a,b; 8 double c; 9 }a[100001]; 10 bool cmp(sb a,sb b) 11 { 12 if (a.c==b.c) return a.a>b.a?true:false; 13 return a.c>b.c?true:false; 14 } 15 int read() 16 { 17 int x=0; 18 int c=getchar();19 while (c>=‘0‘&&c<=‘9‘) 20 { 21 x=x*10+c-48; 22 c=getchar(); 23 } 24 return x; 25 } 26 int main () 27 { 28 int n,v; 29 n=read(); v=read(); 30 for (int i=1;i<=n;i++) 31 { 32 a[i].a=read(); 33 a[i].b=read();34 a[i].c=a[i].b/a[i].a; 35 } 36 sort(a+1,a+1+n,cmp); 37 int ans=0; 38 int j=1; 39 while(v!=0&&j<=n) 40 { 41 if (v>=a[j].a) 42 { 43 ans+=a[j].b; 44 v-=a[j].a; 45 } 46 j++; 47 } 48 cout<<ans; 49 }
10月6號 卡車