当前位置: 首页 > 编程日记 > 正文

[JSOI2008]魔兽地图

树上背包

题目传送门

首先,有没有哪位dalao 愿意告诉我为什么合成高级装备不需要附加金币,,

好吧,这个不重要

明确表示装备合成路线可以用一棵树来表示。一颗?傻乎乎的在下之前每次就只dp一棵树,不出意外的WA了,,在看几遍,好嘛,好像是个森林啊(泪奔)

最容易想到的dp[x][i][j]是第x件买了i个,花了j元的最高力量。但是,,这样好像就成为不可做题了(欢迎各路dalao打脸,反正不是我说的[手动滑稽](偷偷扔出FYJ挡枪)),那么换一种思路,还是dp[x][i][j],但表示的是第x件装备,用i件合成上级装备(即至少买了i件),花费j元的力量。如果i是基础装备,转移方程就直接出来了:d[x][i][j*cost[x]]=power[x]*(j-i)。

如果是高级装备呢?

那就枚举它买多少件,以及它的子装备买多少件,直接暴力转移,n^2*times^2。看看时限,3s,完全不方

在下代码比较丑,求各位不要介意

#include<bits/stdc++.h>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<deque>
#include<list>
#include<set>
#include<vector>
#include<iostream>
#define ll int
#define re register
#define inf 0x3f3f3f3f
#define inl inline
#define sqr(x) (x*x)
//#define eps 1e-8
#define debug printf("debug\n");
//#pragma comment(linker, "/STACK:1024000000,1024000000")
//#pragma GCC optimize (2)
//#pragma G++ optimize (2)
using namespace std;
//const ll mod;
const ll MAXN=3e5+10;
inl ll read() {re ll x = 0; re int f = 1;char ch = getchar();while(ch<'0'||ch>'9') { if(ch== '-' ) f = -1; ch = getchar(); }while(ch>='0'&&ch<='9') {x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x * f;
}
inl char readc() {char ch=getchar();while(('z'<ch||ch<'a')&&('Z'<ch||ch<'A')) ch=getchar();return ch;
}
inl void write(re ll x){if(x>=10)write(x/10);putchar(x%10+'0');
}
inl void writeln(re ll x){if(x<0) {x=-x;putchar('-');}write(x); puts("");
}
inl ll gcd(re ll x,re ll y){while(y^=x^=y^=x%=y);return x;}
inl void FR() {freopen(".in","r",stdin);freopen(".out","w",stdout);
}
inl void FC() {fclose(stdin);fclose(stdout);
}
struct Node {ll u,v,w,nxt;
}e[20005<<1];
ll cnt,head[60],ssw[60],g[20005],cost[60],times[60];
bool fl[60],in[60],vis[60];
ll ans[20005];
inl void adde(ll u,ll v,ll w) {e[++cnt].u=u;e[cnt].v=v;e[cnt].w=w;e[cnt].nxt=head[u];head[u]=cnt;
}
ll d[60][105][2005],n,m;
void dp(ll x) {if(vis[x]) return ;vis[x]=1;if(!fl[x]) {//基础装备 times[x]=min(times[x],m/cost[x]);for(re ll i=times[x];~i;i--) {for(re ll j=i;j<=times[x];j++) {d[x][i][j*cost[x]]=ssw[x]*(j-i);}}return ;}for(re ll h=head[x];h;h=e[h].nxt) {dp(e[h].v);cost[x]+=e[h].w*cost[e[h].v];times[x]=min(times[x],times[e[h].v]/e[h].w);}times[x]=min(times[x],m/cost[x]);for(re ll i=times[x];~i;i--) {for(re ll j=1;j<=m;j++) g[j]=-inf;g[0]=0;for(re ll h=head[x];h;h=e[h].nxt) {for(re ll k=m;~k;k--) {re ll sst=-inf;for(re ll l=0;l<=k;l++) {sst=max(sst,g[k-l]+d[e[h].v][i*e[h].w][l]);}g[k]=sst;//花k元能到的最高力量 
            }}for(re ll j=0;j<=i;j++) {for(re ll l=0;l<=m;l++) {d[x][j][l]=max(d[x][j][l],g[l]+ssw[x]*(i-j));}}}
}
int main(){
//    FR();n=read(),m=read();memset(times,inf,sizeof(times));memset(d,-inf,sizeof(d));for(re ll i=1;i<=n;i++) {ssw[i]=read();char sj[3];scanf("%s",sj);if(sj[0]=='A') {fl[i]=1;re ll c=read();for(re ll j=1;j<=c;j++) {re ll sx=read(),xs=read();if(!in[sx]) in[sx]=1;adde(i,sx,xs);}}else if(sj[0]=='B') {fl[i]=0;cost[i]=read();times[i]=read();}else puts("RE");}for(re ll i=1;i<=n;i++) {if(!in[i]) {//被坑无数次 
            dp(i);for(re ll j=m;~j;j--) {for(re ll k=0;k<=j;k++) {ans[j]=max(ans[j],ans[j-k]+d[i][0][k]);}}}}writeln(ans[m]);
