zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    火狐获取图片宽和高的方法
    JDBC连接本地sqlserver2005的方法
    war文件不在tomcat 的webapps运行
    javascript 去除空格 方法
    火狐显示图片的方法
    八款开源Android游戏引擎
    android 模拟器 hardWare 属性说明
    jqgrid 属性说明
    Java命名规范
    在MyEclipse里怎样一次性取消所有断点
  • 原文地址:https://www.cnblogs.com/phaLQ/p/9364923.html
Copyright © 2011-2022 走看看