A. Fast Food Restaurant
贪心,易得先用一种菜肴,再用第二种菜肴,再用第三种
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
int main(){
int t;cin>>t;
while(t--){
int a,b,c;
cin>>a>>b>>c;
int ans=0;
if(a>0)a--,ans++;
if(b>0)b--,ans++;
if(c>0)c--,ans++;
if(b>a)swap(a,b);
if(c>a)swap(a,c);
if(a>0&&b>0)a--,b--,ans++;
if(a>0&&c>0)a--,c--,ans++;
if(b>0&&c>0)b--,c--,ans++;
if(a>0&&b>0&&c>0)ans++;
cout<<ans<<endl;
}
return 0;
}
B. Different Rules
数学题
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
int main(){
ll t,n,x,y;
cin>>t;
while(t--){
cin>>n>>x>>y;
ll mins=max((ll)1,min(n,x+y-n+1));
ll maxs=min(n,x+y-1);
cout<<mins<<' '<<maxs<<endl;
}
return 0;
}
C1. Skyscrapers (easy version)
n小于等于1000,n^2枚举可过
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
int n;
ll a[1005],b[1005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
ll allmax=-1;
ll maxj,sum,maxs;
for(int i=1;i<=n;i++){
sum=a[i];
maxs=a[i];
for(int j=i-1;j>=1;j--){
if(a[j]<=maxs){
sum+=a[j];
maxs=a[j];
}
else sum+=maxs;
}
maxs=a[i];
for(int j=i+1;j<=n;j++){
if(a[j]<=maxs){
sum+=a[j];
maxs=a[j];
}
else sum+=maxs;
}
if(sum>allmax){
allmax=sum;
maxj=i;
}
}
maxs=a[maxj];
b[maxj]=a[maxj];
for(int i=maxj-1;i>=1;i--){
if(a[i]<=maxs){
b[i]=a[i];
maxs=a[i];
}
else b[i]=maxs;
}
maxs=a[maxj];
for(int i=maxj+1;i<=n;i++){
if(a[i]<=maxs){
b[i]=a[i];
maxs=a[i];
}
else b[i]=maxs;
}
for(int i=1;i<=n;i++)cout<<b[i]<<' ';
return 0;
}