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;
}