A
签到
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x, res;
int attrs[] = {6, 3, 2, 1, 2};
for (int i = 0; i < 2; i++)
{
res = 0;
for (int j = 0; j < 5; j++)
{
cin >> x;
res += x * attrs[j];
}
cout << res << " ";
}
}
B
高斯消元,每个三点组是一个方程,求自由变元个数即可
#include<iostream>
#define lint int64_t
#define ulint uint64_t
#define maxn 21
#define maxm 602
#define mod 3
using
namespace
std;
int n,m;
int id[maxn][maxn];
int val[maxn][maxn];
int x[maxm],y[maxm],c;
int mat[maxm][maxm],r;
void debug_mat(){
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
printf("%d ",mat[i][j]);
}
printf("= %d\n",mat[i][c]);
}
}
ulint qow(ulint a,ulint b){
ulint ans=1;
for(;b;a=a*a,b>>=1) if(b&1) ans=ans*a;
return ans;
}
bool empty_row(int u){
for(int i=0;i<c;i++){
if(mat[u][i]) return false;
}
return true;
}
void swap_row(int u,int v){
if(u==v) return;
for(int i=0;i<=c;i++){
swap(mat[u][i],mat[v][i]);
}
}
void GE(){
// for(int i=1;i<=n;i++){
//
// for(int j=1;j<=i;j++){
//
// cout<<val[i][j]<<' ';
// }
// cout<<endl;
// }
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
bool valid=false;
if(~id[i][j]) mat[r][id[i][j]]=1,valid|=true;
if(~id[i-1][j]) mat[r][id[i-1][j]]=1,valid|=true;
if(~id[i][j+1]) mat[r][id[i][j+1]]=1,valid|=true;
mat[r][c]=(3*mod-val[i][j]-val[i-1][j]-val[i][j+1])%mod;
if(!valid&&mat[r][c]){
printf("0\n");
return;
}
//cout<<"||"<<i<<' '<<j<<' '<<valid<<endl;
if(!valid){
continue;
}
r++;
}
}
// for(int i=2;i<n;i++){
//
// for(int j=1;j<i;j++){
//
// bool valid=false;
//
// if(~id[i][j]) mat[r][id[i][j]]=1,valid|=true;
// if(~id[i][j+1]) mat[r][id[i][j+1]]=1,valid|=true;
// if(~id[i+1][j+1]) mat[r][id[i+1][j+1]]=1,valid|=true;
// mat[r][c]=(3*mod-val[i][j]-val[i][j+1]-val[i+1][j+1])%mod;
//
// if(!valid&&mat[r][c]){
//
// printf("0\n");
// return;
// }
//
// //cout<<"||"<<i<<' '<<j<<' '<<valid<<endl;
//
// if(!valid){
//
// continue;
// }
//
// r++;
// }
// }
debug_mat();
printf("\n");
int i=0,p=0;
for(;i<r&&p<c;i++,p++){
int nxti=i;
while(nxti<r&&!mat[nxti][p]){
nxti++;
}
if(nxti==r){
i--;
continue;
}
swap_row(i,nxti);
for(int j=i+1;j<r;j++){
int f=mat[i][p]*mat[j][p]%mod;
for(int k=0;k<=c;k++){
mat[j][k]=(mat[j][k]+f*(mod-mat[i][k]))%mod;
}
}
}
debug_mat();
for(int i=r-1;~i;i--){
if(empty_row(i)){
if(mat[i][c]){
printf("0\n");
return;
}
}
}
printf("%llu\n",qow(3,c-i));
}
signed main(){
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) val[i][j]=-1;
for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) id[i][j]=-1;
int u,v,w;
for(int i=0;i<m;i++){
scanf("%d %d %d",&u,&v,&w);
val[u][v]=w;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(val[i][j]<0){
x[c]=i;
y[c]=j;
id[i][j]=c;
c++;
val[i][j]=0;
}
}
}
GE();
end:
return EOF+1;
}
/*
4 4
1 1 0
2 1 2
4 1 2
4 4 2
4 4
1 1 1
2 1 2
4 1 2
3 3 2
4 4
1 1 0
2 1 1
4 1 0
4 4 0
*/
C
搜索
#include<iostream>
#include<string.h>
#include<map>
#include<set>
#include<deque>
#define lint int64_t
using
namespace
std;
class Config{
public:
bool a[6][6];
int x[4],y[4];
Config(){
memset(a,false,sizeof(a));
}
bool __equal(Config& B){
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
if(a[i][j]^B.a[i][j]){
return false;
}
}
}
return true;
}
void print(){
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
putchar(a[i][j]?'*':'_');
}
putchar('\n');
}
putchar('\n');
}
};
class Mpace{
public:
int xs,ys,xt,yt;
Mpace(int xs_=0,int ys_=0,int xt_=0,int yt_=0){
xs=xs_,ys=ys_,xt=xt_,yt=yt_;
}
};
lint c2i(Config& c){
lint ans=0;
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
ans+=c.a[i][j];
ans<<=1;
}
}
return ans;
}
Config _move(Config now,int i,int dx,int dy){
if(dx==-1&&dy==0){
int nxtx=0;
for(int k=0;k<4;k++){
if(now.x[k]<now.x[i]&&now.y[k]==now.y[i]){
nxtx=max(nxtx,now.x[k]+1);
}
}
now.a[now.x[i]][now.y[i]]=false;
now.a[nxtx][now.y[i]]=true;
now.x[i]=nxtx;
}
else if(dx==1&&dy==0){
int nxtx=5;
for(int k=0;k<4;k++){
if(now.x[k]>now.x[i]&&now.y[k]==now.y[i]){
nxtx=min(nxtx,now.x[k]-1);
}
}
now.a[now.x[i]][now.y[i]]=false;
now.a[nxtx][now.y[i]]=true;
now.x[i]=nxtx;
}
else if(dx==0&&dy==-1){
int nxty=0;
for(int k=0;k<4;k++){
if(now.y[k]<now.y[i]&&now.x[k]==now.x[i]){
nxty=max(nxty,now.y[k]+1);
}
}
now.a[now.x[i]][now.y[i]]=false;
now.a[now.x[i]][nxty]=true;
now.y[i]=nxty;
}
else if(dx==0&&dy==1){
int nxty=5;
for(int k=0;k<4;k++){
if(now.y[k]>now.y[i]&&now.x[k]==now.x[i]){
nxty=min(nxty,now.y[k]-1);
}
}
now.a[now.x[i]][now.y[i]]=false;
now.a[now.x[i]][nxty]=true;
now.y[i]=nxty;
}
return now;
}
Config S,T;
deque<Mpace> kotae;
map<lint,lint> pre;
map<lint,Mpace> sousa;
void bfs(){
deque<Config> q;
q.push_back(S);
pre[c2i(S)]=-1;
while(!q.empty()){
Config now=q.front();
// for(int i=0;i<6;i++){
//
// for(int j=0;j<6;j++){
//
// putchar(now.a[i][j]?'*':'_');
// }
// putchar('\n');
// }
// putchar('\n');
// if(now.a[2][2]&&now.a[3][2]&&now.a[4][2]&&now.a[5][5]){
//
// printf("^-^\n");
//
// for(int i=0;i<4;i++){
//
// cout<<now.x[i]<<' '<<now.y[i]<<endl;
// }
// }
lint id=c2i(now);
q.pop_front();
if(now.__equal(T)){
break;
}
Config nxt;
lint idnxt;
for(int i=0;i<4;i++){
nxt=_move(now,i,-1,0);
idnxt=c2i(nxt);
if(pre.find(idnxt)==pre.end()){
q.push_back(nxt);
pre[idnxt]=id;
sousa[idnxt]=Mpace(now.x[i],now.y[i],nxt.x[i],nxt.y[i]);
if(nxt.__equal(T)) return;
}
nxt=_move(now,i,1,0);
idnxt=c2i(nxt);
if(pre.find(idnxt)==pre.end()){
q.push_back(nxt);
pre[idnxt]=id;
sousa[idnxt]=Mpace(now.x[i],now.y[i],nxt.x[i],nxt.y[i]);
if(nxt.__equal(T)) return;
}
nxt=_move(now,i,0,-1);
idnxt=c2i(nxt);
if(pre.find(idnxt)==pre.end()){
q.push_back(nxt);
pre[idnxt]=id;
sousa[idnxt]=Mpace(now.x[i],now.y[i],nxt.x[i],nxt.y[i]);
if(nxt.__equal(T)) return;
}
nxt=_move(now,i,0,1);
idnxt=c2i(nxt);
if(pre.find(idnxt)==pre.end()){
q.push_back(nxt);
pre[idnxt]=id;
sousa[idnxt]=Mpace(now.x[i],now.y[i],nxt.x[i],nxt.y[i]);
if(nxt.__equal(T)) return;
}
}
}
}
signed main(){
int u,v;
for(int i=0;i<4;i++){
cin>>u>>v;
S.a[u][v]=true;
S.x[i]=u;
S.y[i]=v;
}
for(int i=0;i<4;i++){
cin>>u>>v;
T.a[u][v]=true;
T.x[i]=u;
T.y[i]=v;
}
bfs();
lint iS=c2i(S);
for(lint now=c2i(T);now!=iS;now=pre[now]){
kotae.push_front(sousa[now]);
}
cout<<kotae.size()<<endl;
for(Mpace& it:kotae){
cout<<it.xs<<' '<<it.ys<<' '<<it.xt<<' '<<it.yt<<endl;
}
end:
return EOF+1;
}
/*
5 5 5 0 0 5 0 0
2 2 2 1 1 2 1 1
2 2 2 3 3 2 3 3
0 0 0 5 5 0 5 5
0 0 3 4 5 3 1 2
0 0 3 4 5 3 1 2
1 2 2 2 3 2 4 2
2 2 3 2 4 2 5 2
1 2 2 2 3 2 4 2
1 2 2 2 3 2 5 5
0 0 0 5 5 0 5 5
0 0 0 1 0 2 0 3
*/
D
签到
#include<iostream>
#include<string.h>
#include<algorithm>
#define gcd __gcd
#define lint int64_t
#define ulint uint64_t
#define maxn 64
using
namespace
std;
int n;
char s[maxn];
ulint qow(ulint a,int b){
ulint ans=1;
for(;b;a=a*a,b>>=1) if(b&1) ans=ans*a;
return ans;
}
signed main(){
scanf("%s",s);
n=strlen(s);
reverse(s,s+n);
n--;
ulint nu=0,de=qow(2,n);
for(int i=0;i<=n;i++){
nu+=(s[i]-'0')*qow(3,i)*qow(2,n-i);
}
ulint g=gcd(nu,de);
nu/=g,de/=g;
if(de==1){
printf("%llu\n",nu);
}
else{
printf("%llu %llu/%llu\n",nu/de,nu%de,de);
}
end:
return EOF+1;
}
/*
99999999999999999999999999999999
*/
E
首先dp求i个孤立点时不同连接方法数,然后枚举环,将环左右两边孤立点数量对应dp值相乘贡献到答案即可
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define mod 100007
#define pb push_back
typedef pair<int,int> pir;
string sstr[]={"NO\n","YES\n"};
#define int ll
const int N=4010;
int T,n;
int dp[N][N];
int sum[N];
int ans=0;
signed main()
{
cin>>n;
n--;
dp[0][0]=1;
sum[0]=1;
for(int i=1;i<=n;i++){
for(int j=0;j<=n;j++){
dp[i][0]=(dp[i][0]+dp[i-1][j]*(j+1))%mod;
}
for(int j=1;j<=n;j++){
dp[i][j]=dp[i-1][j-1];//这条边继续用于连接环
}
for(int j=0;j<=i;j++) sum[i]=(sum[i]+dp[i][j])%mod;//跟环连接
//cout<<"|||"<<i<<' '<<dp[i][0]<<' '<<sum[i]<<'\n';
}
for(int i=n+1;i>=3;i--){//组成i元环
int ans1=0;
for(int j=0;j+i-1<=n;j++){
//一边为j,另外一边为n-i+1-j
ans1=(ans1+sum[j]*sum[n-i+1-j]%mod)%mod;
}
//cout<<i<<' '<<ans1<<'\n';
ans=(ans+ans1)%mod;
}
cout<<ans<<'\n';
}
F
暴力枚举,大型模拟。。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define mod 1000000007
#define pb push_back
typedef pair<int,int> pir;
string sstr[]={"NO\n","YES\n"};
const int N=200010;
int w,h,l;
int w1,h1,l1,w2,h2,l2;
int pos1,pos2;
double cal3()
{
double ans=1e18;
int d1[4],d2[4];
int ww,hh,ll;
if(pos1%3==0){
d1[0]=w-w1,d2[0]=w-w2;
d1[1]=h-h1,d2[1]=h-h2;
d1[2]=w1,d2[2]=w2;
d1[3]=h1,d2[3]=h2;
ww=l,hh=w,ll=h;
}
else if(pos1%3==1){
d1[0]=l-l1,d2[0]=l-l2;
d1[1]=h-h1,d2[1]=h-h2;
d1[2]=l1,d2[2]=l2;
d1[3]=h1,d2[3]=h2;
ww=w,hh=h,ll=l;
}
else{
d1[0]=l-l1,d2[0]=l-l2;
d1[1]=w-w1,d2[1]=w-w2;
d1[2]=l1,d2[2]=l2;
d1[3]=w1,d2[3]=w2;
ww=h,hh=w,ll=l;
}
// cout<<d1[0]<<' '<<d1[1]<<' '<<d1[2]<<' '<<d1[3]<<' '<<ll<<'\n';
// cout<<d2[0]<<' '<<d2[1]<<' '<<d2[2]<<' '<<d2[3]<<' '<<ww<<'\n';
//不旋转
for(int i=0;i<4;i++){
ans=min(ans,sqrt(1.0*(ww+d1[i]+d2[i])*(ww+d1[i]+d2[i])+1.0*abs(d1[(i+1)%4]-d2[(i+1)%4])*abs(d1[(i+1)%4]-d2[(i+1)%4])));
ans=min(ans,sqrt(1.0*(ww+d1[i]+d2[i])*(ww+d1[i]+d2[i])+1.0*abs(d1[(i-1+4)%4]-d2[(i-1+4)%4])*abs(d1[(i-1+4)%4]-d2[(i-1+4)%4])));
}
//旋转一次
for(int i=0;i<4;i++){
ans=min(ans,sqrt(1.0*(ww+d1[i]+d2[(i+1)%4])*(ww+d1[i]+d2[(i+1)%4])+1.0*(d2[i]+d1[(i+1)%4])*(d2[i]+d1[(i+1)%4])));
}
//旋转2次
for(int i=0;i<4;i++){
ans=min(ans,sqrt(1.0*(ww+d1[(i-1+4)%4]+d2[(i+1)%4])*(ww+d1[(i-1+4)%4]+d2[(i+1)%4])+1.0*(ll+d2[i]+d1[i])*(ll+d2[i]+d1[i])));
ans=min(ans,sqrt(1.0*(ww+d1[(i+1)%4]+d2[(i-1+4)%4])*(ww+d1[(i+1)%4]+d2[(i-1+4)%4])+1.0*(ll+d2[i]+d1[i])*(ll+d2[i]+d1[i])));
}
return ans;
}
double cal2()
{
double ans=1e18;
int d1[4],d2[4];
int ww,hh,ll;
if(pos1==1) d2[0]=w-w2,d2[2]=w2;
else if(pos1==2) d2[0]=h-h2,d2[2]=h2;
else if(pos1==3) d2[0]=l2,d2[2]=l-l2;
else if(pos1==4) d2[0]=w2,d2[2]=w-w2;
else if(pos1==5) d2[0]=h2,d2[2]=h-h2;
else d2[0]=l-l2,d2[2]=l2;
if(pos2==1) d1[0]=w-w1,d1[2]=w1;
else if(pos2==2) d1[0]=h-h1,d1[2]=h1;
else if(pos2==3) d1[0]=l1,d1[2]=l-l1;
else if(pos2==4) d1[0]=w1,d1[2]=w-w1;
else if(pos2==5) d1[0]=h1,d1[2]=h-h1;
else d1[0]=l-l1,d1[2]=l1;
if(pos1%3!=0&&pos2%3!=0){
d1[1]=l-l1;
d1[3]=l1;
d2[1]=l-l2;
d2[3]=l2;
hh=l;
if(pos1%3==1) ll=h,ww=w;
else ll=w,ww=h;
}
else if(pos1%3!=1&&pos1%3!=1){
d1[1]=w-w1;
d1[3]=w1;
d2[1]=w-w2;
d2[3]=w2;
hh=w;
if(pos1%3==0) ll=h,ww=l;
else ll=l,ww=h;
}
else{
d1[1]=h-h1;
d1[3]=h1;
d2[1]=h-h2;
d2[3]=h2;
hh=h;
if(pos1%3==0) ll=w,ww=l;
else ll=l,ww=w;
}
// cout<<d1[0]<<' '<<d1[1]<<' '<<d1[2]<<' '<<d1[3]<<' '<<ll<<'\n';
// cout<<d2[0]<<' '<<d2[1]<<' '<<d2[2]<<' '<<d2[3]<<' '<<ww<<'\n';
//不转
ans=min(ans,sqrt(1.0*(d1[0]+d2[0])*(d1[0]+d2[0])+1.0*abs(d1[1]-d2[1])*abs(d1[1]-d2[1])));
//转一圈
ans=min(ans,sqrt(1.0*(d1[0]+d2[1])*(d1[0]+d2[1])+1.0*(d1[1]+d2[0])*(d1[1]+d2[0])));
ans=min(ans,sqrt(1.0*(d1[0]+d2[3])*(d1[0]+d2[3])+1.0*(d1[3]+d2[0])*(d1[3]+d2[0])));
//转2圈
ans=min(ans,sqrt(1.0*(d1[2]+d2[0])*(d1[2]+d2[0])+1.0*(d1[1]+d2[1]+ll)*(d1[1]+d2[1]+ll)));
ans=min(ans,sqrt(1.0*(d1[2]+d2[0])*(d1[2]+d2[0])+1.0*(d1[3]+d2[3]+ll)*(d1[3]+d2[3]+ll)));
ans=min(ans,sqrt(1.0*(d2[2]+d1[0])*(d2[2]+d1[0])+1.0*(d2[1]+d1[1]+ww)*(d2[1]+d1[1]+ww)));
ans=min(ans,sqrt(1.0*(d2[2]+d1[0])*(d2[2]+d1[0])+1.0*(d2[3]+d1[3]+ww)*(d2[3]+d1[3]+ww)));
return ans;
}
signed main()
{
cin>>w>>h>>l;
cin>>w1>>h1>>l1;
cin>>w2>>h2>>l2;
if(w1==0) pos1=4;
else if(w1==w) pos1=1;
else if(h1==0) pos1=5;
else if(h1==h) pos1=2;
else if(l1==0) pos1=3;
else if(l1==l) pos1=6;
else assert(0);
if(w2==0) pos2=4;
else if(w2==w) pos2=1;
else if(h2==0) pos2=5;
else if(h2==h) pos2=2;
else if(l2==0) pos2=3;
else if(l2==l) pos2=6;
else assert(0);
//cout<<pos1<<' '<<pos2<<'\n';
if(abs(pos1-pos2)==0){//同面
printf("%.3lf",sqrt(1.0*(w1-w2)*(w1-w2)+1.0*(h1-h2)*(h1-h2)+1.0*(l1-l2)*(l1-l2)));
}
else if(abs(pos1-pos2)==3){//对面
printf("%.3lf",cal3());
}
else{//相邻
printf("%.3lf",cal2());
}
}
/*
12 10 20
0 10 0
12 0 20
*/
G
找规律,枚举最低位的1,高位方案数和斐波那契有关
#include<iostream>
#define lint int64_t
#define inv(x) qow(x,mod-2)
#define maxn 40004
#define mod 1000007
using
namespace
std;
lint fac[maxn],invfac[maxn];
lint qow(lint a,lint b){
lint ans=1;
for(;b;a=a*a%mod,b>>=1) if(b&1) ans=ans*a%mod;
return ans;
}
void prework(){
fac[0]=1;
for(int i=1;i<maxn;i++){
fac[i]=fac[i-1]*i%mod;
}
invfac[maxn-1]=inv(fac[maxn-1]);
for(int i=maxn-2;~i;i--){
invfac[i]=invfac[i+1]*(i+1)%mod;
}
}
lint Binomial(lint a,lint b){
if(a<0||b<0||b>a) return 0;
return fac[a]*invfac[b]%mod*invfac[a-b]%mod;
}
int n;
lint f[maxn];
signed main(){
// prework();
//
// for(int i=1;i<maxn;i++){
//
// lint ans=0;
//
// for(int j=1;j<i;j++){
//
// ans=(ans+Binomial(i-j,j-1))%mod;
// }
//
// cout<<i<<' '<<ans<<endl;
// }
f[0]=f[1]=f[2]=1;
for(int i=3;i<maxn;i++){
f[i]=(f[i-1]+f[i-2])%mod;
}
cin>>n;
lint kotae=0;
for(int i=0;i<=n-2;i++){
kotae=(kotae+f[i])%mod;
}
if(n==1) kotae=1;
cout<<kotae<<endl;
end:
return EOF+1;
}
H
签到
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define mod 1000000007
#define pb push_back
typedef pair<int,int> pir;
string sstr[]={"NO\n","YES\n"};
const int N=200010;
int T,n,m;
int has[N][2];
int tmp[4];
int mi=32;
char ch;
signed main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>tmp[3]>>ch>>tmp[2]>>ch>>tmp[1]>>ch>>tmp[0];
int bias=0;
for(int i=0;i<4;i++){
for(int j=0;j<=7;j++){
has[bias+j][!!(tmp[i]&(1<<j))]=1;
}
bias+=8;
}
}
for(int i=31;i>=0;i--){
if(has[i][0]&&has[i][1]) break;
mi--;
}
if(mi==32) mi=0;
cout<<32-mi<<'\n';
}
/*
4
12.0.0.1
10.0.0.24
10.0.0.8
10.0.0.16
*/
I
unsolved
J
签到
#include <iostream>
#include <map>
std::map<char, std::string> mp;
void init() {
mp['A'] = mp['a'] = ".-";
mp['B'] = mp['b'] = "-...";
mp['C'] = mp['c'] = "-.-.";
mp['D'] = mp['d'] = "-..";
mp['E'] = mp['e'] = ".";
mp['F'] = mp['f'] = "..-.";
mp['G'] = mp['g'] = "--.";
mp['H'] = mp['h'] = "....";
mp['I'] = mp['i'] = "..";
mp['J'] = mp['j'] = ".---";
mp['K'] = mp['k'] = "-.-";
mp['L'] = mp['l'] = ".-..";
mp['M'] = mp['m'] = "--";
mp['N'] = mp['n'] = "-.";
mp['O'] = mp['o'] = "---";
mp['P'] = mp['p'] = ".--.";
mp['Q'] = mp['q'] = "--.-";
mp['R'] = mp['r'] = ".-.";
mp['S'] = mp['s'] = "...";
mp['T'] = mp['t'] = "-";
mp['U'] = mp['u'] = "..-";
mp['V'] = mp['v'] = "...-";
mp['W'] = mp['w'] = ".--";
mp['X'] = mp['x'] = "-..-";
mp['Y'] = mp['y'] = "-.--";
mp['Z'] = mp['z'] = "--..";
mp['0'] = "-----";
mp['1'] = ".----";
mp['2'] = "..---";
mp['3'] = "...--";
mp['4'] = "....-";
mp['5'] = ".....";
mp['6'] = "-....";
mp['7'] = "--...";
mp['8'] = "---..";
mp['9'] = "----.";
}
int main() {
std::string s;
std::getline(std::cin, s);
std::string p;
init();
for (char &i:s) {
if (mp.count(i)) p+=mp[i];
}
int l = 0, r = p.size()-1;
// std::cout << r <<"\n";
int flag = 0;
while (l<r) {
if (p[l++]!=p[r--]) flag = 1;
}
if (flag || p.size()==0) std::cout << "NO";
else std::cout << "YES";
return 0;
}
K
签到
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define mod 1000000007
#define pb push_back
typedef pair<int,int> pir;
string sstr[]={"NO\n","YES\n"};
const int N=200010;
int T,n,m;
double p;
double e[N];
double mi=1;
int mipos=1;
signed main()
{
cin>>p;
for(int i=2;i<=16;i++){
double p1=pow((1-p),i);//全部没有感染
e[i]=(p1+i*(1-p1))/i;
if(e[i]<mi){
mi=e[i];
mipos=i;
}
}
cout<<mipos<<'\n';
}
L
签到
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define mod 1000000007
#define pb push_back
typedef pair<int,int> pir;
string sstr[]={"NO\n","YES\n"};
const int N=200010;
int T,n,m;
char c[N];
char d[N];
set<char> mp;
signed main()
{
for(int i=1;i<=5;i++){
cin>>c[i];
mp.insert(c[i]);
}
for(int i=1;i<=7;i++){
string out="";
for(int j=1;j<=5;j++){
cin>>d[j];
if(d[j]==c[j]) out+='G';
else if(mp.find(d[j])!=mp.end()) out+='Y';
else out+='X';
}
if(out=="GGGGG"){
cout<<"WINNER\n";
return 0;
}
if(i==7){
cout<<"LOSER\n";
return 0;
}
cout<<out<<'\n';
}
}
M
签到
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string s[7] = { "XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ",
"X X X X X X X X X X X X X X X X X X X X X ",
"X X X X X X X X X X X X X X X X X X X X X ",
" XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX ",
"X X X X X X X X X X X X X X X X X X X X X X ",
"X X X X X X X X X X X X X X X X X X X X X X ",
"XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX "};
string p = "111011101001001011101110110101011101101011111101101001011111111110111101111111111010101001111111001011011001101111101110100100101110111011010101110110101111110110100101111111111011110111111111101010100111111100101101100110111110111010010010111011101101";
int getnum(string & tmp) {
for (int i = 0; i<=15; ++i) {
if (tmp==p.substr(i*7, 7)) return i;
}
return -1;
}
int main() {
ios::sync_with_stdio(false);
cout.tie(0);
int n;
cin >>n ;
// n = 2;
{
string ans[7];
for (int i = 0; i<7; ++i) ans[i] = string(1000, ' ');
string in, _in;
cin >> in;
if (in.size()%7) _in = string(7-in.size()%7, '0');
_in+=in;
int len = _in.size();
for (int i = 0; i<len; i+=7) {
string tmp = _in.substr(i, 7);
int num = getnum(tmp);
bool flag = 0;
if (num==-1) {
flag = 1;
}
for (int j = 0; j<7; ++j) {
ans[j][i/7*5] = ' ';
for (int k = i/7*5+1; k<i/7*5+5; ++k) {
if (flag) ans[j][k] = ' ';
else ans[j][k] = s[j][num*4+k-i/7*5-1];
}
}
}
int t = 80/(n*5);
for (int k = 0; k<len/7*5-1; k+=5*t) {
for (int i = 0; i<7; ++i) {
for (int ll = 1; ll<=n; ++ll) {
for (int j = k; j<min(k+5*t-1, len/7*5-1); ++j) {
if (j==k) continue;
for (int l = 1; l<=n; ++l) cout << ans[i][j];
}
cout << "\n";
}
}
for (int ll = 1; ll<=n; ++ll)
cout << "\n";
}
}
return 0;
}
/*
1
111011101001001011101110110101011101101011111101101001011111111110111101111111111010101001111111001011011001101111101110100100101110111011010101110110101111110110100101111111111011110111111111101010100111111100101101100110111110111010010010111011101101
*/
N
unsolved
O
仔细读题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define mod 1000000007
#define pb push_back
typedef pair<int,int> pir;
string sstr[]={"NO\n","YES\n"};
#define int ll
const int N=10000010;
int T,a,b,c,d;
int ans1,ans2,flag=0;
signed main()
{
cin>>a>>b>>c>>d;
for(int i=0;i<N;i++){//运i趟
int cur1=a*i;
if((cur1-d)%b!=0) continue;
if(cur1-d<c) continue;
ans1=i,ans2=(cur1-d)/b;
flag=1;
break;
}
if(!flag){
cout<<"No solution.";
}
else{
cout<<"We need "<<ans1<<" truck";
if(ans1!=1) cout<<'s';
cout<<" and "<<ans2<<' '<<"boat";
if(ans2!=1) cout<<'s';
cout<<'.';
}
}