Articles8
Tags2
Categories0

2019广工新生赛sabee题解


suibianxiexie

A-原初的信纸

题目链接

签到成功,这是你的签到奖励.jpg

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
int a[maxn];
void solve(){
    int n;scanf("%d",&n);int mx=0; 
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        mx=max(mx,a[i]);
    }
    printf("%d\n",mx);
}
int main(){
    int t;scanf("%d",&t);while(t--){
        solve();
    }
}

tags: *500

B-骑士的对决

题目链接

签到成功,这是你的签到奖励.jpg

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
int main(){
    char a,b,c,d;
    scanf("%c%c%c%c",&a,&b,&c,&d);
    if(d=='S'&&a=='S'&&b=='J'||d=='S'&&a=='J'&&b=='S'||d=='J'&&a=='B'&&b=='J'||d=='J'&&a=='J'&&b=='B'||d=='B'&&a=='B'&&b=='S'||d=='B'&&a=='S'&&b=='B'){
        printf("lyrnb");
    }else{
        printf("pmznb");
    }
}

tags: game *600

C-秘密的议会

题目链接

签到成功,这是你的签到奖励.jpg

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
void solve(){
    char ch[110];
    scanf("%s",ch);
    int n=strlen(ch);
    int cnt1=0;int cnt2=0;
    for(int i=0;i<n;i++){
        if(ch[i]=='Y'||ch[i]=='y'){
            cnt1++;
        }else if(ch[i]=='N'||ch[i]=='n'){
            cnt2++;
        }
    }
    if(cnt1>=n/2){
        printf("pmznb\n");
    }else if(cnt2>=n/2){
        printf("lyrnb\n");
    }else printf("wsdd\n");
}
int main(){
    int t;scanf("%d",&t);
    while(t--) solve();
}

tags: *600

D-城市的税金

题目链接

按题意模拟即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
ll a[maxn];
int n,m;
ll fun(ll x){
    return x*251%996*404*123;
} 
map<ll,int>mp;
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
    }
    while(m--){
        ll op,b,c;
        scanf("%lld%lld%lld",&op,&b,&c);
        if(op==1){
            for(int i=b;i<=c;i++){
                a[i]=fun(a[i]);
            }
        }else{
            mp.clear();int ans=0;
            for(int i=b;i<=c;i++){
                mp[a[i]]++;
                ans=max(ans,mp[a[i]]);
            } 
            printf("%d\n",ans);
        }
    }
}

tags: implementation data strcutres *700

E-缺席的神官

题目链接

基础贪心,将工作日之间的间隔加入优先队列,取前k个即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
ll a[maxn];
int n,m,k;
int main(){
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    int sum=a[n]-a[1]+1;
    priority_queue<int>q;
    for(int i=1;i<n;i++){
        q.push(a[i+1]-a[i]-1);
    }
    k--;
    while(k--){
        sum-=q.top();q.pop();
    }
    printf("%d\n",sum);
}

tags: greedy *1000

F-失踪的玫瑰

题目链接

待补

tags:math *2200

G-虚数的纸牌

题目链接

