栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021ujn新生赛非官方AC代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021ujn新生赛非官方AC代码

A

#include

using namespace std;

int main(){
    int a,b;cin>>a>>b;cout<<(a*b);
}

B

#include
 
using namespace std;
  
vector add(vector &a,vector &b) {
    if(a.size()>b.size())return add(b,a);
    vectorrt;
    int t=0;
    for(int i=0; i a) {
    for(int i=a.size()-1; i>=0; i--)printf("%d",a[i]);
    puts("");
}
int main() {
    string a,b;
    cin>>a>>b;
    vector A,B;
    for(int i=a.size()-1; i>=0; i--)A.push_back(a[i]-'0');
    for(int i=b.size()-1; i>=0; i--)B.push_back(b[i]-'0');
    out(add(A,B));
     
}

C

#include
using namespace std;
 
 
const int N=1e6+500;
typedef long long ll;
bool ck(ll x){//有平方因子 
     
    for(int i=2;i<=N-100;i++){
        if(x%((ll)i*i)==0)return true;
    } 
    for(int i=1;i<=N-100&&i<=x;i++){
        if(x%i==0){
             ll t=x/i;
             ll u=sqrt(t);
             if(u*u==t&&u!=1LL)return true;
        }
    }
    return false;
}
int main(){
    ll c;cin>>c;
    if(c==1LL){
        puts("no");
        return 0;
    }
    puts(ck(c)?"yes":"no");
}

D

#include
 
using namespace std;
 
#define mp make_pair
#define fi first
#define se second
#define pb push_back
typedef long double db;
 
const db eps=1e-22;
const db pi=acos(-1);
 
int sign(db k) {
    if(k>eps)return 1;
    else if(k<-eps)return -1;
    return 0;
}
int cmp(db k1,db k2) {
    return sign(k1-k2);
}
int inmid(db k1,db k2,db k3) { //在线段内
    return sign(k1-k3)*sign(k2-k3) <=0;
}
struct point {
    db x,y;
    point operator + (const point &k1)const {
        return (point) {
            k1.x+x,k1.y+y
        };
    }
    point operator - (const point &k1)const {
        return (point) {
            x-k1.x,y-k1.y
        };
    }
    point operator * (db k1)const {
        return (point) {
            x*k1,y*k1
        };
    };
    point operator / (db k1)const {
        return (point) {
            x/k1,y/k1
        };
    }
    bool operator < (const point k1)const {
        int a=cmp(x,k1.x);
        if(a==-1)return 1;
        else if (a==1)return 0;
        else return cmp(y,k1.y)==-1;
    }
    db abs() {
        return sqrt(x*x+y*y);
    }
    db abs2() {
        return x*x+y*y;
    }
    db dis(point k1) { //到k1的距离
        return ((*this)-k1).abs();
    }

    void scan() {
        db k1,k2;
        scanf("%Lf%Lf",&k1,&k2);
        x=k1,y=k2;
    }


};
 
int inmid(point k1,point k2,point k3) {
    return inmid(k1.x,k2.x,k3.x)&&inmid(k1.y,k2.y,k3.y);
}
 

 
db dot(point k1,point k2) {
    return k1.x*k2.x+k1.y*k2.y;
}
 
 
 
point proj(point k1,point k2,point q) { //q到直线k1,k2的投影 
    point k=k2-k1;
    return k1+k*(dot(q-k1,k))/k.abs2();
}
 

 
//点到线段的距离
db disSP(point k1,point k2,point q) {
    point k3=proj(k1,k2,q);
    if(inmid(k1,k2,k3))return q.dis(k3);
    else return min(q.dis(k1),q.dis(k2));
}
 
  
int main() {
    point p,q,r;
    p.scan(),q.scan(),r.scan();
    if(sign(q.dis(r))==0)printf("%.6Lf",p.dis(q));
    else printf("%.6Lf",q.dis(r)+disSP(q,r,p));
    return 0;
}

E

#include
 
using namespace std;
 

typedef long long ll;

const int N=1e5+500;

ll k;
int n,a[N];
 
 
//最大的x <=x的数对有>=k个 
 
int getnum(int u,int x){if(!u)return 0;
    int l=1,r=u;
    while(l>1;
        if(a[mid]<=x)l=mid;
        else r=mid-1;
    }
    if(a[l]<=x) 
    return l;
    else return 0;
}
 
bool ck(int x)//和<=x的有大于等于k个 
{
    ll tol=0;
    for(int i=1;i<=n;i++){
        tol+=(ll)getnum(i-1,x-a[i]);
    }
     
    return tol>=k; 
}
 
int main(){
    scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    sort(a+1,a+n+1); 
    int l=0,r=2e8+1;
    while(l>1;
        if(ck(mid))r=mid;
        else l=mid+1;
    } 
    printf("%dn",l);
}

F

#include
 
using namespace std;
 
int main(){
	int tt;
    scanf("%d",&tt);
    while(tt--){
        int u;
        scanf("%d",&u);
        puts("No");
    }
    return 0;
}
 

G

#include
 
using namespace std;
int main(){
    int tt;
    scanf("%d",&tt);
    while(tt--){
        char c=getchar();
        int a=0,b=0;
        if(c=='+')a++;
        else if(c=='-')b++;
        else a++;
        while(1){
            c=getchar();
            if(c=='n')break;
            if(c=='+')a++;
            else if(c=='-')b++;
        }
        printf("%dn",a-b);
    }
}

H

#include
 
using namespace std;
 
typedef long long ll;
 
ll solve(ll r){
    ll rt=0;
    for(ll i=-r;i<=r;i++){
        for(ll j=-r;j<=r;j++){
            if(i*i+j*j<=r*r)rt+=1+((ll)sqrt(r*r-i*i-j*j))*2;
        }
    }
    return rt;
}
 
int main(){
    int tt;
    scanf("%d",&tt);
    while(tt--){
        ll r;
        scanf("%lld",&r);
        printf("%lldn",solve(r));
    }
}

I

#include
 
using namespace std;
 
#define int long long
int ksm(int x, int n, int p)
 
{
    int res = 1;
    while (n)
    {
        if (n & 1) res = res*x%p;
        x = x*x%p;
        n >>= 1;
    }
    return res;
}
const int MOD=998244353;
 
int solve(int n){
    if(n<=1)return 1;
    int x,y;
    for(int i=n/3;i>=0;i--){
        if((n-3*i)%2==0){
            x=(n-3*i)/2;
            y=i;
            break;
        }
    }
    return ksm(2,x,MOD)*ksm(3,y,MOD)%MOD;
}
 
signed main(){
    int tt;
    cin>>tt;
    while(tt--){
        int x;cin>>x;
        cout< 

J

#include
 
using namespace std;
 
typedef pair PII;
 
#define x first 
#define y second
 
PII turn(PII p){
    int x=p.first,y=p.second;
    int u,v;
    if(x<0&&y<0){
        u=-1,v=1;
    }
    if(x<0&&y>0){
        u=1,v=1;
    }
    if(x>0&&y<0){
        u=-1,v=-1;
    }
    if(x>0&&y>0){
        u=1,v=-1;
    }
    return {u*abs(y),v*abs(x)};
}
PII up(PII p){
    if(p.x==1)return{-1,p.y};
    else return {p.x-1,p.y};
}
PII left(PII p){
    if(p.y==1) return {p.x,-1};
    else return {p.x,p.y-1};
}//注意边界 
     
 
struct Info{
    PII pos[6];
    void Sort(){
        sort(pos,pos+6);
    }   
    bool operator==(const Info I)const {
        for(int i=0;i<6;i++)if(pos[i]!=I.pos[i])return false;
        return true;
    } 
    void E();
};
 
bool can_up(Info I){
    for(int i=0;i<6;i++)if(I.pos[i].x==-3)return false;
    return true;
}
 
bool can_left(Info I){
    for(int i=0;i<6;i++)if(I.pos[i].y==-3)return false;
    return true;
}
Info left(Info I){
    Info rt;
    for(int i=0;i<6;i++)rt.pos[i]=left(I.pos[i]);
    return rt;
}
Info up(Info I){
    Info rt;
    for(int i=0;i<6;i++)rt.pos[i]=up(I.pos[i]);
    return rt;
}
void Info::E(){
    while(can_up(*this)){
        *this=up(*this);
    }
    while(can_left(*this)){
        *this=left(*this);
    }
}
Info turn(Info I){
    Info rt;
    for(int i=0;i<6;i++)rt.pos[i]=turn(I.pos[i]);
    rt.Sort();
    rt.E();
    return rt;
}
     
Info reflect(Info I){
    Info rt;
    for(int i=0;i<6;i++)rt.pos[i]={-I.pos[i].first,I.pos[i].second};
    rt.Sort();
    rt.E();
    return rt;
}
 
PII bb[11][6]={
    { { -3,-3 } , { -2,-3 } , {-2 ,-2 } , {-2 ,-1 } , { -2,1 } , { -1,1 } } ,
     
    { {-2 ,-3 } , { -2,-2 } , {-3 ,-2 } , {-2 ,-1 } , {-2 ,1 } , {-1 ,-2 } } ,
     
    { { -2,-3 } , {-2 ,-2 } , {-3 ,-2 } , {-2 ,-1 } , {-2 ,1 } , {-1 ,-1 } } ,
     
    { { -3,-3 } , {-2 ,-3 } , {-1 ,-3 } , {-2 ,-2 } , {-2 ,-1 } , {-2 ,1 } } ,
     
    { {-3 ,-3 } , {-2 ,-3 } , {-2 ,-2 } , {-2 ,-1 } , {-2 ,1 } , {-1 ,-2 } } ,
     
    { { -3,-3 } , {-2 ,-3 } , {-2 ,-2 } , {-2 ,-1 } , {-2 ,1 } , {-1 ,-1 } } ,
     
    { { -3,-3 } , {-3 ,-2 } , {-2 ,-2 } , {-1 ,-2 } , {-2 ,-1 } , {-2 ,1 } } ,
     
    { { -3,-3 } , {-3 ,-2 } , {-2 ,-2 } , {-2 ,-1 } , {-1 ,-1 } , { -2,1 } } ,
     
    { { -3,-3 } , {-3 ,-2 } , {-2 ,-2 } , {-2 ,-1 } , {-2 ,1 } , {-1 ,1 } } ,
     
    { { -3,-3 } , {-3 ,-2 } , {-2 ,-2 } , {-2 ,-1 } , {-1 ,-1 } , {-1 ,1 } } ,
     
    { { -2, -3} , {-2 ,-2 } , {-2 ,-1 } , { -3, -1} , { -3,1 } , {-3 ,2 } } ,
};
 
int f[6]={-3,-2,-1,1,2,3}; 
 
int main(){
    int tt;
    cin>>tt;
    while(tt--){
        Info cur;
        for(int i=0;i<6;i++){
            int x,y;
            cin>>x>>y;
            x=f[x],y=f[y];
            cur.pos[i]={x,y};
        }
        cur.Sort(),cur.E();
        int ok=0; 
        for(int I=0;I<11;I++){
            Info now;
            for(int i=0;i<6;i++)now.pos[i]=bb[I][i];
            now.Sort();now.E();
            for(int j=0;j<4;j++){
                Info ref=reflect(now);
                now.Sort(),now.E();
                ref.Sort(),ref.E();
                if(cur==ref||cur==now)ok=1;
                now=turn(now);
            } 
        }
        puts(ok?"Yes":"No");
    }
}

K

#include
 
using namespace std;
 
const int N=2005;
 
int color[N],e[N],ne[N],h[N],idx,n,m;
int ok=1;
void dfs(int x,int c){
    color[x]=c;
    int nc=-c;
    for(int i=h[x];~i;i=ne[i]){
        int j=e[i];
        if(color[j]==c){
            ok=0;
            return ;
        }
        if(!color[j])dfs(j,nc);
         
    }
}
void add(int a,int b){
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int main(){
    memset(h,-1,sizeof h);
    cin>>n>>m;
    while(m--){
        int a,b;cin>>a>>b;
        add(a,b),add(b,a);
    }
    for(int i=1;i<=n;i++)if(!color[i])dfs(i,1);
    puts(ok?"YES":"NO"); 
}

L

#include
 
using namespace std;
 
const int N=1e5+500;
 
int a[N],n;
int main(){
    cin>>n;for(int i=1;i<=n;i++)cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=2;i<=n;i++)if(a[i]-a[i-1]==2){
    cout<

M

#include
 
using namespace std;
 
typedef long long ll;
 
unordered_map cnt;
 
int ed,k;
 
//ed 第一个个数为k的位置 
 
//solve返回值 第一个1的位置 
 
ll a[100005];
 
int solve(ll x){
    bool f=0;
    int rt=0;
    for(int i=0;;i++){
        a[i]=x;
        cnt[x]++;
        if(!f&&cnt[x]==k)ed=i,f=1;
        if(x==1)return i;
        if(x%2==1)x=3*x+1;
        else x/=2;
    }
}
 
signed main(){
    int tt;
    cin>>tt;
    while(tt--){
        ed=-1;
        cnt.clear();
        ll n;int m;
        scanf("%lld%d%lld",&n,&m,&k);
        if(n==0){
            puts("0");
            continue;
        } 
        int t=solve(n);//第一个1
        if(med)puts("0");
                else printf("%lldn",a[m]);
            }
        } 
        else if(m==t){
            if(ed==-1){
                puts("1");  
            }
            else if(ed=1);
            bool ok=(num1>=k)||(num2>=k)||(num4>=k);
            if(ok)puts("0");
            else{
                int ans=-1;
                int dd=m-t;
                if(dd%3==0)ans=1;
                else if(dd%3==1)ans=4;
                else ans=2;
                printf("%dn",ans);
            } 
        } 
    }
}

N

#include
 
using namespace std;

int n;
string str[20];
 
int main(){
    cin>>str[1]>>str[2];
    cin>>n;
    for(int i=3;i<=n;i++)str[i]=str[i-2]+str[i-1];
    cout< 

O

#include
 
using namespace std;
 
const int N=305;
 
typedef long long ll; 
int p[N];
 
int h[N],n,m,nn;
 
int f[N][100*N];//i个,共j个,价值为u,最少价钱
 
#define ckmin(x,y) x=(x>nn>>m>>k;
    int hsum=0;
    for(int i=1; i<=nn; i++) {
        int pp;int hh;
        cin>>pp>>hh;
        if(hh>0) {
            n++;
            p[n]=pp,h[n]=hh;
            hsum+=hh;
        }
    }
    memset(f,0x3f,sizeof f);
    ckmin(m,n);
    int i,j,u;
    for(j=0; j<=m; j++)f[j][0]=0;    
    for( i=1; i<=n; i++) { 
        for( j=m; j>=1; j--) {
            for( u=0; u<=hsum; u++) {
                if(u>=h[i]) {
                    ckmin(f[j][u],f[j-1][u-h[i]]+p[i]);
                } else {
                    ckmin(f[j][u],p[i]);
                }
                if(f[j][u]>1e9+100000)break;
            }
        }
    }
 
    int l=0,r=hsum;
 
    while(l>1;
        if(f[m][mid]<=k)l=mid;
        else r=mid-1;
    }
    cout< 

P

#include
 
using namespace std;
 
const int MOD=998244353,N=1e6+500;
 
typedef long long ll;
 
int fac[N];
 
int main(){
    fac[0]=1;
    for(int i=1;i<=N-200;i++)fac[i]=(ll)fac[i-1]*i%MOD;
    int n;
    cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++)sum=((ll)sum+fac[i])%MOD;
    cout< 

Q

#include
 
using namespace std;
 
typedef long long ll;
const int MOD=494273703;
 
int fac[3050];
 
int main(){
    fac[0]=1;
    for(int i=1;i<=3010;i++)fac[i]=(ll)fac[i-1]*i%MOD;
    int s=0;for(int i=1;i<=3001;i++)s=((ll)s+fac[i])%MOD;
    int n;cin>>n;
    if(n>=3001)cout<<(s)<<"n";
    else {
        int sum=0;
        for(int i=1;i<=n;i++)sum=((ll)sum+fac[i])%MOD;
        cout< 

R

#include
 
using namespace std;
 
int main(){
    int t;
    cin>>t;
    cout<<(100000-t);
}
 

S

#include
 
using namespace std;
int main(){
    puts("-11");
}

T

#include
#include
#include
using namespace std;
 
const int N=1001000;
int a[N];
char s[N];
int main(){
    int n;
    cin>>n;
    scanf("%s",s);
    for(int i=1;i<=n;i++)a[i]=s[i-1]-'0';
    for(int i=1;i<=n;i++){
        if(a[i]==1){
        int f=-1;
        for(int j=max(1,i-1);j<=min(n,i+3);j++)if(a[j]==3){
            f=j;break;
        }
        if(f!=-1){
            int u=min(f+1,i+2);//炸弹
            for(int k=max(1,u-1);k<=min(n,u+1);k++)if(a[k]==3)a[k]=0; 
        }   
        }
        else if(a[i]==2){
        int f=-1;
        for(int j=max(1,i-2);j<=min(n,i+4);j++){
            if(a[j]==3){
                f=j;break;
            }
        }
        if(f!=-1){
            int u=min(f+2,i+2);
            for(int k=max(1,u-2);k<=min(n,u+2);k++){
                if(a[k]==3)a[k]=0;
            }
        }   
        }
    }
    int ok=1;
    for(int i=1;i<=n;i++)if(a[i]==3)ok=0;
    puts(ok?"Yes":"No"); 
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号