0
点赞
收藏
分享

微信扫一扫

寒假学习记录D19

孟祥忠诗歌 2022-01-30 阅读 50

1.Choregraphe的安装

2.算法基础练习


1.Choregraphe的安装

官网里自己安装的,试用期只有三个月


 2.算法基础练习(背包)

题目描述

小明是个大厨,早上起来他开始一天的工作。他所在的餐厅每天早上都会买好 nnn 件食材(每种食材的数量可以视为无限),小明从到达餐厅开始就连续工作 TTT 时间。每道菜肴的制作需要特定的一种食材以及一段时间,但是食材一旦放久就不新鲜了,菜的美味值会降低。第 iii 道菜肴有三个属性 ai,bi,cia_i,b_i,c_iai​,bi​,ci​,aia_iai​ 是该菜肴的美味值,bib_ibi​是该菜肴所选食材不新鲜的速率,如果在第 ttt 时刻完成第 iii 道菜则美味值为:ai−t∗bia_i-t*b_iai​−t∗bi​,完成这道菜需要 cic_ici​ 的时间。小明希望在这 TTT 时间内能做出菜肴使得总美味值最大,所以小明求助于你。

输入描述:

 

第1行输入三个整数 n,m,Tn,m,Tn,m,T ,分别代表食材种类,菜肴种类和工作时间。
第2行输入 nnn 个整数 bib_ibi​,代表第 iii 个食材不新鲜的速率。
接下来的m行,每行输入三个整数j,ai,cij,a_i,c_ij,ai​,ci​,分别代表第 iii 道菜肴需要的食材编号,菜肴的美味值,完成时间。
数据保证:0<n,m≤50,0<j≤n0<n,m≤50,0<j≤n0<n,m≤50,0<j≤n,其他值均<106<10^6<106,美味值必须通过完整做出菜肴得到,数据保证在规定时间内至少能完整做出1道菜肴。

输出描述:

输出一行,一个整数,表示最大总美味值。

示例1

输入

1 1 74
2
1 502 47

输出

408

示例2

输入

2 2 10
2 1
1 100 8
2 50 3

输出

84

备注:

最大总美味值可能为负。
#include<bits/stdc++.h>

using namespace std;
typedef long long LL;
const int N = 55,M = 1e6+7;

LL v[N];
LL dp[M];

struct node{
	LL x,y,t,v;
}a[N];

bool cmp(node a,node b){
	return a.t*b.v < b.t*a.v;
}
int main()
{
	int n,m,T;
	cin>>n>>m>>T;
	for(int i=1;i<=n;i++) cin>>v[i]; 
	
	for(int i=1;i<=m;i++){
		int x,y,z;
		cin>>x>>y>>z;
		a[i] = (node){x,y,z,v[x]};
	}
	sort(a+1,a+1+m,cmp);
	
	memset(dp,-0x3f,sizeof dp);
	dp[0] = 0;
	for(int i=1;i<=m;i++)
		for(int j=T;j>=a[i].t;j--)
		dp[j] = max(dp[j],dp[j-a[i].t] + a[i].y-j*a[i].v);
		
	LL ans = -1e15;
	for(int i=1;i<=T;i++) ans = max(ans,dp[i]);
	cout<<ans<<endl;
	return 0;
 } 
举报

相关推荐

0 条评论