A - Slot
题意:判断c1,c2,c3三个字母是不是相同。
#include<bits/stdc++.h>
using namespace std;
int main()
{
char c1,c2,c3;
cin>>c1>>c2>>c3;
if(c1==c2&&c2==c3){
cout<<"Won";
}
else
cout<<"Lost"<<endl;
}
B - Alcoholic
题意:给你n种酒,并且告诉你每种酒的体积和酒精度数(就是体积百分比)
思路:注意精度问题,把/100变成乘法就好~具体看代码.
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+100;
double v[maxn];
int main()
{
int i,j,n;
double x,sum=0,ff=0,ans=0,p;
cin>>n>>x;
for(i=0;i<n;i++){
cin>>v[i]>>p;
sum+=(v[i]*p);
if(x*100<sum&&ff==0){
ff=1;ans=i+1;
}
}
if(ff==1) cout<<ans<<endl;
else cout<<-1<<endl;
}
C - Mandarin Orange
题意:给你一个长度为n的数组,寻找一段区间【L,R】,使得区间中的最小值x,使x*(r-l+1)最大。
思路:看数据n只有1e4,所以暴力是能过的,O(n^2)哎气气!
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+100;
int a[maxn];
int main()
{
int n,i,j,l,r;
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i];
}
int ans=-INT_MAX;
for(i=1;i<=n;i++){
int mm=INT_MAX;
for(j=i;j<=n;j++){
mm=min(mm,a[j]);
ans=max(mm*(j-i+1),ans);
}
}
cout<<ans<<endl;
}
D - Logical Expression
题意: 大概就是让你从n个全排列的二进制数中,通过n-1个操作序列,操作有两种一种是或,一种是与,求最后有多少种答案是为真。
思路:如果第i个字符串为and,则对于Ti=Ti-1,Fi=Fi-12+Ti;
如果是or,则Fi=Fi-1,Ti=Ti-12+Fi;
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
string ss[77];
int n,i,j;
cin>>n;
int ff=1,tt=1;
string s1="AND";
getchar();
int f1=0;
for(i=0;i<n;i++){
getline(cin,ss[i]);
if(f1==0){
if(ss[i]==s1)
ff=3,tt=1,f1=1;
else
ff=1,tt=3,f1=1;
}
else if(ss[i]==s1){
ff=ff*2+tt;
}
else {
tt=tt*2+ff;
}
}
cout<<tt<<endl;
}

767





