https://www.nowcoder.com/acm/contest/118#question
A
#include <iostream>
#include<stdio.h>
#include <string.h>
#include <algorithm>
#include<queue>
using namespace std;
const int inf=0x3f3f3f3f;
struct node
{
int x,y;
};
int dir[4][2]={0,1,0,-1,1,0,-1,0};
int n;
int a[105][105];
bool vis[105][105];
int sx,sy,ex,ey;
int dis[105][105];
bool check(int x,int y)
{
if(x<=0||x>n||y<=0||y>n)return false;
return true;
}
int bfs()
{
node q,p;
queue<node>Q;
memset(dis, inf, sizeof(dis));
q.x=sx;
q.y=sy;
dis[sx][sy]=0;
Q.push(q);
memset(vis, false, sizeof(vis));
vis[sx][sy]=true;
//int k=0;
while (!Q.empty()) {
p=Q.front();
Q.pop();
vis[p.x][p.y]=0;
for(int i=0;i<4;i++)
{
q.x=p.x+dir[i][0];
q.y=p.y+dir[i][1];
if(!check(q.x, q.y))continue;
//cout<<p.x<<' '<<p.y<<' '<<q.x<<' '<<q.y<<endl;
if(dis[q.x][q.y]>dis[p.x][p.y]+a[q.x][q.y])
{
dis[q.x][q.y]=dis[p.x][p.y]+a[q.x][q.y];
//cout<<k++<<' '<<dis[q.x][q.y]<<' '<<q.x<<' '<<q.y<<endl;
if(!vis[q.x][q.y])
{
vis[q.x][q.y]=1;
Q.push(q);
}
}
}
}
//cout<<999<<endl;
int minn=inf;
for(int i=0;i<4;i++)
{
int x=ex+dir[i][0];
int y=ey+dir[i][1];
if(!check(x, y))continue;
minn=min(dis[x][y],minn);
}
return minn;
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]==-1)
{
a[i][j]=inf;
sx=i;
sy=j;
}
if(a[i][j]==-2)
{
a[i][j]=inf;
ex=i;
ey=j;
}
}
}
//cout<<0<<endl;
int ans=bfs();
//cout<<dis[ex][ey]<<endl;
printf("%d\n",ans);
}
return 0;
}
B
#include<bits/stdc++.h>
using namespace std;
double pi=acos(-1.0);
int main(){
int t;
cin>>t;
while(t--)
{
double a;
int b;
cin>>a>>b;
double ans=pow(a,pi);
cout<<setprecision(b)<<fixed<<ans<<endl;
}
return 0;
}
D
#include<bits/stdc++.h>
using namespace std;
double pi=acos(-1.0);
int main(){
int n;
while(cin>>n)
{
int a[111];
for(int i=0;i<n;i++)
cin>>a[i];
int f[4]={0,1,1,0};
int f1=0;
for(int i=0;i<n;i++)
{
if(f[1]==f[2]&&f[2]==f[3])
{
f1=1;
cout<<"NO"<<endl;
break;
}
if(f[a[i]]==0)
{
f1=1;
cout<<"NO"<<endl;
break;
}
if(a[i]==1)
{
if(f[2]==1)
f[2]=0,f[3]=1;
else f[3]=0,f[2]=1;
}
else if(a[i]==2)
{ if(f[1]==1)
f[1]=0,f[3]=1;
else
f[3]=0,f[1]=1;
}
else if(a[i]==3)
{
if(f[2]==1)
f[2]=0,f[1]=1;
else
f[1]=0,f[2]=1;
}
}
if(f1==0)
cout<<"YES"<<endl;
}
return 0;
}
E
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
int T = cin.nextInt();
for(int i = 0; i < T; ++i)
{
BigInteger n = cin.nextBigInteger();
BigInteger m = cin.nextBigInteger();
BigInteger ans=n.multiply(m);
System.out.println(ans);
}
}
}
F
#include<bits/stdc++.h>
using namespace std;
char ma[555][555];
char ans[555][555];
bool vis[555][555];
int n,m,k;
bool check(int x,int y)
{
if(x<0||x>=n||y<0||y>=m||vis[x][y]==1)
return 0;
return 1;
}
void dfs(int x,int y)
{
if(ma[x][y]=='*')return ;
ans[x][y]=ma[x][y];
vis[x][y]=1;
if(ans[x][y]=='.')ans[x][y]='0';
if(ma[x][y]!='.')return ;
if(check(x+1,y))
{
dfs(x+1,y);
}
if(check(x,y+1))
{
dfs(x,y+1);
}
if(check(x-1,y))
{
dfs(x-1,y);
}
if(check(x,y-1))
{
dfs(x,y-1);
}
}
int main(){
int t;
cin>>t;
while(t--)
{
memset(vis,0,sizeof(vis));
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<n;i++)
scanf("%s",ma[i]);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
ans[i][j]='.';
}
int x[11],y[11];
for(int i=0;i<k;i++)
{
cin>>x[i]>>y[i];
x[i]--;
y[i]--;
}
int f1=0;
for(int i=0;i<k;i++)
{
if(ma[x[i]][y[i]]=='*')
{
f1=1;
cout<<"Game over in step "<<i+1<<endl;
break;
}
else if(ma[x[i]][y[i]]=='.')
{
dfs(x[i],y[i]);
}
else ans[x[i]][y[i]]=ma[x[i]][y[i]];
}
if(f1==0)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
printf("%c",ans[i][j]);
cout<<endl;
}
}
}
return 0;
}
G
#include<bits/stdc++.h>
using namespace std;
double pi=acos(-1.0);
int main(){
int n;
char a[1111][7];
while(cin>>n)
{
for(int i=0;i<n;i++)
cin>>a[i];
int f=1;
for(int i=0;i<n;i++)
{
if(a[i][0]=='O'&&a[i][1]=='O')
{
f=0;
a[i][0]='+';
a[i][1]='+';
break;
}
if(a[i][3]=='O'&&a[i][4]=='O')
{
f=0;
a[i][3]='+';
a[i][4]='+';
break;
}
}
if(f==0)
{
cout<<"YES"<<endl;
for(int i=0;i<n;i++)
cout<<a[i]<<endl;
}
else cout<<"NO"<<endl;
}
return 0;
}
H
#include<bits/stdc++.h>
using namespace std;
double pi=acos(-1.0);
int a[111];
int main(){
int n;
while(cin>>n)
{
int ans=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]==0)ans++;
}
for(int i=0;i<n;i++)
{
if(a[i]==1)
{
int z=0;
int y=0;
for(int j=i-1;j>=0;j--)
if(a[j]==0)z++;
for(int j=i+1;j<n;j++)
if(a[j]==1)y++;
ans=max(ans,z+y+1);
}
}
cout<<ans<<endl;
}
return 0;
}
I
#include<bits/stdc++.h>
using namespace std;
int n,k;
double l,v1,v2;
double eps=1e-11;
bool check(double x)
{
double qux=v2*((l-v1*x)/(v2-v1));
double qut=qux/v2;
double huit=(qux-qut*v1)/(v1+v2);
double renx=qux-v2*huit;
double zx=0;
double zt=0;
if(!(n%k))
{
double ts=n/k;
zt+=ts*(qut+huit);
zt-=huit;
zx+=(ts-1)*renx;
zx+=qux;
}
else
{
int ts=n/k;
zt+=ts*1.0*(qut+huit);
zt+=qut;
zx+=ts*1.0*renx;
zx+=qux;
}
if(zt-x>eps)
return 0;
double wx=x-zt;
zx+=wx*v2;
if(zx-l>=eps)return 1;
return 0;
}
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%d%lf%lf%lf%d",&n,&l,&v1,&v2,&k);
double left=l/v2;
double right=l/v1;
while(right-left>eps)
{
double mid=(left+right)/2.0;
if(check(mid))
{
right=mid;
}
else
{
left=mid;
}
}
printf("%.10lf\n",left);
}
return 0;
}
J
#include<bits/stdc++.h>
using namespace std;
double pi=acos(-1.0);
int main(){
int t;
cin>>t;
while(t--)
{
double a,b,c;
cin>>a>>b>>c;
if(a==0)
{
cout<<"0.0000000000"<<endl;
continue;
}
if(b<=c)
{
cout<<"Infinity"<<endl;
}
else {
double ans=(a*b)/(b*b-c*c);
printf("%.10lf\n",ans);
}
}
return 0;
}