竞赛
考级
可能有点乱
核心思想就是枚举每一种价格,计算每种价格所能获得利润,最后取最大值
#include<bits/stdc++.h> using namespace std; int a[10005]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int j=0;j<=n;j++){ for(int i=1;i<=n-1;i++){ if(a[i]>a[i+1]){ swap(a[i],a[i+1]); } } } int maxn=1; int sum; for(int i=0;i<=n;i++){ sum=(n-i+1)*a[i]; if(maxn<sum){ maxn=sum; }
#include <bits/stdc++.h> using namespace std; long long a[1000010]; int main(){ long long n,mx=0; cin>>n; for(int i=0;i<n;i++)cin>>a[i]; sort(a+0,a+n); for(int i=0;i<n;i++){ long long sum=a[i]*(n-i); if(sum>mx)mx=sum; } cout<<mx; return 0; }
总之,这只是一道入门题 随便写几下就完事了,都用不上别的算法
上代码
#include<iostream> using namespace std; const int N=999999; int main(){ int n; cin>>n; int arr[10001],maxp=-N,minp=N; for(int i=1;i<=n;i++){ cin>>arr[i]; maxp=max(maxp,arr[i]); minp=min(minp,arr[i]); } int maget=-N; for(int i=minp;i<=maxp;i++){ int allc=0; for(int j=1;j<=n;j++){ if(i<=arr[j]){ allc+=i; } } maget=max(maget,allc); } cout<<maget; return 0; }
#include<bits/stdc++.h> using namespace std; int n,a[10010],maxa,sum; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i];//输入 } sort(a+1,a+1+n); for(int i=1;i<=a[n];i++){//暴力枚举票价 for(int j=1;j<=n;j++){ if(a[j]>=i)sum+=i;//判断 } maxa=max(maxa,sum),sum=0;//最大值判断并清零 } cout<<maxa; return 0; }
就是枚举每一种价格啦,按照计算机1秒跑1e8(10^8)我以为会超时(1e4*1e5=1e9),所以加了个优化,结果不加优化也可以过哈哈
提交答案之后,这里将显示提交结果~