csu(背包的变形题)
来源:互联网 发布:淘宝女装店铺头像 编辑:程序博客网 时间:2024/05/18 01:29
题目链接
这是一道背包的变形题目。好题呀
题意:给n个怪物,m个人,每个人的魔法消耗和魔法伤害不同,求打死所有怪物所需的魔法
#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>//#include<u>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<time.h>#include<math.h>#define ll long long#define inf 0x7fffffff#define eps 1e-9#define pi acos(-1.0)#define P system("pause")using namespace std;int ph[105];//每个怪物的phvector<pair<int ,int> > a[2];//a[0]放攻击范围为All的怪物信息,a[1]放攻击范围为Single的怪物信息int dp[2][100005];//dp[0][i]表示攻击范围为All的人使用i的魔法能对每个怪物产生的伤害,dp[1][i]是针对攻击范围为Single的人int main(){//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout); ios::sync_with_stdio(false); int n,m;//n个怪物,m个人 while(cin>>n) { a[0].clear(); a[1].clear(); int mp,damage; int i,j,k; char str[20]; for(i = 0; i < n; i++) cin>>ph[i]; cin>>m; bool flag = 0; for(i = 0; i < m; i++) { cin>>str>>mp>>str>>damage; if(str[0] == 'A') a[0].push_back(make_pair(mp,damage)); else a[1].push_back(make_pair(mp,damage)); if(mp == 0 && damage > 0) flag = 1;//如果有人的魔法消耗为0,并且输出伤害大于0,那么无需消耗魔法 } if(flag) { cout<<"0\n";continue;} memset(dp,0,sizeof(dp)); for(i = 0; i < 2; i++) { int len = a[i].size(); for(j = 0; j < len; j++)//这里相当于是完全背包 for(k = a[i][j].first; k < 100002; k++) dp[i][k] = max(dp[i][k], dp[i][k - a[i][j].first] + a[i][j].second); } ll ans = (1ll<<61),temp; for(i = 0; i < ans; i++)//遍历消耗魔法为i,攻击范围是ALL的情况 { temp = i; for(j = 0; j < n; j++) { ll k = ph[j] - dp[0][i];//k是剩下的血量 if(k <= 0) continue; temp += (lower_bound(dp[1],dp[2],k) - dp[1]); //lower_bound 查找第一个插入元素但不影响序列有序性的位置, } } ans = min(ans,temp); } cout<<ans<<endl; } return 0;}
0 0
- csu(背包的变形题)
- 变形的背包问题
- 01背包的变形
- 背包问题的变形
- 01背包的变形
- csu 1640 机智的刷题方式(完全背包)
- 完全背包的变形POJ1252
- UVA12563 01背包的变形
- O题 分组背包变形
- CSU C(1972): 大梵天的恩赐 -汉诺塔变形-双层汉诺塔
- CSU 1979: 古怪的行列式(DFS八皇后变形)
- hdu2955(变形的01背包)
- 简单的背包变形HDU1203,HDU2955
- hdu 1203 0-1背包的变形
- poj 2184 0---1背包的变形
- POJ1717 Dominoes DP,背包的变形
- POJ 2063 Investment 变形的完全背包
- hdu2955 Robberies 01背包的变形
- 使用eclipse编译含有C++11特性的代码
- OpenCV中的Mat阵列操作
- 流行移动应用自动化测试开源框架/工具之优劣势比较
- jquery 选择器 之 nth-child
- 周报(第七周)
- csu(背包的变形题)
- android系统移植之iMX53按键驱动篇
- CSDN第一篇
- DM642图像处理程序的主要结构
- 队列简易应用
- 矩阵翻硬币 蓝桥杯
- 【leetcode】Simplify Path
- windows简单窗口程序
- 用SAX来解析XML