HDOJ 1789 Doing Homework again

Doing Homework again

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11637    Accepted Submission(s): 6837


Problem Description
Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the homework after the deadline, the teacher will reduce his score of the final test. And now we assume that doing everyone homework always takes one day. So Ignatius wants you to help him to arrange the order of doing homework to minimize the reduced score.
 

Input
The input contains several test cases. The first line of the input is a single integer T that is the number of test cases. T test cases follow.
Each test case start with a positive integer N(1<=N<=1000) which indicate the number of homework.. Then 2 lines follow. The first line contains N integers that indicate the deadlines of the subjects, and the next line contains N integers that indicate the reduced scores.
 

Output
For each test case, you should output the smallest total reduced score, one line per test case.
 

Sample Input
  
  
3 3 3 3 3 10 5 1 3 1 3 1 6 2 3 7 1 4 6 4 2 4 3 3 2 1 7 6 5 4
 

Sample Output
  
  
0 3 5
 
贪心算法,根据分值大小排序大的优先如果那天空闲就安排在那天,如果不空闲就向前推,如果前面也没有那就扣分呗。刚接触贪心,感觉理解的不透彻。摸不准怎样才是局部最优。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct WORK
{
	int t;
	int s;
}wok[1010];
int cmp(WORK a,WORK b)
{
	return a.s>b.s;
}
int main()
{
	int t,n,i,j,sum,a[1010],flag;
	scanf("%d",&t);
	while(t--)
	{	
		memset(a,0,sizeof(a));
		scanf("%d",&n);
		for(i=0;i<n;i++)
			scanf("%d",&wok[i].t);
		for(i=0;i<n;i++)
			scanf("%d",&wok[i].s);
		sort(wok,wok+n,cmp);
		/*for(i=0;i<n;i++)
			printf("%d ",wok[i].t);
			printf("\n");
		for(i=0;i<n;i++)
			printf("%d ",wok[i].s);*/
		sum=0;
		for(i=0;i<n;i++)
		{
			if(a[wok[i].t]==0)
			{
			a[wok[i].t]=1;
			continue;
			}
			if(a[wok[i].t]!=0)
			{	
				flag=0;
				for(j=wok[i].t-1;j>0;j--)
				{
					if(a[j]==0)
					{
					a[j]=1;
					flag=1;
					break;
					}
				}
				if(flag==0)
				sum+=wok[i].s;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}


 

内容概要:文章介绍了DeepSeek在国内智能问数(smart querying over data)领域的实战应用。DeepSeek是一款国内研发的开源大语言模型(LLM),具备强大的中文理解、推理和生成能力,尤其适用于企业中文环境下的智能问答、知识检索等。它具有数据可控性强的特点,可以自部署、私有化,支持结合企业内部数据打造定制化智能问数系统。智能问数是指用户通过自然语言提问,系统基于结构化或非结构化数据自动生成精准答案。DeepSeek在此过程中负责问题理解、查询生成、多轮对话和答案解释等核心环节。文章还详细展示了从问题理解、查询生成到答案生成的具体步骤,并介绍了关键技术如RAG、Schema-aware prompt等的应用。最后,文章通过多个行业案例说明了DeepSeek的实际应用效果,显著降低了数据使用的门槛。 适合人群:从事数据分析、企业信息化建设的相关从业人员,尤其是对智能化数据处理感兴趣的业务和技术人员。 使用场景及目标:①帮助业务人员通过自然语言直接获取数据洞察;②降低传统BI工具的操作难度,提高数据分析效率;③为技术团队提供智能问数系统的架构设计和技术实现参考。 阅读建议:此资源不仅涵盖了DeepSeek的技术细节,还提供了丰富的实战案例,建议读者结合自身业务场景,重点关注DeepSeek在不同行业的应用方式及其带来的价值。对于希望深入了解技术实现的读者,可以进一步探索Prompt工程、RAG接入等方面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值