codevs 2610 活动选择(贪心)(测试数据有错)
来源:互联网 发布:大久保利通知乎 编辑:程序博客网 时间:2024/05/21 05:22
题目描述 Description
假设有一个需要使用某一资源的n(n≤1000)个活动组成的集合S,S={1,…,n}。该资源一次只能被一个活动占有,每一个活动有一个开始时间bi和结束时间ei(bi≤ei)。若bi>ej或者bj>ei,则活动i和活动j兼容。
你的任务是是:选择由互相兼容的活动组成的最大集合。
输入描述 Input Description
共n+1行,其中第1行为n,第2行到第n+1行表示n个活动的开始时间和结束时间(中间用一个空格隔开),格式为:
n
b1 e1
…….
bn en
输出描述 Output Description
共有两行,第1行为满足要求的活动占用的时间t,第2行为最大集合中的活动序号,每个序号之间用一个空格隔开。
样例输入 Sample Input
11
3 5
1 4
12 14
8 12
0 6
8 11
6 10
5 7
3 8
5 9
2 13
样例输出 Sample Output
14
2 3 6 8
数据范围及提示 Data Size & Hint
数据范围不大,不用考虑。
思路:按结束时间排个序,然后贪心的取即可(注意活动占用的时间t是将所选的每一个活动占用的时间相加)
然后这题我只过了50%的数据,后面数据有误。
这些是什么鬼数据??
下面是过了50%的代码
#include <stdio.h>#include <bits/stdc++.h>using namespace std;const int N=1005;struct node { long long int b,e; int number;};node s[N];int num[N];bool cmp(node x,node y){ if(x.e<y.e) return 1; else return 0;}int main(){ int n; cin>>n; for(int i=0;i<n;i++) { cin>>s[i].b>>s[i].e; s[i].number=i+1; } sort(s,s+n,cmp); int f=1; long long int end=s[0].e; long long int sum=0; num[0]=s[0].number; sum+=s[0].e-s[0].b+1; for(int i=1;i<n;i++) { if(s[i].b>end) { end=s[i].e; sum+=s[i].e-s[i].b+1; num[f]=s[i].number; f++; } } cout<<sum<<endl; sort(num,num+f); cout<<num[0]; for(int i=1;i<f;i++) cout<<" "<<num[i]; return 0;}
阅读全文
0 0
- codevs 2610 活动选择(贪心)(测试数据有错)
- 活动选择(贪心)
- 【codevs 2610】活动选择
- 活动选择问题(贪心)
- 活动选择问题(贪心)
- 活动选择(贪心算法) p226
- 活动选择问题(贪心法)
- 活动选择问题(动态规划算法和贪心算法)
- 活动选择问题(算法导论第十六章贪心算法)
- 活动选择问题(动态规划和贪心算法)
- 活动选择问题(贪心算法vs动态规划)
- 活动选择问题(2)-贪心方法分析
- 算法导论程序40--贪心算法(活动选择问题)
- 算法学习(贪心算法一)活动选择问题
- 贪心B 活动选择问题(很经典)
- 活动选择问题(活动安排问题)(最大数目活动选择问题)贪心算法C++实现
- 活动选择问题(活动安排问题)(最大数目活动选择问题)贪心算法C++实现
- 贪心算法-活动选择
- 第6章 渲染Web视图----Thymeleaf --笔记3
- 文艺评论与文艺理论(当代文学、当代作家)
- Spring MVC+Kaptcha实现验证码功能
- 死亡21点 游戏开发 2nd —— 数据创建和游戏界面
- 【机器学习算法模型】聚类算法——EM
- codevs 2610 活动选择(贪心)(测试数据有错)
- Linux (CentOS 7.3) 下安装JAVA环境和Tomcat环境启动Tomcat服务器
- EXCEL导出工具类
- Kotlin特色风格实现gof设计模式
- 工作笔记-增加swap分区空间
- 【机器学习算法模型】关联分析——Apriori
- 位运算 FZU
- leetcode 174. Dungeon Game 这一题刷得太有意思了
- Linux大棚命令百篇•上——基础工具篇