1 条题解
-
0
贪心做法
#include <bits/stdc++.h> #define int long long//坏习惯 using namespace std; const int N=1e5+5; struct node{ int a,b,c,num;//结构体储存,num为编号 }a[N]; bool cmp1(node ls,node rs){ return ls.b-ls.a>rs.b-rs.a; } bool cmp2(node ls,node rs){ return ls.c-ls.a>rs.c-rs.a; }//比较规则 signed main(){ int n; cin>>n; int cnt=0;//记录a[i].a之和 for(int i=1;i<=n;i++){ cin>>a[i].a>>a[i].b>>a[i].c; a[i].num=i; cnt+=a[i].a; } sort(a+1,a+n+1,cmp1); int pre1=a[1].num,val1=a[1].b-a[1].a; int pre2=a[2].num,val2=a[2].b-a[2].a; // for(int i=1;i<=n;i++)cout<<a[i].num<<" "; // cout<<endl; sort(a+1,a+n+1,cmp2); int pos1=a[1].num,sum1=a[1].c-a[1].a; int pos2=a[2].num,sum2=a[2].c-a[2].a;//一些便于书写的变量 // for(int i=1;i<=n;i++)cout<<a[i].num<<" "; // cout<<endl; if(pos1==pre1&&sum1>val1){ cout<<cnt+sum1+val2<<"\n"<<pre2<<" "<<pos1; return 0; } else if(pos1==pre1&&sum1<=val1){ cout<<cnt+sum2+val1<<"\n"<<pre1<<" "<<pos2; return 0; } if(a[1].num!=pre1)cout<<cnt+val1+sum1<<"\n"<<pre1<<" "<<pos1; // cout<<endl<<val1<<" "<<sum1<<" "<<cnt; return 0; }
信息
- ID
- 1142
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 7
- 已通过
- 5
- 上传者