HDU 1789 Doing Homework again(贪心)
在我上一篇说到的,就是这个,贪心的做法,对比一下就能发现,另一个的扣分会累加而且最后一定是把所有的作业都做了,而这个扣分是一次性的,所以应该是舍弃扣分小的,所以结构体排序后,往前选择一个损失最小的方案直接交换就可以了.
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct HomeWork
{
int deadline;
int reduce;
} hw[];
bool mark[];
int t;
int n;
int search(HomeWork a[],int x,int len)
{
int i,pl=-,min=x;
for(i=; i<len; i++)
if(mark[i]==true&&a[i].reduce<min)
{
min=a[i].reduce;
pl=i;
}
return pl;
}
bool cmp(HomeWork a ,HomeWork b)
{
if(a.deadline!=b.deadline)
return a.deadline<b.deadline;
else
return a.reduce>b.reduce;
}
int main()
{
scanf("%d",&t);
while(t--)
{
memset(mark,,sizeof(mark));
memset(hw,,sizeof(hw));
int i;
scanf("%d",&n);
for(i=; i<n; i++)
scanf("%d",&hw[i].deadline);
for(i=; i<n; i++)
scanf("%d",&hw[i].reduce);
sort(hw,hw+n,cmp); int day=,reduced=,tmp;
for(i=; i<n; i++)
{
if(day<hw[i].deadline)
{
day++;
mark[i] = true;
}
else
{
int ex = search(hw,hw[i].reduce,i);
if(ex!=-)
{
tmp=hw[ex].reduce;
hw[ex].reduce = hw[i].reduce;
hw[i].reduce=tmp;
}
reduced += hw[i].reduce;
}
} printf("%d\n",reduced); }
return ;
}
HDU 1789 Doing Homework again(贪心)的更多相关文章
- hdu 1789 Doing HomeWork Again (贪心算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 /*Doing Homework again Time Limit: 1000/1000 MS ...
- HDU 1789 - Doing Homework again - [贪心+优先队列]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- HDU 1789 Doing Homework again(贪心)
Doing Homework again 这只是一道简单的贪心,但想不到的话,真的好难,我就想不到,最后还是看的题解 [题目链接]Doing Homework again [题目类型]贪心 & ...
- hdu 1789 Doing Homework again (Greedy)
Problem - 1789 继续贪心.经典贪心算法,如果数据比较大就要用线段树来维护了. 思路很简单,只要按照代价由大到小排序,然后靠后插入即可.RE了一次,是没想到deadline可以很大.如果d ...
- HDU 1789 Doing Homework again(非常经典的贪心)
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 题解报告:hdu 1789 Doing Homework again(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 Problem Description Ignatius has just come back ...
- HDU 1789 Doing Homework again (贪心)
Doing Homework again http://acm.hdu.edu.cn/showproblem.php?pid=1789 Problem Description Ignatius has ...
- HDU - 1789 Doing Homework again(贪心) ~~~学了一波sort对结构体排序
题目中因为天数和分数是对应的,所以我们使用一个结构体来存分数和截止如期. 一开始做这道题的时候,很自然的就想到对天数排序,然后天数一样的分数从大到小排序,最后WA了之后才发现没有做到"舍小取 ...
- HDU 1789 Doing Homework again【贪心】
题意:给出n个作业的截止时间,和该作业没有完成会被扣掉的分数.问最少会被扣掉多少分. 第一次做这一题是好久之前,当时不会(不会处理两个关键字关系@_@)---现在还是不会---看了题解---原来是这样 ...
随机推荐
- hdu_5800_To My Girlfriend(变种背包)
题目链接:hdu_5800_To My Girlfriend 题意: 给你n和物品和一个重量m,让你求 题解: To My Girlfriend 令dp[i][j][s1][s2]表示前i个物品填了j ...
- 学习最短路建图 HUD 5521
http://acm.hdu.edu.cn/showproblem.php?pid=5521 题目大意:有n个点,m个集合,每个集合里面的点都两两可达且每条边权值都是val,有两个人A, B,A在po ...
- git 创建分支,删除分支,管理分支
参考 http://blog.csdn.net/dijason/article/details/9042425 查看分支: 1 查看本地分支: $ git branch 2 查看远程分支 $ g ...
- LVS + keepalived + tomcat负载均衡及高可用实现(初级)
1.首先检测Linux服务器是否支持ipvs 执行如下命令:modprobe -l|grep ipvs 输出: kernel/net/netfilter/ipvs/ip_vs.ko kernel/ne ...
- 转:SSH原理与运用(二):远程操作与端口转发
作者:阮一峰 (Image credit: Tony Narlock) 七.远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一节的操作,就是一个例子: $ ssh use ...
- Sea Battle
Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- Spring Boot 系列教程13-注解定时任务
注解 @Scheduled(cron = "0/5 * * * * ?") 相当于原来的xml版本的如下配置 <task:scheduled ref="schedu ...
- Local declaration of 'XXX' hides instance variable
今天调试程序遇到这么一个警告! Local declaration of 'XXX' hides instance variable 遇到这种原因,是因为本地变量跟函数参数变量同名.改变其一即可.
- 关于cin.getline和cin.get
<C++ Primer Plus(第六版)> P124 第8题 #include <iostream> using namespace std; struct Pizza ...
- UICollectionView 浅析
什么是UICollectionView UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView(请一定注意这是UICollectionView的最最 ...