#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
char str[500][500];
bool flag=true;
int main()
{
cin>>n;
for(int i=0;i<n;i++) scanf("%s",str[i]);
char sg=str[0][0];
for(int i=0;i<n;i++)
{
if(str[i][i]!=sg||str[i][n-1-i]!=sg)
{flag=false; break;}
}
if(!flag||sg==str[0][1])
{
puts("NO");
return 0;
}
sg=str[0][1];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i==j||j==n-1-i) continue;
if(str[i][j]!=sg)
{
flag=false;
break;
}
}
}
if(flag) puts("YES"); else puts("NO");
return 0;
}
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
long long i,k,n;
double a,d,e,l;
int main()
{
scanf("%lf%lf%I64d",&a,&d,&n);
for(i=1;i<=n;i++)
{
l=d*i;
k=(long long)(l/a);
e=l-k*a;
k=k%4;
if(k==0)
{
printf("%.8lf %.8lf\n",e,0.);
}
else if(k==1)
{
printf("%.8lf %.8lf\n",a,e);
}
else if(k==2)
{
printf("%.8lf %.8lf\n",a-e,a);
}
else if(k==3)
{
printf("%.8lf %.8lf\n",0.,a-e);
}
}
return 0;
}
卡int。。。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
const int maxn=110000;
const int INF=0x3f3f3f3f;
int n,k,d[maxn],maxd=-INF,cnt[maxn];
vector<int> g[maxn];
struct Edge
{
int to,next;
}E[maxn];
int Size,Adj[maxn];
void init()
{
Size=0;
memset(Adj,-1,sizeof(Adj));
memset(cnt,0,sizeof(cnt));
}
void Add_Edge(int u,int v)
{
E[Size].to=v;E[Size].next=Adj[u];Adj[u]=Size++;
}
int main()
{
scanf("%d%d",&n,&k);
int src=-1,D=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&d[i]);
maxd=max(maxd,d[i]);
if(d[i]==0) src=i;
g[d[i]].push_back(i);
}
bool flag=true;
if(g[0].size()!=1)
{
puts("-1"); return 0;
}
for(int i=1;i<=maxd;i++)
{
if(g[i].size()==0)
{
flag=false; break;
}
if(i==1)
{
if(g[i].size()>k)
{
flag=false;
break;
}
}
else
{
if((long long int )(g[i].size())>(long long int )(g[i-1].size())*(k-1))
{
flag=false;
break;
}
}
}
if(flag==false)
{
puts("-1"); return 0;
}
init();
///......build......
for(int i=0;i<g[1].size();i++)
{
Add_Edge(src,g[1][i]);
D++;
}
for(int i=1;i<maxd;i++)
{
int sz=g[i+1].size();
int u=g[i][0],pos=1;
for(int j=0;j<sz;j++)
{
int v=g[i+1][j];
if(cnt[u]<k-1)
{
cnt[u]++;
Add_Edge(u,v);
D++;
}
else
{
u=g[i][pos++];
cnt[u]++;
Add_Edge(u,v);
D++;
}
}
}
printf("%d\n",D);
for(int i=1;i<=n;i++)
{
for(int j=Adj[i];~j;j=E[j].next)
{
printf("%d %d\n",i,E[j].to);
}
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const long long int MOD=1000000007;
const int maxn=1100000;
char str[maxn];
long long int dp[maxn][2][2];
int n;
int main()
{
scanf("%s",&str);
n=strlen(str);
dp[0][0][1]=dp[0][0][0]=1;
for(int i=1;i<=n;i++)
{
if(str[i-1]=='?')
{
///str[i-1]=='*'
dp[i][1][0]=(dp[i][1][0]+dp[i-1][0][1])%MOD;
dp[i][1][0]=(dp[i][1][0]+dp[i-1][1][1])%MOD;
dp[i][1][1]=(dp[i][1][1]+dp[i-1][0][1])%MOD;
dp[i][1][1]=(dp[i][1][1]+dp[i-1][1][1])%MOD;
///str[i-1]=='0'
dp[i][0][0]=(dp[i][0][0]+dp[i-1][0][0])%MOD;
///str[i-1]=='1'
dp[i][0][1]=(dp[i][0][1]+dp[i-1][0][0])%MOD;
dp[i][0][0]=(dp[i][0][0]+dp[i-1][1][0])%MOD;
///str[i-1]=='2'
dp[i][0][1]=(dp[i][0][1]+dp[i-1][1][0])%MOD;
}
else
{
if(str[i-1]=='*')
{
dp[i][1][0]=(dp[i][1][0]+dp[i-1][0][1])%MOD;
dp[i][1][0]=(dp[i][1][0]+dp[i-1][1][1])%MOD;
dp[i][1][1]=(dp[i][1][1]+dp[i-1][0][1])%MOD;
dp[i][1][1]=(dp[i][1][1]+dp[i-1][1][1])%MOD;
}
else if(str[i-1]=='0')
{
dp[i][0][0]=(dp[i][0][0]+dp[i-1][0][0])%MOD;
}
else if(str[i-1]=='1')
{
dp[i][0][1]=(dp[i][0][1]+dp[i-1][0][0])%MOD;
dp[i][0][0]=(dp[i][0][0]+dp[i-1][1][0])%MOD;
}
else if(str[i-1]=='2')
{
dp[i][0][1]=(dp[i][0][1]+dp[i-1][1][0])%MOD;
}
}
}
printf("%I64d\n",(dp[n][1][0]+dp[n][0][0])%MOD);
return 0;
}