石油大学校赛 上分 (next_permutation n!的暴力!!!比较客观相对于n^n)
思路:
- 看到数据范围很小, 暴力, 不是n^n 暴力,而是 利用next_permutation(p+1,p+1+n); n!去实现这个东东
- do .... while(next_permutation(p+1,p+1+n)); 牛逼, 这个只能用数组,不能结构体,于是就新建一个这个数组然后去映射就彳于了
#include<bits/stdc++.h> using namespace std; #define pb push_back const int N=1000010; int p[10],a[10],b[10],c[10]; int t,n,m; int main(){ for(int i=1;i<=10;i++)p[i]=i; cin>>t; while(t--){ cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]>>b[i]>>c[i]; int max1=0; do{ int num=0,time=0; for(int i=1;i<=n;i++){ time+=b[p[i]]; if(time>m)break; num+=round(max(a[p[i]]*0.3,a[p[i]]*(1-0.004*time)-c[p[i]]*50)); } max1=max(num,max1); }while(next_permutation(p+1,p+n+1)); cout<<max1<<"\n"; } return 0; }