zoukankan      html  css  js  c++  java
  • hdu-1789 :Doing Homework again

    http://acm.hdu.edu.cn/showproblem.php?pid=1789

    我的思路:先在输入过程中求出总被减分数sum,再对deadline由小到大进行排序,然后找出deadline的最大值--day,从day到1依次找出deadline大于等于当前day的最大被减分数--reduce,用sum-reduce既得出最后的被减分数的最小值。

    我的代码:

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <algorithm>
     5 using namespace std;
     6 bool flag[1005];
     7 struct sa
     8 {
     9     int deadline;
    10     int  reduce;
    11 }data[1005];
    12 int cmp(const sa &a,const sa &b)
    13 {
    14     return a.deadline<b.deadline;
    15 }
    16 int main()
    17 {
    18     int n,day,sum,t,dele,k,max_line;
    19     while(cin>>t)
    20     {
    21         while(t--)
    22         {
    23             cin>>n;
    24     {
    25         memset(flag,0,sizeof(flag));
    26         sum=0;max_line=0;
    27         for(int i=0;i<n;i++)
    28         {
    29             cin>>data[i].deadline;
    30             if(max_line<data[i].deadline)
    31             max_line=data[i].deadline;
    32         }
    33         for(int i=0;i<n;i++)
    34         {
    35             cin>>data[i].reduce;
    36             sum+=data[i].reduce;
    37         }
    38         sort(data,data+n,cmp);
    39         day=max_line;
    40         for(int i=day;i>=1;i--)
    41         {
    42             dele=0;
    43             for(int j=n-1;j>=0;j--)
    44             {
    45                 if(data[j].deadline>=i&&data[j].reduce>dele&&flag[j]!=1)
    46                 {
    47                     dele=data[j].reduce;
    48                     k=j;
    49                 }
    50                 if(data[j].deadline<i)
    51                 break;
    52             }
    53             flag[k]=1;
    54             sum-=dele;
    55         }
    56         cout<<sum<<endl;
    57     }
    58         }
    59     }
    60     return 0;
    61 }
    View Code

    大神的思路:先按规则进行排序:1.扣分越多的越靠前2.扣分相同的时候,deadline越早的越靠前。找出 i-deadline之前是否有一天没写作业,如果有就完成 i-work,否则ans+= i-work。

    大神的代码:

     1 #include <iostream>  
     2 #include <algorithm>  
     3 #include <cstring>  
     4 using namespace std;  
     5   
     6 struct Node  
     7 {  
     8     int time,fen;  
     9 } node[1005];  
    10   
    11 int cmp(struct Node a,struct Node b)  
    12 {  
    13     if(a.fen!=b.fen)  
    14         return a.fen > b.fen;//扣分越多的越靠前  
    15     return a.time < b.time;//扣分相同的时候,deadline越早的越靠前  
    16 }  
    17   
    18 int  visit[2010];//如果当天没用过,值为0;否则为1  
    19   
    20 int main()  
    21 {  
    22     int m;  
    23     cin >> m;  
    24     while(m--)  
    25     {  
    26         int n,i,j,ans = 0;  
    27         memset(visit,0,sizeof(visit));  
    28         cin >> n;  
    29         for(i = 0; i<n; i++)  
    30         {  
    31             cin >> node[i].time;  
    32         }  
    33         for(i = 0; i<n; i++)  
    34         {  
    35             cin >> node[i].fen;  
    36         }  
    37         sort(node,node+n,cmp);  
    38         int sum = 0;  
    39         for(i=0; i<n; i++)  
    40         {  
    41             j=node[i].time;// 从截止时间开始往前推,如果有一天没用过,这一天就做这一门课,这门课不扣分  
    42             while(j)  
    43             {  
    44                 if(!visit[j])  
    45                 {  
    46                     visit[j]=1;  
    47                     break;  
    48                 }  
    49                 j--;  
    50             }  
    51             if(j==0)//如果j=0,表明从time往前的每一天都被占用了,这门课完不成  
    52                 ans+=node[i].fen;  
    53         }  
    54         cout << ans << endl;  
    55     }  
    56   
    57     return 0;  
    58 }  
    View Code
  • 相关阅读:
    Django Rest Framework 教程及API向导
    zabbix2.4升级到2.5 --考虑升级到zabbix3.0
    followme_laser包解读
    ROS多个工作空间存在同名包的BUG
    fatal err Eigen/Dense No such file or directory(unsupported/Eigen/FFT、Eigen/Core也是一样的道理)
    ROS向节点传递参数的方法总结(rosrun,launch) + (参数服务器,main函数参数)
    同步Sublime Text配置
    W: Failed to fetch http://packages.microsoft.com/repos/vscode/dists/stable/main/binary-amd64/Package
    Ubuntu(Linux)下更新CMake,最安全的更新
    Ignoring Provides line with DepCompareOp for package gdb-minimal
  • 原文地址:https://www.cnblogs.com/wang-ya-wei/p/5543259.html
Copyright © 2011-2022 走看看