DP  状态转移方程还是比较容易想到  关键问题是当前要攻击的怪兽的血量

dp[i][j] = max(dp[i-1][j]+第i只鸟不使用double可杀死的怪兽数, dp[i-1][j-1]+第i只鸟使用double可杀死的怪兽数)

dp[i][j]指前i只鸟使用j次double可杀死的怪兽数

要将m更新为m,n中的较小值 因为最多使用n次double  因为这个一直wa

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int dp[10010][110],rest[10010][110];
int ac[10010],bc[100010],n,m,k;
int cc(int acc, int &bcc, int now)
{
int flag = 1;
while(now < k)
{
if(acc > bcc)
{
acc -= bcc;
now++;
bcc = bc[now+1];
flag = 0;
}
else if(acc == bcc)
{
now++;
bcc = bc[now+1];
break;
}
else if(flag)
{
bcc -= acc;
break;
}
else
break;
}
return now;
} int main()
{
while(scanf("%d%d%d",&n,&m,&k) == 3 && n+m+k)
{
for(int i = 1; i <= n; i++)
scanf("%d",&ac[i]);
for(int i = 1; i <= k; i++)
scanf("%d",&bc[i]);
memset(dp, 0, sizeof(dp));
m = min(m, n);
rest[0][0] = rest[0][1] = bc[1];
for(int i = 1; i <= n; i++)
{
int res = rest[i-1][0];
dp[i][0] = cc(ac[i], res, dp[i-1][0]);
rest[i][0] = res;
for(int j = 1; j <= min(m, i); j++)
{
int res1 = rest[i-1][j], res2 = rest[i-1][j-1];
int k1 = cc(ac[i], res1, dp[i-1][j]), k2 = cc(ac[i]*2, res2, dp[i-1][j-1]);
if(k1 > k2)
{
dp[i][j] = k1;
rest[i][j] = res1;
}
else if(k1 < k2)
{
dp[i][j] = k2;
rest[i][j] = res2;
}
else
{
dp[i][j] = k1;
rest[i][j] = min(res1, res2);
}
}
}
printf("%d\n",dp[n][m]);
}
return 0;
}

hdu 3646的更多相关文章

  1. poj和hdu部分基础算法分类及难度排序

    最近想从头开始刷点基础些的题,正好有个网站有关于各大oj的题目分类(http://www.pythontip.com/acm/problemCategory),所以写了点脚本把hdu和poj的一些题目 ...

  2. 【hdu 1527】取石子游戏

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...

  3. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  4. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  5. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  6. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  7. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  8. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

  9. hdu 4481 Time travel(高斯求期望)(转)

    (转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...

随机推荐

  1. 软件包 java.util 的分层结构

    概述  软件包  类  使用   树  已过时  索引  帮助  JavaTM Platform Standard Ed. 6  上一个   下一个 框架    无框架    所有类         ...

  2. 自己封装的SqlHelper

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  3. SQL创建函数及应用

    用户自定义函数在SQL Server中,用户不仅可以使用标准的内置函数,也可以使用自己定义的函数来实现一些特殊的功能.用户自定义函数可以在企业管理器中创建,也可以使用CREATE FUNCTION 语 ...

  4. 【SQLServer】将Job运行结果发送电子邮件通知用户

    SQLServer2005/2008数据库邮件功能: 1. 启用数据库邮件功能:打开SQL Server 2005 外围应用配置器,选择“功能的外围应用配置器”,选择“数据库邮件”,勾选“启用数据库邮 ...

  5. OC4_电子词典

    // // MyDictionary.h // OC4_电子词典 // // Created by zhangxueming on 15/6/15. // Copyright (c) 2015年 zh ...

  6. eclipse注册码生成,在eclipse3.3.x上测试可用

    这段时间刚加入一个新的项目组,项目组使用的Flex框架. 开发工具由项目组统一提供,使用的是Eclipse 3.3.0,里面包含了其他开发人员集成上去的许多插件,个人感觉比较实用.但是这个版本Ecli ...

  7. int组成时间值

    int startYear = int.Parse(DateTime.Now.Year.ToString()); int startMouth = int.Parse(DateTime.Now.Mon ...

  8. centos7搭建NIS与NFS综合应用

    实验环境: centos7(服务端)        redhat enterprise linux 7.2(客户端) 实验目的:用centos7的账号,能在redhat enterprise linu ...

  9. DTCMS插件配置;给所有会员发信息

    插件配置  :http://www.dtcms.net/help/10.aspx 给所有人发信息 a)     将收件人设置为0即发送给所有人 b)     Templates\main\userme ...

  10. CSS 中的 em单位

    em的对应的像素值如何计算,一言以蔽之:em就是倍数当前元素font-size的倍数,其结果就是当前字体的像素值乘以em的值,至于font-size来自何处?有两个来源:继承自父元素和通过CSS直接设 ...