• Hdoj—1789


    //大意理解 先排序 最早交的里面选最大值 扫描完了加没写的 排序后 应该是早交的和扣分多的在前 用结构体吧
    /*#include<stdio.h>
    #include<stdio.h>
    int cmp(void const* a,void const*b)
    {
    if(*(st*)a->t==*(st*)b->t)
    return *(st*)b->kou-*(st*)b->kou;
    else
    return *(st*)a->t-*(st*)b->t;
    }
    typedef struct
    {
    int vis;
    int t;
    int kou;

    }st s[10000];
    int main()
    {
    return 0;
    }*/ //理解完全错误啊这样选择完全得不到解

    题意就是最大的最迟做 做不了就被扣分。。 AC代码如下:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct st
    {
        int time;;
        int score;
        
    }a[1001];
    int cam(const void *x,const void *y)
    {
        struct st p = *((struct st *)x);
        struct st q = *((struct st *)y);
        
          return q.score-p.score;
    
        
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n, vis[1001];
            
            scanf("%d",&n);
            int i;
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i].time);
            }
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i].score);
            }
            for(i=1;i<=n;i++)
            //printf("%d %d
    ",a[i].time,a[i].score);
            qsort(&a[1],n,sizeof(a[1]),cam);
            int count = 0;
            int day=0;
            int j;
            memset(vis,0,sizeof(vis));
            for(i=1;i<=n;i++)
            {
                
                for(j=a[i].time;j>=1;j--)
                {
                    
                    if(!vis[j])
                    {
                        
                        vis[j]=1;
                        break;
                    }
                }
                if(j<=0)
                count+=a[i].score; 
            }
            printf("%d
    ",count);
        
            
        } 
        return 0;
    }

    感觉和网上搜的如出一辙。。。

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct
    {
        //int vis;
        int t;
        int kou;
    
    }st;
    st s[10000];
    int vis[100000];
    int cmp(void const* a,void const*b)
    {
        return ((st*)b)->kou-((st*)a)->kou;
    }
    
    
    int main()
    {
        int max_t,i,ci,c;
        scanf("%d",&ci);
        while(ci--){
            int sum=0,j;
            scanf("%d",&c);
            max_t=-1;
            for(i=0;i<c;i++)
            {
                scanf("%d",&s[i].t);
                max_t=max_t>s[i].t?max_t:s[i].t;
            }
            for(i=1;i<=max_t;i++)vis[i]=0;
            for(i=0;i<c;i++)
            {
                scanf("%d",&s[i].kou);
            }
            qsort(s,c,sizeof(s[0]),cmp);
            for(i=0;i<c;i++)
            {
                for(j=s[i].t;j>0;j--)
                {
                    if(!vis[j])
                    {
                        vis[j]=!vis[j];
                        break;
                    }
                }
                if(j==0)
                {
                    sum+=s[i].kou;
                }
            }
            printf("%d
    ",sum);
        }
        return 0;
    
  • 相关阅读:
    vim字体设置
    windows下eclipse打不开
    ubuntu的无线网无法连上
    将ubuntu系统录到u盘上
    使用UltraISO刻录系统到U盘可能会出现打不开的情况
    windows安装程序制作
    安装ubuntu双系统
    数据库插入数据时间比较
    LeetCode 189. Rotate Array
    LeetCode 228. Summary Ranges
  • 原文地址:https://www.cnblogs.com/Geek-xiyang/p/5078209.html
Copyright © 2020-2023  润新知