题意 给出n门作业的截止时间与分数 如果不能在那天结束前做完就扣掉相应分数 问怎么安排能让扣分最少

思路 先按分数从大到小排序 先研究大的

做好标记 一开始每天都能放作业 全是true

如果这一天已经有作业了 就往前寻找true的一天

如果没有寻找到就扣分

之前wa了好多次 是因为输入n后 node a[n+1] bool b[n+1] 后来改成node a[1050] bool b[1050]就可以了

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<math.h>
using namespace std;
struct node
{
int d;
int f;
}a[1050];
int cmp(node a,node b)
{
if(a.f==b.f)
return a.d<b.d;
else return a.f>b.f;
}
int main(){
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i].d);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i].f);
}
bool b[1000];
memset(b,true,sizeof(b));
sort(a+1,a+1+n,cmp);
int sum=0;
for(int i=1;i<=n;i++)
{
int k;
for(k=a[i].d;k>=1;k--)
{
if(b[k]==true)
{
b[k]=false;
break;
}
}
if(k==0)
{
sum+=a[i].f;
}
}
printf("%d\n",sum);
}
}

  

HDU 1789 贪心经典的更多相关文章

  1. HDU - 1789 贪心

    贪心策略:按照分数降序排列,如果分数相同将截止时间早的排在前面.每次让作业尽量晚完成,因此需要逆序枚举判断这一天是否已经做了其他作业,如果没时间做这个作业说明不能完成,否则将这一天标记. AC代码 # ...

  2. HDU 1789 Doing Homework again(非常经典的贪心)

    Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. hdu 1257 && hdu 1789(简单DP或贪心)

    第一题;http://acm.hdu.edu.cn/showproblem.php?pid=1257 贪心与dp傻傻分不清楚,把每一个系统的最小值存起来比较 #include<cstdio> ...

  4. hdu 1789 Doing HomeWork Again (贪心算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 /*Doing Homework again Time Limit: 1000/1000 MS ...

  5. HDU 1789 - Doing Homework again - [贪心+优先队列]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  6. 题解报告:hdu 1789 Doing Homework again(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 Problem Description Ignatius has just come back ...

  7. HDU 1789 Doing Homework again (贪心)

    Doing Homework again http://acm.hdu.edu.cn/showproblem.php?pid=1789 Problem Description Ignatius has ...

  8. HDU 1789 Doing Homework again(贪心)

    Doing Homework again 这只是一道简单的贪心,但想不到的话,真的好难,我就想不到,最后还是看的题解 [题目链接]Doing Homework again [题目类型]贪心 & ...

  9. HDU 1789 Doing Homework again(贪心)

    在我上一篇说到的,就是这个,贪心的做法,对比一下就能发现,另一个的扣分会累加而且最后一定是把所有的作业都做了,而这个扣分是一次性的,所以应该是舍弃扣分小的,所以结构体排序后,往前选择一个损失最小的方案 ...

随机推荐

  1. apple配置WIFI热点

    打开AirPort打开设置偏好-共享,找到WIFI相关

  2. 火车站(codevs 2287)

    题目描述 Description 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数 ...

  3. 一箭双雕打开Genesis

    打开记事本,将如下内容填入,保存时将后缀名改为bat @ ECHO 正在清理垃圾文件...del C:\tmp\*.* /f /q@ ECHO 清理完毕@ ECHO OFF@ ECHO.@ ECHO. ...

  4. error: Refusing to undefine while domain managed save image exists

    [root@ok libvirt]# virsh undefine win7 error: Refusing to undefine while domain managed save image e ...

  5. SqlHelper类的使用

    SqlHelper.cs public static class SqlHelper { private static readonly string conStr = ConfigurationMa ...

  6. ytu 2463:给小鼠补充代码(DFS 深度优先搜索)

    2463: 给小鼠补充代码 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 5  Solved: 2[Submit][Status][Web Board] ...

  7. MATLAB学习笔记(八)——MATLAB数值积分与微分

    (一)数值积分 一.数值积分的MATLAB实现方法: 1.变步长辛普生法(quad)法: (1)调用格式: [I,n]=quad('fname',a,b,tol,trace); fname是被积函数: ...

  8. Activity使用Serializable传递对象实例

    public class SerializableBook implements Serializable { private static final long serialVersionUID = ...

  9. js:数据结构笔记11--排序算法(1)

    基本准备: function CArray(numElems) { this.dataStore = []; this.pos = 0; this.numElems = numElems; this. ...

  10. LightOJ1422 Halloween Costumes(区间DP)

    题目大概是依次有n场派对,每场派对都有需要穿某套衣服去参加,可以同时穿多套衣服,就是一套套着一套,如果脱了的话就不能再穿上那套了,问最少需要几套衣服去参加完所有派对. 区间DP: dp[i][j]第i ...