2018 浙江省賽

目錄

A.Peak 

B - King of Karaoke

J - CONTINUE...?

L - Doki Doki Literature Club

M - Lucky 7


A.Peak 

【題意】

給出的數組的元素大小,是否符合只有一個先上升在下降的趨勢

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
#include<list>
#include <iostream>
#include <queue>
using namespace std;
const int maxn = 1e5+ 10;
typedef  long long ll;
ll a[maxn];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        //memset(a,0,sizeof(a));
        int n,peak = 0,no = 0;
        scanf("%d",&n);
        for(int i = 1 ;i <= n;i++)
        {
            a[i] = 0;
            scanf("%lld",&a[i]);
        }
        a[0] = a[n+1] = -1;
        for(int i = 1;i <= n+1;i++)
        {
            if(a[i] < a[i-1])//找到數字開始下降的點,試過了這裏寫不寫=都對
            {
                peak = i - 1;
                if (peak == n || peak == 1)
                    no = 1;
                break;
            }
        }
        for(int i = peak + 1;i <= n;i++)//以該點爲peak,詢問是否滿足條件
        {
            if(a[i] >= a[i-1])//後一項嚴格小於前一項,必須有等號
            {
                no = 1;
                break;
            }
        }
        if(no)
            puts("No");
        else
            puts("Yes");
    }
    return 0;
}

B - King of Karaoke

  注意最大maxn的取值範圍

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
#include<list>
#include <iostream>
#include <queue>
#include <map>
using namespace std;
const int maxn = 2e5+ 10;
typedef  long long ll;
int a[maxn],p[maxn],ne[maxn];
int cmp(int a,int b)
{
    return a > b;
}

int main()
{
    ios::sync_with_stdio(false);
    int t,x;
    cin>>t;
    while(t--)
    {
        memset(a,0,sizeof(a));
        memset(p,0,sizeof(p));
        memset(ne,0,sizeof(ne));
        int n,fp = 0,fn = 0,ans;
        cin>>n;
        for(int i = 0;i < n;i++)
           cin>>a[i];
        for(int i = 0;i < n;i++)
        {
            cin>>x;
            ll e = x - a[i];//注意這裏maxn可以達到2e5!!!
            if(e >= 0)
                p[e] ++;
            else
                ne[-e] ++;
        }
        sort(p,p+maxn,cmp);
        sort(ne,ne+maxn,cmp);
        ans = max(p[0],ne[0]);
        cout<<ans<<endl;
    }

    return 0;
}

 CDEFGHI unsolved

J - CONTINUE...?

好煩一道題,還沒弄明白

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
#include<list>
#include <iostream>
#include <queue>
#include <map>
using namespace std;
const int maxn = 1e6+10;
typedef  long long ll;
int ans[maxn];
int main()
{
    //ios::sync_with_stdio(false);
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,sum1 = 0,sum2 = 0,sum = 0;
        string str;
        scanf("%d",&n);
        for(int i = 0;i < n;i++)
            ans[i] = 0;
        cin>>str;
        sum = (1+n)*n/2;
        for(int i = 0;i < n/2;i++)
        {
            if(i % 2 == 0)
            {
                ans[i] = 0;
                sum1 += i+1;
            }
            else
            {
                ans[i] = 1;
                sum2 += i+1;
            }
        }
        for(int i = n/2;i < n;i++)
        {
            if(i % 2 == 0)
            {
                ans[i] = 1;
                sum2 += i+1;
            }
            else
            {
                ans[i] = 0;
                sum1 += i+1;
            }
        }
        if(sum1 != sum2)
        {
            puts("-1");
            continue;
        }
        for(int i = 0;i < n;i++)
        {
            if(str[i] == '1')//boy
            {
                if(ans[i])
                    printf("4");
                else
                    printf("3");
            }
            else
            {
                if(ans[i])
                    printf("2");
                else
                    printf("1");
            }
        }
        
        puts("");
    }
    
    return 0;
}

K

L - Doki Doki Literature Club

記得用long long。。我太蠢了pair裏忘記改ll了。。。

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
#include<list>
#include <iostream>
#include <queue>
#include <map>
using namespace std;
const int maxn = 150;
typedef  long long ll;
typedef  pair<string,ll> P;
P p[maxn];
bool cmp(P a,P b)
{
    if(a.second != b.second)
    {
        if(a.second > b.second)
            return  true;
    }
    else
    {
        if(a.first < b.first)
            return true;
    }
    return false;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        ll sum=0;
        cin>>n>>m;
        for(int i = 1;i <= n;i++)
        {
            string str;
            ll num;
            cin>>str>>num;
            p[i] = make_pair(str,num);
        }
        sort(p+1,p+n+1,cmp);
        for(int i = 1;i <= m;i++)
           sum += (m - i + 1) * p[i].second;
        cout<<sum;
        for(int i = 1;i <= m;i++)
            cout<<" "<<p[i].first;
        puts("");
    }
    return 0;
}

M - Lucky 7

 水題,看清輸出的Yes和No的大小寫

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
#include<list>
#include <iostream>
#include <queue>
using namespace std;
const int maxn = 1e5+ 10;
typedef  long long ll;

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int a[105];
        int n,m,yes = 0;
        cin>>n>>m;
        for(int i = 0;i < n;i++)
            cin>>a[i];
        for(int i = 0;i < n;i++)
        {
            if((a[i] + m) % 7 == 0)
            {
                yes = 1;
                break;
            }
        }
        if(yes)
            puts("Yes");
        else
            puts("No");
    }

    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章