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 ...
随机推荐
- ssh公私钥登录方式设置
在Linux中ssh登录远程主机的时候能够进行公私钥的认证方式. ①环境说明:两台Linux主机,host1:192.168.5.1,host2:192.168.5.10. 如今在host1上面设置然 ...
- 多线程程序 怎样查看每个线程的cpu占用
可以用下面的命令将 cpu 占用率高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu 这个命令首先指定参数'H',显示线程相关的 ...
- 内外连接、组函数、DDL、DML和TCL
前言 cross join ,是笛卡尔积:nature join 是自然连接. 正文 内外连接 inner join inner join 的inner能够省略. 内连接 在一个表中可以找到在还有一个 ...
- CLR via C# - Char_String - Format
//前面那个本来想重新编辑的,但是那个编辑器之前被我调到Markdown之后,改回Tiny MCE编辑器不出来 1.ToString()方法 & IFormattable & IFor ...
- Nohttp请求图片的两种简答的方式:普通请求以及缓存请求
开局声明:这是基于nohttp1.0.4-include-source.jar版本写的教程 由于nohttp功能强悍,因此需要多种权限,仅仅一个联网的权限是不够的,如果只给了Internet的权限,去 ...
- cocos2d-x 2.2.6中c++通过JNI与java互调
1.HelloCpp.java /**************************************************************************** Copyri ...
- (原)opencv直线拟合fitLine
转载请注明出处 http://www.cnblogs.com/darkknightzh/p/5486234.html 参考网址: http://blog.csdn.net/thefutureisour ...
- Java的String&StringBuffer&StringBuilder
一:String类 1.String对象的初始化 由于String对象特别用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = "ab ...
- CentOS 安装redis2.8.13 提醒"libc.so.6: version `GLIBC_2.14' not found"系统的glibc版本太低
以下在系统CentOS 6.3 x86_64上操作 1.试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的gli ...
- ecos编译redboot,vmware运行redboot,执行hello world(图形配置)
1- 下载源文件 :~/ecos$ ls -lrt total 80 drwxr-xr-x 7 XXXX XXXX 4096 Mar 27 2009 ecos-3.0 -rw-r--r-- 1 X ...