//    FC();return 0;
}

转载于:https://www.cnblogs.com/20020723YJX/p/9348020.html

相关文章:

重大要素改变中的机会选择包括_财务人员专业胜任能力要素及框架

陈珏莹【本文导图】专业胜任能力要素框架的思维导图【概要】专业胜任能力要素构成了能力框架&#xff0c;因此&#xff0c;在构建各层次财务人才专业胜任能力框架之前要先界定能力要素。本文按照专业知识、职业技能和职业价值观三大部分简单介绍了各能力要素的概念。一个测评财…

tomcat部署 修改域名和访问域名时去掉项目名

修改域名和访问域名时去掉项目名 1、修改端口为80端口 因为80端口是为HTTP&#xff08;HyperText Transport Protocol)即超文本传输协议开放的&#xff0c;浏览网页服务默认的端口号都是80&#xff0c;因此只需输入网址&#xff08;或IP地址&#xff09;即可。 打开tomcat安装目…

插入始终是1_40分!1分钟4次!大JB太硬了!

不得不说&#xff0c;巴爵士对赛事的预测还是稳如死狗昨儿他在节目中表示&#xff1a;热火赢不了雄鹿不过&#xff0c;话说出来可能就后悔了&#xff0c;表示如果爪机对血布能占上风&#xff0c;雄鹿还是有点麻烦。真的&#xff0c;巴爵士不再是我们印象中的那个自信的巴毒奶老…

一维卷积filter_从零开始学Pytorch(七)之卷积神经网络

卷积神经网络基础我们介绍卷积神经网络的卷积层和池化层&#xff0c;并解释填充、步幅、输入通道和输出通道的含义。import torch from torch.autograd import Variable aVariable(torch.FloatTensor([[2.,4.]]),requires_gradTrue) btorch.zeros(1,2) b[0,0]a[0,0]**2a[0,1] b…

nodejs配置nginx 以后链接mongodb数据库

服务器 &#xff1a;windows server2008 R2 反向代理 &#xff1a;nginx 1.15.1 for window 64位 数据库&#xff1a;mongodb 4 64位 使用框架express 首先下载nodejs 在官网或者中文网下载都可以 https://nodejs.org/zh-cn/ 然后将写好的项目打包成zip 上传 一定要带上 pac…

android切图尺寸_安卓设计尺寸规范

画布尺寸&#xff1a;如果想一稿适配ios&#xff0c;那就新建7201280 分辨率72&#xff0c;像素/英寸。如果单独设计安卓MD新规范的&#xff0c;那就新建10801920 分辨率72&#xff0c;像素/英寸。单位和度量 Units and measurementsdpi 屏幕宽度(或高度)像素 / 屏幕宽度(或高…

Vue.js使用前

下载安装 node,npm,git 安装cnpm 淘宝cnpm镜像https://npm.taobao.org/&#xff0c;-g表示进行全局安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org # 全局安装 vue-cli$ npm install --global vue-cli# 创建一个基于 webpack 模板的新项目$ vue init web…

无法解析 list 中的方法 iterator_Python-list中的append()和extend()方法区别

一、append()和extend()方法都是用来添加数据到list末尾的&#xff0c;两者的区别&#xff1a;append()添加的时候会把添加的数据当成一个整体进行添加&#xff0c;允许添加任意类型的数据extend()添加的时候会把添加的数据迭代进行添加&#xff0c;只允许添加可迭代对象数据&a…

