博洋教育今日就业明星:李祖张就职福建福诺移动通信技术担任java工程师
独家揭秘明星背后鲜为人知的故事:福建工程学院计算机科学与技术专业,本科学历。在博洋教育参加JAVA软件项目实训,该生学习态度端正,有比较好的学习心态,会主动请教老师同学。毕业后经过就业部老师的推荐,现在成功入职福建福诺移动通信技术有限公司。
博洋教育热线:
QQ:
联系人:廖老师
地址:福州市鼓楼区铜盘路软件园软件管委会大楼3楼网址:
题意:
有n种技能,每种技能只能用一次,怪物有m点血,问最少需要多少种技能可以把怪物杀死。
每种技能有两个数值a和b,a表示攻击力,b表示当怪物的血量小于等于b时,这种技能的攻击力可以变为2a.
一点攻击力可以杀掉怪物一点血。
简单深搜
加了一个剪枝后从421MS瞬间降到93MS
code:
#include
#include
structnode{
intM,spell;
}a[11];
inthp,n;
intvis[11];
intans;
voiddfs(intk,intHP){
inti;
if(k>=ans)return;
if(HP<=0){
if(ans>k)
ans=k;
return;
}
for(i=1;i<=n;i++)
if(!vis[i]){
vis[i]=1;
HP<=a[i].M?dfs(k+1,HP-a[i].spell*2):dfs(k+1,HP-a[i].spell);
vis[i]=0;
}
}
intmain(){
inti;
while(~scanf("%d%d",&n,&hp)){
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].spell,&a[i].M);
ans=12;
memset(vis,0,sizeof(vis));
dfs(0,hp);
if(ans!=12)printf("%d\n",ans);
elseprintf("-1\n");
}
return0;
}
#include
#include
structnode{
intM,spell;
}a[11];
inthp,n;
intvis[11];
intans;
voiddfs(intk,intHP){
inti;
if(k>=ans)return;
if(HP<=0){
if(ans>k)
ans=k;
return;
}
for(i=1;i<=n;i++)
if(!vis[i]){
vis[i]=1;
HP<=a[i].M?dfs(k+1,HP-a[i].spell*2):dfs(k+1,HP-a[i].spell);
vis[i]=0;
}
}
intmain(){
inti;
while(~scanf("%d%d",&n,&hp)){
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].spell,&a[i].M);
ans=12;
memset(vis,0,sizeof(vis));
dfs(0,hp);
if(ans!=12)printf("%d\n",ans);
elseprintf("-1\n");
}
return0;
}