配置魔药(DP)
配置魔药 【问题描述】
在《Harry Potter and the Chamber of Secrets》中,Ron的魔杖因为坐他老爸的Flying
Car撞到了打人柳,不幸被打断了,从此之后,他的魔杖的魔力就大大减少,甚至没办法执行他施的魔咒,这为Ron带来了不少的烦恼。这天上魔药课,Snape要他们每人配置一种魔药(不一定是一样的),Ron因为魔杖的问题,不能完成这个任务,他请Harry在魔药课上(自然是躲过了Snape的检查)帮他配置。现在Harry面前有两个坩埚,有许多种药材要放进坩埚里,但坩埚的能力有限,无法同时配置所有的药材。一个坩埚相同时间内只能加工一种药材,但是不一定每一种药材都要加进坩埚里。加工每种药材都有必须在一个起始时间和结束时间内完成(起始时间所在的那一刻和结束时间所在的那一刻也算在完成时间内),每种药材都有一个加工后的药效。现在要求的就是Harry可以得到最大的药效。
【输入文件】(medic.in)
输入文件的第一行有2个整数,一节魔药课的t(1≤t<≤500)和药材数n(1≤n≤100)。
输入文件第2行到n+1行中每行有3个数字,分别为加工第i种药材的起始时间t1、结束时间t2、(1≤t1≤t2≤t)和药效w(1≤w≤100)。
【输出文件】(medic.out)
输出文件medic.out只有一行,只输出一个正整数,即为最大药效。
【输入样例】
7 4
1 2 10
4 7 20
1 3 2
3 7 3
【输出样例】
35
【注释】
本题的样例是这样实现的:第一个坩埚放第1、4种药材,第二个坩埚放第2、3种药材。这样最大的药效就为10+20+2+3=35。
【数据规模】
对于30%的数据
1<=t<=500
1<=n<=15
1<=w<=100
1<=t1<=t2<=t
对于100%的数据
1<=t<=500
1<=n<=100
1<=w<=100
1<=t1<=t2<=t
/*
DP.
这题一开始想前i个物品
1锅放j个2锅放k个的最优值.
然后不知道最后是谁放的
没法通过状态转移(就得开5维了orz)
f[i][j][k]直接表示
前i个物品1锅最后放j 2锅最后放k的最优值.
先排一遍序不然乱序转移没法搞.
然后跑背包就可以了..
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#define MAXN 101
using namespace std;
int f[MAXN][MAXN][MAXN],n,m,ans;
struct data{int x,y,z;}s[MAXN];
bool cmp(const data &x,const data &y)
{
if(x.x!=y.x)
return x.x<y.x;
return x.y<y.y;
}
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
int main()
{
m=read();n=read();
for(int i=1;i<=n;i++)
s[i].x=read(),s[i].y=read(),s[i].z=read();
sort(s+1,s+n+1,cmp);
for(int i=1;i<=n;i++)
for(int j=0;j<i;j++)
for(int k=0;k<i;k++)
{
if(s[j].y<s[i].x)
f[i][i][k]=max(f[i-1][i][k],f[i-1][j][k]+s[i].z);
if(s[k].y<s[i].x)
f[i][j][i]=max(f[i-1][j][i],f[i-1][j][k]+s[i].z);
ans=max(ans,max(f[i][i][k],f[i][j][i]));
}
printf("%d",ans);
return 0;
}
配置魔药(DP)的更多相关文章
- 配置魔药 [NOIP模拟] [DP] [费用流]
问题描述在<Harry Potter and the Chamber of Secrets>中,Ron 的魔杖因为坐他老爸的 Flying Car 撞到了打人柳,不幸被打断了,从此之后,他 ...
- rnqoj-99-配置魔药-dp
比较好的题目~~ dp[j][k]: 第一个容器在第i秒和第二个容器在第j秒,所产生的最大魔力. if(num[i].t2<=j)dp[j][k]=max(dp[j][k],dp[num[i]. ...
- IT6563替代芯片|DP转HDMI 2.0音视频讯号转换芯片|CS5263Capstpne
IT6563替代芯片|CS 5263|4LAN DP转HDMI 2.0音视频讯号转换芯片IT6563是一款4LAN EDP转HDMI2.0 HDMI2.0转换器芯片.IT6563FN结合Display ...
- IT6563|4LAN DP转HDMI 4K60HZ /2.0转换方案|CS5263替代IT6563
IT6563是一款4通道DisplayPort1.2到HDMI 4K60Hz转换器,IT6563结合DisplayPort接收机和HDMI发射机,通过转换功能支持DisplayPort输入和HDMI输 ...
- 替代联阳IT6564方案|CS5262替代IT6564|设计DP转HDMI+VGA扩展坞方案
联阳IT6564:带嵌入式MCU的单芯片4通道DisplayPort1.2到HDMI2.0/VGA转换器 联阳IT6564是一种高性能的单芯片显示端口到HDMI和VGA转换器.IT6564FN结合Di ...
- CS5211|DP转LVDS |低成本DP to LVDS Conversion 方案设计
目前市面上DP转LVDS转换--DP to LVDS Conversion 方案设计有以下: 龙迅LT8911 LT7211.普瑞PS8625.昆泰CH7511等方案,DP换LVDS转换主要是用在一些 ...
- noip2017颓废记
作为一个从初中就开始学信息的蒟蒻,自然要去提高组了~~~ 比赛前day1 跟平常一样在机房颓废着,上午在洛谷看到了站长大人的忠告后,看了看模板题,发现没几个会打的(正常). 下午想一想发现自己的dp垃 ...
- 西门子 S7-300 PLC 从入门到精通的100个经典问题
1:使用CPU 315F和ET 200S时应如何避免出现“通讯故障”消息? 使用CPU S7 315F, ET 200S以及故障安全DI/DO模块,那么您将调用OB35 的故障安全程序.而且,您已 ...
- AEAI DP V3.6.0 升级说明,开源综合应用开发平台
AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...
随机推荐
- 怎样获取所有的embed节点对象
<embed>是H5中新增的标签, 可以通过: document.embeds 和 document.plugins 获取所有的 embed 节点 document.embeds === ...
- TCP协议探究(二):超时与重试
1 概述 TCP提供可靠的运输层. 可靠性保证之一:确认从另一端收到的数据. 但数据和确认都有可能会丢失.TCP通过在发送时设置一个定时器来解决这种问题. 如果当定时器溢出时还没有收到确认,它就重传该 ...
- Unable to bind to http://localhost:8080 on the IPv6 loopback interface: 'Cannot assign requested address'.
.net core+nginx警告: warn: Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5 ...
- python 读取文件行
将文件转化成二进制码,并读取行数,计算总行数 import os Str=input("请输入路径") Sum=0 def read(Str): a = os.listdir(St ...
- java中long类型转换为int类型
由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 [java] l ...
- # 机器学习算法总结-第六天(Adaboost算法)
SKlearn中的Adaboost使用 主要调的参数:第一部分是对我们的Adaboost的框架进行调参, 第二部分是对我们选择的弱分类器进行调参. 使用 Adaboost 进行手写数字识别 导入库,载 ...
- 2.3 使用 dom4j 对 xml文件进行 dom 解析
// 使用dom4j对XML文档进行解析 CRUD public class Demo1 { //读取XML文档中第二本书的书名 <书名>javaWEB</书名> @Test ...
- 异步处理的框架Sanic的使用方法和小技巧
Sanic是异步处理的框架,运用Sanic可以开发快速异步响应的web程序.想必大家看到这个都会比较期待和兴奋. 那么如何使用Sanic来实现快速响应呢?我们先来看一看Sanic的基本介绍. Sani ...
- PAT Advanced 1152 Google Recruitment (20 分)
In July 2004, Google posted on a giant billboard along Highway 101 in Silicon Valley (shown in the p ...
- Kinect for windows的脸部识别
需要引入的dll: 需要将下面两个dll复制到当前路径 Kinect for windows提供了脸部识别的功能,可以识出人脸.主要是通过FaceTrackFrame类的GetTriangles()来 ...