HDU2037 贪心 动归均可+证明
|
动归:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
int s;
int t;
}node;
node a[10001];
int F[25];
int cmp(const void *i,const void *j)
{ node *ii=(node *)i,*jj=(node *)j;
if(ii->t!=jj->t)
return ii->t-jj->t;
else
return ii->s-jj->s;
}
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
int n,i,j;
while(scanf("%d",&n)!=EOF&&n!=0)
{
memset(F,0,sizeof(F));
memset(a,0,sizeof(a));
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].s,&a[i].t);
qsort(a+1,n,sizeof(a[1]),cmp);
j=1;
for(i=0;i<=100;i++)
{
if(i!=0)
F[i]=F[i-1];
for(;j<=n;j++)
{
if(a[j].t<i) {continue;}
if(a[j].t>i) {break;}
F[i]=max(F[i],F[a[j].s]+1);
}
}
printf("%d\n",F[100]);
}
return 0;
}
贪心证明(利用数学归纳法):
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
int s;
int t;
}node;
node a[10001];
int ans=0;
int cmp(const void *i,const void *j)
{ node *ii=(node *)i,*jj=(node *)j;
if(ii->t!=jj->t)
return ii->t-jj->t;
else
return ii->s-jj->s;
}
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
int main()
{
freopen("a.in","r",stdin);
freopen("b.out","w",stdout);
int n,i,j,end;
while(scanf("%d",&n)!=EOF&&n!=0)
{
ans=0;end=0;
memset(a,0,sizeof(a));
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].s,&a[i].t);
qsort(a+1,n,sizeof(a[1]),cmp);
for(i=1;i<=n;i++)
{
if(a[i].s>=end)
ans++,end=a[i].t;
}
printf("%d\n",ans);
}
return 0;
}
HDU2037 贪心 动归均可+证明的更多相关文章
- CF2B The least round way(贪心+动规)
题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...
- [HDU2037]贪心入门
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU6438 Buy and Resell 解题报告(一个有趣的贪心问题的严格证明)
写在前面 此题是一个很容易想到的贪心题目,但是正确性的证明是非常复杂的.然而,目前网上所有题解并未给出本题贪心算法的任何正确性证明,全部仅停留在描述出一个贪心算法.本着对算法与计算机科学的热爱(逃), ...
- The - Modcrab——使用贪心策略
一.题目信息 The - Modcrab 简单翻译一下:Vova有生命值h1,每次攻击值为a1,每瓶药水恢复生命值c1;Modcrab有生命值h2,每次攻击值为a2.在每个关卡开始,Vova有两种选择 ...
- noip知识点总结之--贪心
一.什么是贪心 贪心算法嘛... 就是在对某个问题求解时,总是做出在当前看来是最好的选择 In other wors,并不是从整体最优上加以考虑,而是在获得某种意义上的局部最优解 二.贪心算法的适用前 ...
- 最大公约数(gcd):Euclid算法证明
1个常识: 如果 a≥b 并且 b≤a,那么 a=b. 2个前提: 1)只在非负整数范围内讨论两个数 m 和 n 的最大公约数,即 m, n ∈ N. 2)0可以被任何数整除,但是0不能整除任何数,即 ...
- 剑指Offer——贪心算法
剑指Offer--贪心算法 一.基本概念 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.虽然贪心算法不能对 ...
- 【贪心算法】POJ-3040 局部最优到全局最优
一.题目 Description As a reward for record milk production, Farmer John has decided to start paying Bes ...
- CodeForcesdiv1:995C - Leaving the Bar(随机算法+贪心)
For a vector →v=(x,y)v→=(x,y), define |v|=√x2+y2|v|=x2+y2. Allen had a bit too much to drink at the ...
随机推荐
- servlet核心API的UML图
- 关于降低android手机摄像头预览分辨率
假设现在有这样一个需求需要一直开着手机摄像头 但是不做任何拍照动作 但是每个手机的相机分辨率都不同 而默认预览的时候参数是最大分辨率 这样有时候就回导致电量损耗的加快 所以我们可以采取降低相机分辨率的 ...
- mysql事件调度器
#查看mysql事件调度器是否开启 SHOW VARIABLES WHERE Variable_name = 'event_scheduler'; #开启mysql事件调度器功能 SET GLOBAL ...
- ios 获取屏幕的属性
屏幕尺寸 CGRect screen = [UIscreen mainScreen].bounds 状态栏尺寸 CGRect rect = [[UIApplication sharedApp ...
- hdu1860
#include<iostream> #include <stdio.h> #include<string> #include <iomanip> us ...
- (原)Eclipse中将JNI生成的so打包成jar的步骤
说明:新人,对java不熟,见谅. 1. 新建工程,添加好native support,写好对应的文件(包括cpp文件,so文件和对应的java文件,此处称对应的java文件为SoJAR.java,) ...
- JS创建类和对象(好多方法哟!)
http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 这是别人写的~~~我借来看看 JavaScript 创建类/对象的几种方式 ...
- 宽带连接工具[bat]
功能概述: 本工具使用批处理编写,提供自动判断网络状态以决定断开或是连上网络,本月已用宽带时长,到月初自动清零.提供联网日志功能,可以记录下所有的连接或断开网络记录.如果连接失败,自动提示输入密码,特 ...
- java中Timer计时器使用
1.新建计时器Timer对象 2.给计时器安排任务,schedule方法 3.取消计时器中分配的任务,purge方法 4.终止计时器,cancel方法 注意:如果计时器已经终止,还要给计时器安排任务, ...
- ASP.NET用户自定义控件配置
一直以来开发中碰到要写自定义控件的时候总是习惯性的找度娘,而没有自己记住,结果今天就悲剧了,找了半天才找到,想想还是自己积累起来吧! 第一种配置方式: 配置写在webconfig文件中,位置如下: w ...