贪心 HDU.OJ 2037 今年暑假不AC
2017-11-13 22:03
211 查看
贪心(今年暑假不AC):
排完序之后时间的排列顺序为:
1 ---> 3
3 ---> 4
0 ---> 7
3 ---> 8
2 ---> 9
5 ---> 10
6 ---> 12
4 ---> 14
10 --> 15
8 ---> 18
15 --> 19
15 --> 20
贪心过程:
当前最优解的变换过程:
1>. (1 - 3) (3 - 4) (5 - 10) (10 - 15) (15 - 19) 可参加活动数为 5;
2>. (3 - 4) (5 - 10(10 - 15(15 - 19) 可参加活动数为 4;
3>. (0 - 7) (10 - 15) (15 - 19) 可参加活动数为 3;
。。。。。
贪心:
贪心算法一般来说是解决“最优问题”,具有编程简单、运行效率高、空间复杂度低 等特点。
贪心算法一般是求“最优解”这类问题的。
最优解问题可描述为:有 n 个输入,它的 解是由这 n 个输入的某个子集组成,
并且这个子集必须满足事先给定的条件。
这个条件称 为约束条件。而把满足约束条件的子集称为该问题的可行解。
这些可行解可能有多个。为 了衡量可行解的优劣,事先给了一个关于可行解的函数,称为目标函数。
目标函数最大(或 最小)的可行解,称为最优解。
HDU.OJ 2037 今年暑假不AC
#include <bits/stdc++.h>
using namespace std;
struct qujian
{
int x, y;
}zu[100020];
int cmp(qujian a, qujian b)//先按结束时间排序
{
if(a.y != b.y)
return a.y < b.y;
if(a.x != b.x)
return a.x < b.x;
}
int main()
{
int n, t, m, i;
while(~scanf("%d",&t))//测试组数
{
while(t--)
{
scanf("%d", &n);
m = 1;//最多活动数
for(i = 0; i < n; i++)
{
scanf("%d%d", &zu[i].x, &zu[i].y);
}
sort(zu, zu+n, cmp);
int start = zu[0].y;
for(i = 1; i < n; i++)
{
if(start <= zu[i].x)
{
start = zu[i].y;
m++;
}
}
printf("%d\n", m);
}
}
return 0;
}
排完序之后时间的排列顺序为:
1 ---> 3
3 ---> 4
0 ---> 7
3 ---> 8
2 ---> 9
5 ---> 10
6 ---> 12
4 ---> 14
10 --> 15
8 ---> 18
15 --> 19
15 --> 20
贪心过程:
当前最优解的变换过程:
1>. (1 - 3) (3 - 4) (5 - 10) (10 - 15) (15 - 19) 可参加活动数为 5;
2>. (3 - 4) (5 - 10(10 - 15(15 - 19) 可参加活动数为 4;
3>. (0 - 7) (10 - 15) (15 - 19) 可参加活动数为 3;
。。。。。
贪心:
贪心算法一般来说是解决“最优问题”,具有编程简单、运行效率高、空间复杂度低 等特点。
贪心算法一般是求“最优解”这类问题的。
最优解问题可描述为:有 n 个输入,它的 解是由这 n 个输入的某个子集组成,
并且这个子集必须满足事先给定的条件。
这个条件称 为约束条件。而把满足约束条件的子集称为该问题的可行解。
这些可行解可能有多个。为 了衡量可行解的优劣,事先给了一个关于可行解的函数,称为目标函数。
目标函数最大(或 最小)的可行解,称为最优解。
HDU.OJ 2037 今年暑假不AC
#include <bits/stdc++.h>
using namespace std;
struct qujian
{
int x, y;
}zu[100020];
int cmp(qujian a, qujian b)//先按结束时间排序
{
if(a.y != b.y)
return a.y < b.y;
if(a.x != b.x)
return a.x < b.x;
}
int main()
{
int n, t, m, i;
while(~scanf("%d",&t))//测试组数
{
while(t--)
{
scanf("%d", &n);
m = 1;//最多活动数
for(i = 0; i < n; i++)
{
scanf("%d%d", &zu[i].x, &zu[i].y);
}
sort(zu, zu+n, cmp);
int start = zu[0].y;
for(i = 1; i < n; i++)
{
if(start <= zu[i].x)
{
start = zu[i].y;
m++;
}
}
printf("%d\n", m);
}
}
return 0;
}
相关文章推荐
- HDU 2037 今年暑假不AC(贪心,区间更新,板子题)
- HDU - 2037 今年暑假不AC (贪心模板 DP)
- hdu 2037 今年暑假不AC(贪心啊~~~活动安排典型题!)
- HDU 2037 今年暑假不AC ( 起始与终止时间 【贪心】)
- HDU 2037 今年暑假不AC(简单贪心)
- HDU 2037 - 今年暑假不AC(贪心)
- HDU 2037 今年暑假不AC【贪心】
- hdu 2037 今年暑假不AC(简单贪心)
- HDU 2037 今年暑假不AC【贪心】
- 【杭电OJ】2037-今年暑假不AC(经典贪心)
- HDU 2037 今年暑假不AC(简单贪心)
- HDU 2037 今年暑假不AC(贪心)
- HDU 2037 今年暑假不AC(贪心)
- hdu 2037 今年暑假不AC(贪心)
- HDU 2037 今年暑假不AC (贪心)
- hdu_2037 今年暑假不AC----贪心
- HDU2037今年暑假不AC(贪心)
- 【贪心】HDU 2037 今年暑假不AC
- hdu 2037 今年暑假不AC【贪心入门题目】
- hdu 2037 今年暑假不AC 贪心