其他分享
首页 > 其他分享> > 2020.06.09——习题训练五

2020.06.09——习题训练五

作者:互联网

A - Sum of Odd Integers

前N个奇数和为N^2,所以说,当N小于K^2时即为不满足条件。再判断一下特殊情况就行。

#include<bits/stdc++.h>

using namespace std;
int t ;


int main(){
    scanf("%d",&t);
    while(t--){
        int n,k;
        cin>>n>>k;
        if(n%2==k%2){
            if(k==1&&n%2==0)
                cout<<"NO"<<endl;
            if((n/k)<k)
                cout<<"NO"<<endl;
            else
                cout<<"YES"<<endl;
        } 
        else{
            cout<<"NO"<<endl;
        }
    } 
    return 0;
}

B - Princesses and Princes

直接找没有配对的人就行,如果都配对了,就没有配对情况。

#include<bits/stdc++.h>

using namespace std;
const int MAXN=1e5+7;
int t;
int main(){
    scanf("%d",&t);
    while(t--){
        int n,a[MAXN],b[MAXN];
        memset(a,0,sizeof(a));
        map<int,int> mp;
        cin>>n;
        for(int i =1;i<=n;i++)
            mp[i]=0;
        for(int p=1;p<=n;p++){
            int k;
            bool flag=true;
            cin>>k;
            for(int i =1;i<=k;i++){
                int tmp;
                cin>>tmp;
                if(mp[tmp]==0&&flag){
                    a[p]=tmp;
                    mp[tmp]=1;
                    flag=false;    
                }
            }
        }
        int ans1=0,ans2=0;
        for(int i =1;i<=n;i++){
            
            if(a[i]==0&&!ans1)
                ans1=i;
            if(mp[i]==0&&!ans2)
                ans2=i;        
        }
        if(ans1){
            cout<<"IMPROVE"<<endl;
            cout<<ans1<<" "<<ans2<<endl;
        }
        else
            cout<<"OPTIMAL"<<endl;
     }
    return 0;
}

C - EhAb AnD gCd

想麻烦了,直接输出就行……

#include<bits/stdc++.h>

using namespace std;
const int MAXN=1e5+7;
int t;

struct wm{
    int k;
    map<int,int> mp;
}g[MAXN];

int main(){
    scanf("%d",&t);
    while(t--){
        int n;
        cin>>n;
        cout<<"1 "<<n-1<<endl;
     }
    return 0;
}

D - CopyCopyCopyCopyCopy

 找不同的数,其实用map好一点。

#include<bits/stdc++.h>

using namespace std;
const int MAXN=1e5+7;
int t;

int main(){
    scanf("%d",&t);
    while(t--){
        int n;
        cin>>n;
        int tmp,ans=0;
        map<int,int> mp;
        for(int i =1;i<=n;i++){
            cin>>tmp;
            if(mp[tmp]==0){
                mp[tmp]=1;
                ans++;
            }        
        }
        cout<<ans<<endl;
     }
    return 0;
}

F - Yet Another Tetris Problem

一共就两个判断点,不能同时有偶和奇数。

#include<bits/stdc++.h>

using namespace std;
const int MAXN=1e5+7;
int t;


    


int main(){
    scanf("%d",&t);
    while(t--){
        int n,flag1=0,flag2=0;
        cin>>n;
        while(n--){
            int tmp;
            cin>>tmp;
            if(tmp%2==0)
                flag1=1;
            if(tmp%2)
                flag2=1;
        } 
        if(flag1&&flag2)
            cout<<"NO"<<endl;
        else
            cout<<"YES"<<endl;
     }
    return 0;
}

G - Yet Another Palindrome Problem

 又想麻烦了,直接找到两个相同的数字中间是否为空就行。

#include<bits/stdc++.h>

using namespace std;
const int MAXN=1e5+7;
int t;


    


int main(){
    scanf("%d",&t);
    while(t--){
        int n, a[MAXN],l,r,res[MAXN],flag=0;
        memset(res,1,sizeof(res));
        cin>>n;
        for(int i =0;i<n;i++)
            cin>>a[i];
        int len=0;
        for(int i =0;i<n;i++){
            for(int j = n-1;j>i+1;j--){
            //    cout<<i<<" "<<j<<endl;
                if(a[i]==a[j]){
                    flag=1;
                    break;
                }    
            }
            if(flag)
                break;
        }
    //    cout<<len<<endl;
        if(flag)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
        
     }
    return 0;
}

 

H - Frog Jumps

总要往右跳,直接找R就行。

#include<bits/stdc++.h>

using namespace std;
const int MAXN=1e5+7;
int t;


    


int main(){
    scanf("%d",&t);
    while(t--){
        string ss;
        int d=1,ans=-1;
        cin>>ss;
        for(int i =ss.length()-1;i>=0;i-- ){
            if(ss[i]=='R'){
                ans=max(d,ans);
                d=1;
            }
            else
                d++;
        }
        ans=max(d,ans);
        
        cout<<ans<<endl;
        
     }
    return 0;
}

 

标签:tmp,int,09,cin,2020.06,while,MAXN,习题,include
来源: https://www.cnblogs.com/aixiaodezsh/p/13114516.html