牛客网多校训练第一场 B - Symmetric Matrix(dp)

链接&#xff1a; https://www.nowcoder.com/acm/contest/139/B 题意&#xff1a; 求满足以下条件的n*n矩阵A的数量模m&#xff1a;A(i,j) ∈ {0,1,2}, 1≤i,j≤n.A(i,j) A(j,i), 1≤i,j≤n.A(i,1) A(i,2) ... A(i,n) 2, 1≤i≤n.A(1,1) A(2,2) ... A(n,n) 0.其中1≤n…

接口访问次数_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定

处理过线上问题的同学基本上都会遇到系统突然运行缓慢&#xff0c;CPU 100%&#xff0c;以及Full GC次数过多的问题。当然&#xff0c;这些问题的最终导致的直观现象就是系统运行缓慢&#xff0c;并且有大量的报警。本文主要针对系统运行缓慢这一问题&#xff0c;提供该问题的排…

python3-pwntools教程_python的pwntools工具的日常使用

1.安装操作系统&#xff1a;ubuntu16.04环境准备&#xff1a;pythonpiplibssl-devlibffi-devpwntools安装&#xff1a;sudo apt-get install libffi-devsudo apt-get install libssl-devsudo apt-get install pythonsudo apt-get install python-pipsudo pip install pwntoolsp…

Spring MVC 返回json数据 报406错误 问题解决方案

将jackson jar包改为jackson-databind-2.5.0.jar jackson-core-2.5.0.jar jackson-annotations-2.5.0.jar&#xff08;这个版本的jackson 测试返回json格式的数据百分百没问题&#xff0c;其他版本的不稳定&#xff0c;所以选用这个版本的Jackson&#xff09;ResponseBody 然…

c# 读hex_c#十六进制到位转换(c# hex to bit conversion)

c&#xff03;十六进制到位转换(c# hex to bit conversion)我试图将64位数字的十六进制表示(例如字符串"FFFFFFFFF" )转换为二进制表示( "11111..." )。我试过了string result Convert.ToString(Convert.ToUInt64(value, 16), 2);但是这会导致一个令人困惑…

pip install lxml失败原因

python3 是用 VC 14 编译的, python27 是 VC 9 编译的, 安装 python3 的包需要编译的也是要 VC 14 以上支持的. VC 14 &#xff08;2015&#xff09;下载地址&#xff1a; https://www.microsoft.com/zh-cn/download/confirmation.aspx?id48145&6B49FDFB-8E5B-4B07-BC31-1…

go语言服务器连接mysql_go语言原生连接数据库

go操作mysqldatabase/sql原生支持连接池&#xff0c;是并发安全的这个标准库没有具体实现&#xff0c;只是列出了一些需要第三方库实现的具体内容下载驱动go get -u github.com/go-sql-driver/mysql连接数据库package mainimport ("database/sql""fmt"_ &q…

2017《面向对象程序设计》寒假作业一

1、你有什么技能比大多人&#xff08;超过70%以上&#xff09;更好&#xff1f; 我看电影比一般人多一点点&#xff1b;我听英文歌比一般人多一点点&#xff1b;我有一把尤克里里和一个滑板。我有很多爱好&#xff0c;但都没能发展成我的特长&#xff0c;它们给我的生活增添了情…

gis中的加权求和工具在哪里_ArcGIS教程:加权总和的工作原理

使用加权总和工具可以对多个输入进行加权及组合&#xff0c;以创建整合式分析。它可以轻松地将多个栅格输入(代表多种因素)与组合权重或相对重要性相结合&#xff0c;在这一方面它与加权叠加工具很相似。这两种工具有两个主要区别&#xff1a;加权总和工具不能将重分类值重设为…

flask执行python程序_Flask app后如何执行代码(应用程序运行)开始

但我想使用一种方法&#xff0c;它还可以保存相机中的所有相框(我已经有功能了)。在问题是&#xff0c;一旦我启动了Flask应用程序&#xff0c;我最多只能存储在localhost中打开web页面时捕获的帧。我希望能够在应用程序运行时执行其他代码(保存图片)&#xff0c;以便保存所有图…

