HDU 1789 Doing Homework Again( 贪心 )
来源:互联网 发布:诈骗短信 知乎 编辑:程序博客网 时间:2024/05/14 05:46
题目:
有n个作业,每个作业正好一天做完。每个作业都有一个截止日期,如果在deadline之前完不成,就要扣掉相应的学分。
求解,最少扣掉多少学分
分析:
这是一道比较简单的贪心,求最少要扣多少学分,那么就要按照学分排序。但是有一个截止日期的限制,所以每个作业要在截止日期前完成才有效
那么就是先按照学分排序,如果分数相同deadline时间后的优先完成(这样可以将前面的留出来,以便后面的比较高的学分有比较靠前的deadline可以有得选择,保证结果最佳)
然后用一个bool的数组,表示每个日期是否被使用,每次要判断一个作业是否可做,就要先判断在这个作业的deadline之前有没有空闲时间去做
代码:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int T;struct node { int sc, ti;}no[1050];int n;bool vis[1050];bool cmp( node a, node b ) { if ( a.sc == b.sc ) return a.ti > b.ti; return a.sc > b.sc;} bool cando( int x ) { for ( int i = no[x].ti; i > 0; --i ) if ( !vis[i] ) { vis[i] = true; return true; } return false;}int main(){ while ( scanf("%d", &T) != EOF ) { while ( T-- ) { scanf("%d", &n); int day = 0, gra = 0; for ( int i = 0; i < n; ++i ) { scanf("%d", &no[i].ti); day = max( day, no[i].ti); } for ( int i = 0; i < n; ++i ) { scanf("%d", &no[i].sc); gra += no[i].sc; } sort( no, no+n, cmp ); memset( vis, 0, sizeof(vis) ); for ( int i = 0; i < n && day > 0 ; ++i ) { //printf("%d %d\n", tmp = cando(i), no[i].ti); if ( cando(i) ) day--, gra -= no[i].sc; } printf("%d\n", gra); } }}
- hdu 1789 Doing Homework again 贪心算法
- hdu 1789 Doing Homework again (贪心)
- hdu 1789 Doing Homework again(贪心)
- HDU 1789 Doing Homework again (贪心)
- HDU 1789 Doing Homework again (贪心)
- hdu 1789 Doing Homework again 贪心算法
- HDU 1789 Doing Homework again(贪心~!)
- HDU 1789 Doing Homework Again( 贪心 )
- hdu 1789 doing homework again 贪心
- 贪心-hdu-1789-Doing Homework again
- hdu 1789 Doing Homework again (贪心)
- HDU 1789 Doing Homework again 贪心
- HDU 1789 Doing Homework again(贪心)
- hdu 1789 Doing Homework again (贪心)
- HDU 1789 Doing Homework again (贪心)
- HDU 1789 Doing Homework again(贪心)
- HDU 1789 Doing Homework again(贪心)
- HDU 1789 Doing Homework again(贪心)
- poj 2192-动态规划-DP
- 科技行业最具创意的25个人
- Kinect SDK v1.7 新特性、交互框架与新概念
- ejs简单语法介绍
- Dex Loader Unable to execute Multiple dex files define解决方法
- HDU 1789 Doing Homework Again( 贪心 )
- Glance源码架构探秘(四)
- xcode反汇编调试iOS模拟器程序(一)查看反汇编
- c#区分传值调用 传引用调用。
- KeilMDK4.7a下载地址/中文乱码解决/自动关联设置
- jQuery中的setTimeout用法
- 入了解android平台的jni(一)
- 采集卡的一些文章
- C#里的&&与&