您的位置:首页 > 编程语言 > C语言/C++

Gym 101086 A,F,G,H,L 五个水题

2017-08-17 11:17 561 查看
题目链接:http://codeforces.com/gym/101086

A 、

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const long long INF=100000000000+5;
int main()
{
int t,n;
int ww;
char cc;
scanf("%d",&t);
while(t--)
{
long long LL=0; long long RR=INF;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %c",&ww,&cc);
if(cc=='+')
{
LL+=ww+25;
}
else
{
RR=min(RR,ww+25+LL);
}
}
long long ans=RR-LL;
if(ans<0)
ans=0;
printf("%lld\n",ans);
}
return 0;
}

F、
#include<iostream>
#include<cstdio>
#include<set>
using namespace std;

char s[10];
int arr[10];

bool one(int a,int b){
set<int> pp;
for(int i=0;i<7;i++)
if(i!=a && i!=b)
pp.insert(arr[i]);
if(arr[a]+arr[b]<=5)
pp.insert(arr[a]+arr[b]);
if(pp.size()==5)
return true;
return false;
}

bool two(int a,int b,int c,int d)
{
set<int> pp;
for(int i=0;i<7;i++)
if(i!=a && i!=b && i!=c && i!=d)
pp.insert(arr[i]);
if(arr[a]+arr[b]<=5)
pp.insert(arr[a]+arr[b]);
if(arr[c]+arr[d]<=5)
pp.insert(arr[c]+arr[d]);
if(pp.size()==5)
return true;
return false;
}

int main()
{
int t;
bool flag;
scanf("%d",&t);
while(t--)
{
scanf("%s",&s);
for(int i=0;i<7;i++)
arr[i]=s[i]-'A'+1;

flag=false;
for(int i=0;i<7;i++)
for(int j=i+1;j<7;j++)
if(one(i,j))
flag=true;
if(!flag)
{
for(int i=0;i<7;i++){
for(int j=i+1;j<7;j++){
for(int k=j+1;k<7;k++){
for(int l=k+1;l<7;l++){
if(two(i,j,k,l))
flag=true;
if(two(i,k,j,l))
flag=true;
if(two(i,l,k,j))
flag=true;
}
}
}
}
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

G、

#include<cstdio>
#include<iostream>
using namespace std;
int n;
char map[3][105*3];
int dir[][2]={0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};
int dfs(int x,int y)
{
int cnt=0;
for(int i=0;i<8;i++)
{
if(map[x+dir[i][0]][y+dir[i][1]]=='*')
cnt++;
}
return cnt;
}
int main()
{
int t;
scanf("%d",&t);
int ans=0;
while(t--)
{
scanf("%d",&n);
ans=0;
for(int i=0;i<3;i++)
scanf("%s",&map[i]);
for(int i=1;i<3*n;i+=3)
{
if(map[1][i]=='X')
ans=max(ans,dfs(1,i));
}
printf("%d\n",ans*4);
}

return 0;
}


H、

#include<cstdio>
using namespace std;

int main()
{
int t;
int a,b,ans;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
if(a>b)
ans=a;
else
ans=b;
printf("%d\n",ans*ans);
}
return 0;
}

L、

#include<cstdio>
using namespace std;

int isprime[]={0,0,1,1,0,
1,0,1,0,0,
0,1,0,1,0,
0,0,1,0,1,
0,0,0,1,0,
0,0,0,1,0};
int ans[100005];

int judge(int x)
{
int cnt=0;
while(x)
{
if(x%2==1)
cnt++;
x/=2;
}
if(isprime[cnt])
return 1;
else
return 0;
}

int main()
{
ans[0]=0;
for(int i=1;i<=100000;i++)
{
if(judge(i))
{
ans[i]=ans[i-1]+1;
// printf("%d\n",i);
}
else
ans[i]=ans[i-1];
}
int t,l,r;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&l,&r);
int num=0;
if(l!=0)
num=ans[l-1];
printf("%d\n",ans[r]-num);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息