异常处理与MiniDump详解(3) SEH(Structured Exception Handling)

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 一、 综述 SEH--Structured Exception Handling&#xff0c;是Windows操作系统使用的异常处理方式。 对于SEH&#xff0c;有点需要说明的是&#xff0c;SEH是属于操作系统的特性&#xff0c;不为特定…

电热水器技术性能指标

1、即热式和贮水式的选择 有使用安全、卫生、不受水压限制&#xff0c;随时可供热水&#xff0c;水温易调节等优点&#xff0c;在发达的西方国家已广泛地使用&#xff0c;即热式热水器体积小&#xff0c;不须预热&#xff0c;但功率大&#xff0c;通常在4-6kw以上&#xff0…

java相关网络协议无响应_java网络协议有哪些

上网的途径有很多&#xff0c;java是最普遍的&#xff0c;那么卑java网络协议有哪些?了解网络安全常识&#xff0c;首先就要了解计算机网络安全有哪些基本注意事项&#xff0c;下面佰佰安全网小编就带您认识一下吧。概念协议是指计算机通信网络中两台计算机之间进行通信所必须…

es日期format_elasticsearch存储日期格式字段

elasticsearch创建index之后&#xff0c;可以设置mapping&#xff0c;如果mapping中没有设置date的format&#xff0c;那么默认为两种格式&#xff1a;date_optional_time 此格式为ISO8601标准 示例&#xff1a;2018-08-31T14:56:18.00008:00epoch_millis 也就是时间戳 示例151…

arraylist 后往前遍历_面试官:谈谈常用的Arraylist和Linkedlist的区别

Arraylist&#xff1a;底层是基于动态数组&#xff0c;根据下表随机访问数组元素的效率高&#xff0c;向数组尾部添加元素的效率高&#xff1b;但是&#xff0c;删除数组中的数据以及向数组中间添加数据效率低&#xff0c;因为需要移动数组。例如最坏的情况是删除第一个数组元素…

linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...

点击上方蓝字关注我吧&#xff01;为什么内推更靠谱&#xff1f;内推是基于人脉关系链的推荐&#xff0c;其背后有一定的信用背书&#xff0c;靠谱的人推荐的人相对也会比较靠谱&#xff0c;所以企业一般职位都是从内部开始分享的&#xff0c;相较于自己海投简历&#xff0c;内…

关于鼠标、键盘的几个例子

1 1. 鼠标的哪个按键被点击&#xff1f;2 <html>3 <head>4 <script type"text/javascript">5 function whichButton(event)6 {7 if (event.button2)8 {9 alert("你点击了鼠标右键!")10 }11 else12 {13 alert("你点击了鼠标左键!&qu…

mysql性能优化1

当我们去设计数据库表结构&#xff0c;对操作数据库时&#xff08;尤其是查表时的SQL语句&#xff09;&#xff0c;我们都需要注意数据操作的性能。这里&#xff0c;我们不会讲过多的SQL语句的优化&#xff0c;而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧…

java获取date的时分秒_Java 之 Date 获取 年月日时分秒

package com.util;import java.text.DateFormat;import java.util.Calendar;import java.util.Date;public class Test {public void getTimeByDate(){Date date new Date();DateFormat df1 DateFormat.getDateInstance();//日期格式&#xff0c;精确到日System.out.println(…

python中字典的value可以为任意对象_Python对象作为字典值

所以我有以下代码,其中字典的值是一个对象,该对象的关键是对象中的一个项目&#xff1a;class MyObject():def getName(self):return self.namedef getValue(self):return self.valuedef __init__(self,name, value):self.name nameself.value valuedict {}object MyObject…

Android Java使用JavaMail API发送和接收邮件的代码示例

JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件&#xff0c;必需的jar包&#xff08;请下载javamail的源文件&#xff0c;官方下载页&#xff1a;http://www.oracle.com/t…

python 包用法_Python 基础教程之包和类的用法

Python 基础教程之包和类的用法这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下Python 是一种面向对象、解释型计算机程序设计语言&#xff0c;由 Guido van Rossum 于 1989 年底发明&#xff0c;第一个公开发行版发行于 1991 年。Python 语…