http://acm.hdu.edu.cn/showproblem.php?pid=1789
题意:
每个老师都会给出交作业的期限和没按时交会扣掉的分数 要求出扣除最少分数的情况
思路:
是一题典型的贪心
把扣除分数多的科目排在前面
并排在尽量晚的位置
#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> using namespace std; struct node { int day,val; }; node num[1000+100]; int vis[1000+100]; int cmp1(node a,node b) { return a.val>b.val; } int main() { int i,j,k; int t,n,m; int ans; scanf("%d",&t); while(t--) { ans=0; memset(vis,0,sizeof(vis)); scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&num[i].day); } for(i=1;i<=n;i++) { scanf("%d",&num[i].val); } sort(num+1,num+n+1,cmp1); for(i=1;i<=n;i++) { int temp=num[i].day; while(vis[temp]) temp--; if(temp==0) { ans+=num[i].val; } else vis[temp]=1; } printf("%d ",ans); } return 0; }