ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

2020牛客寒假算法基础集训营2 F拿物品

2020-02-06 19:03:03  阅读:222  来源: 互联网

标签:int db da 牛客 flag 2020 集训营 id cmp


不要被最优策略几个字迷惑住了。
重点在分差越大。
我们考虑,牛牛每取一件物品,会得到ai的属性,并且让牛可乐失去了bi的属性,所以牛牛实际上得到了ai+bi的属性,牛可乐的取法同理,因此,这题的思想就转变为贪心。
2个姓牛的都尽可能取走ai+bi最大的物品,以此减小差距

 

比赛时想了个综合差值和a(b)的贪心

感觉只有差值=a(b),且不是同一物品时,两个物品都可以选 可能有错误 但只有25.87分

 

想的一些输入数据

1.2

   100 1

   200 101

2. 3

  100 6 5 

   98 1 1000

 

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N],b[N];
struct P{
    int s,id;
}c[N];
bool cmp(P a,P b){
    return a.s>b.s;
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)cin>>b[i],c[i].s=a[i]+b[i],c[i].id=i;
    sort(c+1,c+1+n,cmp);
    for(int i=1;i<=n;i+=2)cout<<c[i].id<<' ';
    cout<<endl;
    for(int i=2;i<=n;i+=2)cout<<c[i].id<<' ';
    cout<<endl;
    return 0;
}





/*#include<bits/stdc++.h>//f
using namespace std;
const int N=2e5+5;
int ansa[N],ansb[N],flag[N];
struct P{
    int d,id;
}da[N],db[N],a[N],b[N];
bool cmp(P a,P b){
    return a.d>b.d;
}
int main(){
   int n;
   cin>>n;
   for(int i=1;i<=n;i++)cin>>a[i].d;
   for(int i=1;i<=n;i++)cin>>b[i].d,da[i].d=b[i].d-a[i].d,da[i].id=i,db[i].d=a[i].d-b[i].d,da[i].id=db[i].id=a[i].id=b[i].id=i;
   sort(da+1,da+n+1,cmp);
   sort(db+1,db+n+1,cmp);
   sort(a+1,a+n+1,cmp);
   sort(b+1,b+n+1,cmp);
   //for(int i=1;i<=n;i++)cout<<da[i].d<<' '<<db[i].d<<endl;
   int a1=1,b1=1,a2=1,b2=1,rest=n,tota=0,totb=0;
   while(rest){
    while(flag[a[a1].id]&&a1<n)a1++;
    while(flag[da[a2].id]&&a2<n)a2++;
     if(a[a1].d>=da[a2].d)     {//相等的时候有两种选择 
         ansa[++tota]=a[a1].id;
         rest--;
         flag[a[a1].id]=1;
     }
     else    {
         ansa[++tota]=da[a2].id;
         rest--;
         flag[da[a2].id]=1;
     }
   /*     while(flag[da[na].id]&&na<n)na++;
        if(!flag[da[na].id]){
        ansa[++tota]=da[na].id;
        rest--;
        flag[da[na].id]=1;}
        
        
    if(rest){
        while(flag[b[b1].id]&&b1<n)b1++;
    while(flag[db[b2].id]&&b2<n)b2++;
     if(b[b1].d>=db[b2].d)     {
         ansb[++totb]=b[b1].id;
         rest--;
         flag[b[b1].id]=1;
     }
     else    {
         ansa[++totb]=db[b2].id;
         rest--;
         flag[db[b2].id]=1;
     }
        
        }
        
/*     if(rest){
         while(flag[da[na].id]&&na<n)na++;
        if(!flag[da[na].id]){
        ansb[++totb]=da[na].id;
        rest--;
        flag[da[na].id]=1;}
         
     }     
        
   }
   for(int i=1;i<=tota;i++)
    if(i==tota)cout<<ansa[i]<<endl;
    else cout<<ansa[i]<<' ';
    for(int i=1;i<=totb;i++)
    if(i==totb)cout<<ansb[i]<<endl;
    else cout<<ansb[i]<<' ';
   return 0;    

}*/ 

 

标签:int,db,da,牛客,flag,2020,集训营,id,cmp
来源: https://www.cnblogs.com/wyh447154317/p/12269869.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有