标签:排列 失败 学校 iostream 结束时间 输入 最大的 default 注意
#include<iostream>#include<cstring>using namespace std; //尝试所有可能的排列组合安排并更新最大价值int b[21],e[21],v[21],m,maxn,book[21],sumn,ed; void dfs(int p){ for (int i=1;i<=m;i++){ if (p==0) sumn=0; if (!book[i]){ if (b[i]>=e[p]){book[i]=1; sumn+=v[i]; if (sumn>maxn) maxn=sumn; dfs(i); sumn-=v[i]; book[i]=0;} } }}int main(){ int n,i,j,t; cin>>t; while (t--){maxn=-1; cin>>m;memset(book,0,sizeof(book)); memset(e,0,sizeof(e));memset(b,0,sizeof(b)); for (i=1;i<=m;i++) cin>>b[i]>>e[i]>>v[i]; sumn=0,dfs(0); cout<<maxn<<endl; } return 0;}#include<bits/stdc++.h>
using namespace std;
int dp[105];
struct tim
{
int s,e,w;
bool operator<(const tim &chs)const{
if(e!=chs.e) return e<chs.e;
else return s<chs.s;
}
};
int main()
{
int n,i,j,k,s,e,w,p,t;
cin>>t;
while(t--){tim m[30];
int maxn=-1;
memset(dp,0,sizeof(dp));
cin>>n;
m[0].e=0;
for(i=1;i<=n;++i)
cin>>m[i].s>>m[i].e>>m[i].w;
sort(m+1,m+1+n);
for(i=1;i<=n;++i){
int pd=0;
for(j=0;j<i;++j)
if(m[i].s>=m[j].e&&pd<dp[j]) pd=dp[j];
dp[i]=pd+m[i].w;
}
for(i=1;i<=n;++i) maxn=max(dp[i],maxn);
cout<<maxn<<endl;
}
return 0;
}
标签:排列 失败 学校 iostream 结束时间 输入 最大的 default 注意
原文地址:http://www.cnblogs.com/zzqc/p/6617617.html