A.Race
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int v1,v2,t,s,l;
cin>>v1>>v2>>t>>s>>l;
int sec=1,a=0,b=0,f=0;
while(1){
if(a-b>=t&&!f)f=s;
if(!f)a+=v1;
else f--;
b+=v2;
if(a==l||b==l)break;
sec++;
}
if(a==l&&b==l)cout<<"Tie "<<sec;
else if(a==l)cout<<"Ming "<<sec;
else cout<<"Hong "<<sec;
return 0;
}
B.Min Value
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
struct node{
int x,id;
bool operator <(const node &t)const{
return x<t.x;
}
}a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i].x,a[i].id=i;
sort(a+1,a+1+n);
int ans1=inf,ans2;
for(int i=1;i<=n;i++){
int p=lower_bound(a+1,a+1+n,(node){-a[i].x,a[i].id})-a;
p=max(1,p);
if(p>1&&p-1!=i)
if(abs(a[i].x+a[p-1].x)<ans1)ans1=abs(a[i].x+a[p-1].x),ans2=a[i].id+a[p-1].id;
else if(abs(a[i].x+a[p-1].x)==ans1)ans2=min(ans2,a[i].id+a[p-1].id);
if(p!=i)
if(abs(a[i].x+a[p].x)<ans1)ans1=abs(a[i].x+a[p].x),ans2=a[i].id+a[p].id;
else if(abs(a[i].x+a[p].x)==ans1)ans2=min(ans2,a[i].id+a[p].id);
if(p+1<=n&&p+1!=i)
if(abs(a[i].x+a[p+1].x)<ans1)ans1=abs(a[i].x+a[p+1].x),ans2=a[i].id+a[p+1].id;
else if(abs(a[i].x+a[p+1].x)==ans1)ans2=min(ans2,a[i].id+a[p+1].id);
}
cout<<ans1<<' '<<ans2;
return 0;
}
C. Coronavirus
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
char g[100][100];
bool vis[100][100];
struct node{
int x,y,s;
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m;
cin>>n>>m;
int sx,sy;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>g[i][j];
if(g[i][j]=='S')sx=i,sy=j;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(g[i][j]=='*'){
vis[i][j]=1;
for(int k=0;k<8;k++){
int dx=i+dir[k][0];
int dy=j+dir[k][1];
if(dx<1||dx>n||dy<1||dy>m)continue;
if(g[dx][dy]=='E'){cout<<"Impossible";return 0;}
vis[dx][dy]=1;
}
}
queue<node> q;
q.push((node){sx,sy,0});vis[sx][sy]=1;
while(!q.empty()){
node p=q.front();
q.pop();
if(g[p.x][p.y]=='E'){cout<<p.s;return 0;}
for(int i=0;i<4;i++){
int dx=p.x+dir[i][0];
int dy=p.y+dir[i][1];
if(dx<1||dx>n||dy<1||dy>m||vis[dx][dy])continue;
vis[dx][dy]=1;
q.push((node){dx,dy,p.s+1});
}
}
cout<<"Impossible";
return 0;
}
D. Array
題意:
題解:
本場題解連接
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
ll u,v;
while(cin>>u>>v){
if(v-u<0||(v-u)%2){cout<<-1<<endl;continue;}
ll d=v-u;
if(!d){
if(!u)cout<<0;
else cout<<1;
}
else{
ll t=d/2;
if((t&u)==0)cout<<2;
else cout<<3;
}
cout<<endl;
}
return 0;
}
G.XOR
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
ll n;
cin>>n;
if(n==1){cout<<0;return 0;}
ll ans=0,cnt=0;
while(n)ans+=(1ll<<cnt),cnt++,n>>=1;
cout<<ans;
return 0;
}
H.Maze
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int n,m;
char g[3010][3010];
int fa[10000010],sz[10000010];
int find(int x){
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
int id(int i,int j){
return (i-1)*m+j;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int q;
cin>>n>>m>>q;
for(int i=1;i<=n*m;i++)fa[i]=i;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>g[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int k=0;k<4;k++){
int dx=i+dir[k][0];
int dy=j+dir[k][1];
if(dx<1||dx>n||dy<1||dy>m||g[dx][dy]==g[i][j])continue;
fa[find(id(i,j))]=find(id(dx,dy));
}
for(int i=1;i<=n*m;i++)sz[find(i)]++;
for(int i=1;i<=n*m;i++)sz[i]=sz[find(i)];
while(q--){
int x,y;
cin>>x>>y;
cout<<sz[id(x,y)]<<endl;
}
return 0;
}
I.Prime
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int prime[maxn];
bool isprime[10000010];
int num=0;
void Prime(int n){
memset(isprime,true,sizeof(isprime));
for(int i=2;i<=n;i++){
if(isprime[i]) prime[++num]=i;
for(int j=1;j<=num;j++){
if(i*prime[j]>n) break;
isprime[i*prime[j]]=false;
if(i%prime[j]==0) break;
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
Prime(10000000);
int _;
cin>>_;
while(_--){
int l,r;
cin>>l>>r;
int p=lower_bound(prime+1,prime+1+num,l)-prime-1;
int q=upper_bound(prime+1,prime+1+num,r)-prime-1;
cout<<q-p<<endl;
}
return 0;
}
J.Compare
題意:
題解:
AC代碼
a=int(input())
b=int(input())
if a>b :
print('>')
elif a==b:
print('=')
else :
print('<')
K.Walk
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=2e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
ll fact[maxn],inv1[maxn];
ll Pow(ll a, ll b){
ll ans = 1;
while(b > 0){
if(b & 1){
ans = ans * a % mod;
}
a = a * a % mod;
b >>= 1;
}
return ans;
}
//逆元
ll inv(ll b){
return Pow(b,mod-2)%mod;
}
ll C(ll n,ll m){
if(m>n||n<0||m<0)return 0;
if(m==0||m==n) return 1;
ll res=(fact[n]*inv1[m]%mod*inv1[n-m])%mod;
return res;
}
void init() {
fact[0] = 1;
for (int i = 1; i < maxn; i++) {
fact[i] = fact[i - 1] * i %mod;
}
inv1[maxn - 1] = Pow(fact[maxn - 1], mod - 2);
for (int i = maxn - 2; i >= 0; i--) {
inv1[i] = inv1[i + 1] * (i + 1) %mod;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
init();
int _;
cin>>_;
while(_--){
int n,m;
cin>>n>>m;
cout<<C(n+m-2,n-1)<<endl;
}
return 0;
}
L. Defeat the monster
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
#define SZ(x) (int)x.size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+1+n);
int ans=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=5;j++){
int p=lower_bound(a+1,a+1+n,a[i]-j)-a-1;
int q=upper_bound(a+1,a+1+n,a[i]+5-j)-a-1;
p=max(0,p);q=min(n,q);
ans=max(ans,q-p);
}
}
cout<<ans;
return 0;
}