主题链接:HDU 2616 Kill the monster

意甲冠军:有N技能比赛HP有M怪物,技能(A,M),能伤害为A。当怪兽HP<=M时伤害为2*A。

求打死怪兽(HP<=0)用的最少技能

方法一:将技能全排列。计算伤害。得到答案。

方法二:搜索,详细看代码。

全排列AC代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
struct node
{
    int p,v;
};
struct node st[30];

int main()
{
    int n,d,i;
    int t[30];
    int ans;
    while(scanf("%d %d",&n,&d)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d %d",&st[i].p,&st[i].v);//p掉血,V double
            t[i]=i;
        }
        int sum;
        ans=100;
        do
        {
            sum=d;
            int count=0;
            for(i=0;i<n;i++)
            {
                if(sum<=st[t[i]].v)
                    sum-=st[t[i]].p*2;
                else
                    sum-=st[t[i]].p;
                count++;
                if(sum<=0)
                    break;
            }
            if(sum<=0)
                ans=min(ans,count);
        }while(next_permutation(t,t+n));
        if(ans==100)
            printf("-1\n");
        else
            printf("%d\n",ans);
    }
    return 0;
}

搜索AC代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
struct spell
{
	int a,m;
};
struct spell sp[20];
int n,ans,flag;
bool vis[30];
void dfs(int p,int sum)
{
	int i;
	if(sum<=0)
	{
		flag=1;
		ans=min(ans,p);
		return ;
	}
	for(i=0;i<n;i++)
	{
		if(!vis[i])
		{
			vis[i]=true;
			if(sum<=sp[i].m)
				dfs(p+1,sum-sp[i].a*2);
			else
				dfs(p+1,sum-sp[i].a);
			vis[i]=false;
		}
	}
}
int main()
{
	int i;
	int m;
	while(scanf("%d %d",&n,&m)!=EOF)
	{
		flag=0;
		memset(vis,false,sizeof vis);
		for(i=0;i<n;i++)
			scanf("%d %d",&sp[i].a,&sp[i].m);
		ans=n;
		dfs(0,m);
		if(flag)
			printf("%d\n",ans);
		else
			printf("-1\n");
	}
	return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

HDU 2616 Kill the monster (暴力搜索 || 终极全阵列暴力)的更多相关文章

  1. hdu 2616 Kill the monster (DFS)

    Kill the monster Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. 随手练——洛谷-P1151(枚举与暴力搜索)

    枚举 #include <iostream> using namespace std; int main() { ; cin >> k; ; i < ; i++) { ) ...

  3. hdu 4740 The Donkey of Gui Zhou(暴力搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...

  4. HDU 3131 One…Two…Five! (暴力搜索)

    题目链接:pid=3131">HDU 3131 One-Two-Five! (暴力搜索) 题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6= ...

  5. hdu 1427 速算24点 dfs暴力搜索

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem De ...

  6. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

  7. HDU 1312 Red and Black --- 入门搜索 BFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  8. HDU 1312 Red and Black --- 入门搜索 DFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  9. 枚举进程——暴力搜索内存(Ring0)

    上面说过了隐藏进程,这篇博客我们就简单描述一下暴力搜索进程. 一个进程要运行,必然会加载到内存中,断链隐藏进程只是把EPROCESS从链表上摘除了,但它还是驻留在内存中的.这样我们就有了找到它的方法. ...

随机推荐

  1. qt做触摸屏演示程序

    界面效果图: 参考资料: http://blog.csdn.net/orz415678659/article/details/9136575     这个最重要.. https://www.oschi ...

  2. STM32正交编码器驱动电机

    1.编码器原理        什么是正交?如果两个信号相位相差90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向. 这里使用了TI12模式,例如当T1上升 ...

  3. NEC学习 ---- 模块 -多行式面包屑导航

    如上面形式面包屑的写法: HTML如下, <div class="m-crumb"> <ul class="f-cb"> <li& ...

  4. G面经prepare: Maximum Subsequence in Another String&#39;s Order

    求string str1中含有string str2 order的 subsequence 的最小长度 DP做法:dp[i][j]定义为pattern对应到i位置,string对应到j位置时,shor ...

  5. linux包之diff

    [root@84-monitor ~]# rpm -qf /usr/bin/diffdiffutils-2.8.1-28.el6.x86_64[root@84-monitor ~]# rpm -ql ...

  6. 在Linux下用netstat查看网络状态、端口状态

    在Linux下用netstat查看网络状态.端口状态 在linux一般使用netstat 来查看系统端口使用情况步. netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实 ...

  7. CF437D(The Child and Zoo)最小生成树

    题目: D. The Child and Zoo time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  8. (译+注解)node.js的C++扩展入门

    声明:本文主要翻译自node.js addons官方文档.部分解释为作者自己添加. 编程环境: 1. 操作系统 Mac OS X 10.9.51. node.js v4.4.22. npm v3.9. ...

  9. oracle的安装与卸载

    安装oracle: 下载符合系统要求的oracle数据库 2.   将上面的压缩文件都解压到一个文件夹中,然后以管理员的身份运行其中的可执行文件(.exe) 3. 配置安全更新(可选可不选,学习时我没 ...

  10. weex中使用sass(失败)

    在编辑器中可以正常编写不报错  但是在页面上不起作用 <style lang="scss" scoped></style> 第一步  安装依赖 npm i ...