SDUTOJ 3023 X的畅想 我人生的第一个自己AC的DP题 && 递归
2014-11-30 18:14
337 查看
X的畅想
Time Limit: 1000MS Memory limit: 65536K
题目描述
X在有了一个学妹后,就想有第二个呀,有第二个就像有第三个呀。但是X还不想和之前追到的学妹有冲突,所以只能在剩余的精力与时间里再找学妹了。那么X还能再去追几个学妹呢?如果X要在剩余精力s和剩余时间t内追学妹,而想追上一个学妹,就需要用掉一定的精力与时间,并且不同的学妹的消耗是不同的。X就要给自己考虑一下了,怎么样才能追到更多的学妹。
输入
第一行输入一个整数n(n < 100)表示要追的学妹的信息。第二行输入两个整数s,t(s < 100 , t < 100),表示X剩余的精力s和剩余的时间t。
之后连续n行,每行两个整数a,b 表示如果要追上该学妹需要消耗精力a,和花费时间b。
输出
输出一个整数,表示X可以追到学妹的最大数。
示例输入
4 10 10 2 4 2 2 3 5 3 4
示例输出
3
提示
来源
winddreams#include <stdio.h>
#include <string.h>
struct node
{
int s;
int t;
}ls[110];
bool vis[110];//标记数组,因为本题不允许一个数据被多次用
int mx,n;
void js(int jl,int st,int sum)
{
if(mx < sum)
mx = sum;
for(int i = 0;i < n;i++)
{
if(st >= ls[i].t && jl >= ls[i].s && !vis[i])
{
vis[i] = true;
int a = jl - ls[i].s;
int b = st - ls[i].t;
js(a,b,sum + 1);
vis[i] = false;
}
}
}
int main()
{
int st,jl;
mx = 0;
scanf("%d",&n);
scanf("%d%d",&jl,&st);
memset(vis,false,sizeof(vis));
for(int i = 0;i < n;i++)
{
scanf("%d%d",&ls[i].s,&ls[i].t);
}
js(jl,st,0);
printf("%d\n",mx);
return 0;
}
相关文章推荐
- hdu 2825 Wireless Password(ac自己主动机&dp)
- POJ 3691 & HDU 2457 DNA repair (AC自己主动机,DP)
- Hdu 3341 Lost's revenge (ac+自己主动机dp+hash)
- HDU 4758 Walk Through Squares && AC自动机+状压DP
- hdu 3341 Lost's revenge(AC自动机+DP)
- POJ 2778 DNA Sequence (AC自己主动机 + dp)
- bzoj 1030: [JSOI2007]文本生成器 (ac自己主动机上的dp)
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
- Poj 3691 & Hdu 2457 DNA repair (AC自动机+DP)
- HDU 2825 Wireless Password (AC自己主动机,DP)
- hdu 4057 AC自己主动机+状态压缩dp
- <仅是自己做笔记。。。系列-10>n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
- HDU 3247 Resource Archiver (AC自己主动机 + BFS + 状态压缩DP)
- HDU3341 Lost's revenge(AC自动机&&dp)
- 经典dp入门---滑雪---自己看的递推,课件给的递归,先整理个递推吧--
- AR--未来技术提前探索<2>[自己做的第一个AR]
- hdu3689&nbsp;AC自动机Dp
- HDU - 3341 Lost's revenge(AC自动机+DP)
- POJ 3691 DNA repair 基于AC自己主动机DP
- 写出自己人生的第一个小程序