• HDOJ 1789


    第一次的思路:

    1、对扣除的分数进行升序排序,当分数相等时对截至时间进行降序排序;

    2、从第一个开始,如果此时的数据的时间违背标记,则将其标记;并进行下一个数据;如果此时的数据的时间已被标记,则判断此数据的下一天是否被标记,若是未被标记则将其标记,并进行下一个数据;如果这天也被标记了,则在对下一天(前一天)进行判断,不断重复,如果最终时间判断到了0,则此次任务将被舍弃,并将此数据的扣除分数记录到总的扣除分数之中。

    第一次尝试的代码:

    (最后AC了)

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #define Max 1005
    using namespace std;
    
    struct st
    {
    	int deadline;
    	int re_score;
    }a[Max];
    int Time[1005];
    
    bool hanshu(st a,st b)
    {
    	if(a.re_score==b.re_score)
    		return a.deadline<b.deadline;
    	else
    		return a.re_score>b.re_score;
    }
    
    int main(void)
    {
    	freopen("in.txt","r",stdin);
    	int N;
    	cin>>N;
    	while(N--)
    	{
    		int n,i,j,sum=0;
    		cin>>n;
    		for(i=1;i<=n;i++)
    			cin>>a[i].deadline;
    		for(i=1;i<=n;i++)
    			cin>>a[i].re_score;
    		memset(Time,0,sizeof(Time));
    			
    		sort(a+1,a+1+n,hanshu);
    		
    		for(i=1;i<=n;i++)
    		{
    			for(j=a[i].deadline;j>=1;j--)
    				if(Time[j]==0)
    				{
    					Time[j]=1;
    					break;
    				}
    			if(j==0)
    				sum+=a[i].re_score;
    		}
    		cout<<sum<<endl;
    	}
    	
    	fclose(stdin);
    	return 0;
    }
    

      

  • 相关阅读:
    “5W1H”带你来学习JavaScript
    [windows+cocos2dx]文本类
    server后台TCP连接存活问题
    (七):处理MFC
    Servlet中的request对象、重定向和转发的差别(6)
    ORACLE 存储函数
    【@伏草惟存@】7年系列博文精选
    笔记14:Docker 部署Python项目
    笔记13:Python 和 Elasticsearch 构建简易搜索
    笔试12:Bootstrap知识
  • 原文地址:https://www.cnblogs.com/phaLQ/p/9364923.html
Copyright © 2020-2023  润新知