sb模拟题,按题意模拟即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int f1(int x){
    if(x==4) return 6;
    if(x==3) return 3;
    if(x==2) return 1;
}
int f2(int x){
    if(x==4) return 4;
    return 1;
}
char ch[20];
int cnt[15];
void solve(){
    scanf("%s",ch);
    memset(cnt,0,sizeof(cnt));
    int n=strlen(ch);
    for(int i=0;i<n;i++){
        if(ch[i]>='3'&&ch[i]<='9'){
            cnt[ch[i]-'3']++;
        }else if(ch[i]=='0') cnt[7]++;
        else if(ch[i]=='A') cnt[11]++;
        else if(ch[i]=='2') cnt[12]++;
        else if(ch[i]=='J') cnt[8]++;
        else if(ch[i]=='Q') cnt[9]++;
        else if(ch[i]=='K') cnt[10]++;
    }
    int ans=17;
    for(int i=0;i<=12;i++){
        if(cnt[i]>=2){
            ans+=f1(cnt[i]);
        }if(cnt[i]>=3){
            ans+=f2(cnt[i])*(17-cnt[i]);
            int res=0;
            for(int j=0;j<=12;j++){
                if(i==j) continue;
                if(cnt[j]>=2){
                    res+=f1(cnt[j]);
                }
            }
            ans+=res*f2(cnt[i]);
        }if(cnt[i]==4){
            ans++;
        }
    }
    for(int i=0;i<=8;i++){
        if(cnt[i]&&cnt[i+1]&&cnt[i+2]&&cnt[i+3]&&cnt[i+4]){
            ans+=cnt[i]*cnt[i+1]*cnt[i+2]*cnt[i+3]*cnt[i+4];
        }
    }
    printf("%d\n",ans);
}
int main(){
    int t;scanf("%d",&t);while(t--) solve();
}

tags: implementation *1000

H-绵羊的硬币

题目链接

打个表

天才wz嘴了正解

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
ll fib[110]; 
void solve(){
    ll n;scanf("%lld",&n);
    ll now=1;int cnt=0;
    for(int i=0;i<=60;i++){
        if(now>n){
            break;
        }
        now*=2;cnt++;
    }    
    printf("%lld\n",fib[cnt]);
}
int main(){
    fib[1]=1;fib[2]=1;
    for(int i=3;i<=100;i++){
        fib[i]=fib[i-1]+fib[i-2];
    }int t;scanf("%d",&t);while(t--) solve();
}

tags: math,brute force,*1300

I-迷途的怪物

题目链接

找规律,当n为奇数时答案为1,n为偶数时答案为p-1;就是这么简单

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
ll p;char n[1000010];
void solve(){
    scanf("%lld%s",&p,n);
    int len=strlen(n);
    int ok=n[len-1]-'0';
    if(ok%2==0){
        printf("1\n");
    }else{
        printf("%lld\n",p-1);
    }
}
int main(){
    int t;scanf("%d",&t);while(t--) solve();
}

tags: math,brute force,*1500

J-简单的数学

题目链接

简单数学题(不是

只要你认真求导 发现当x=1代进去 能消掉一大片233.

代码又是傻逼几行

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
void solve(){
    ll n;scanf("%lld",&n);
    if(n%2==0) printf("-%lld\n",n*(n+1));
    else printf("%lld\n",n*(n+1));
}
int main(){
    int t;scanf("%d",&t);while(t--){
        solve();
    }
}

tags: math,*1300

K-消亡的质数

题目链接

被天才wz嘲笑了两天 自闭了

傻逼题 但我更sb

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
void solve(){
    ll n;scanf("%lld",&n);
    n--;if(n%3){
        printf("NO\n");return ;
    }
    n/=3;ll p=sqrt(n);if(p*(p+1)==n) printf("YES\n");
    else printf("NO\n");
}
int main(){
    int t;scanf("%d",&t);while(t--){
        solve();
    }
}

tags: math,*-1

L-危险的台阶

待补

tags:math, *2500

M-破碎的愿望

题目链接

为什么,明明是我最爱字符串题,为什么会变成这样。。。

写了1w年

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+50;
char ch[40];
int main(){
    int n;ll k;scanf("%d%lld",&n,&k);
    scanf("%s",ch);
    ll x1=k/n;ll x2=k%n;
    if(x2) x1++;
    if(x1%2==0) reverse(ch,ch+n);
    x2=(k-1)%n;
    printf("%c",ch[x2]); 
}

tags:strings *500

Author:西瓜喵喵.
Link:https//:ForgGYLH.github.io/2019/12/10/2019%E5%B9%BF%E5%B7%A5%E6%96%B0%E7%94%9F%E8%B5%9Bsabee%E9%A2%98%E8%A7%A3/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可