码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #637 (Div. 2)

时间:2020-05-05 10:34:23      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:range   ORC   ace   数字串   memset   i+1   http   test   sizeof   

Codeforces Round #637 (Div. 2)

A. Nastya and Rice

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;
 
 
int main(){
    int T;
    cin>>T;
    while(T--){
        int n,a,b,c,d;
        cin>>n>>a>>b>>c>>d;
        int m=(a-b)*n;
        int mm=(a+b)*n;
        if(mm<(c-d)||m>(c+d))cout<<"No"<<endl;
        else cout<<"Yes"<<endl;
    }
 
    return 0;
}

B. Nastya and Door

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=2e5+10;
int a[MAXN];
int b[MAXN];
bool vis[MAXN];
int main(){
    int T;
    cin>>T;
    while(T--){
        memset(b,0,sizeof(b));
        memset(vis,0,sizeof(vis));
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        for(int i=2;i<n;i++){
            if(a[i]>a[i-1]&&a[i]>a[i+1]){
                b[i]=b[i-1]+1;
                vis[i]=true;
            }else b[i]=b[i-1];
        }
        b[n]=b[n-1];
        int l=0;
        int ans=-1;
        for(int i=1;i<=n-k+1;i++){
            int res=b[i+k-1]-b[i-1];
            if(vis[i])res--;
            if(vis[i+k-1])res--;
            if(ans<res){
                ans=res;
                l=i;
            }
        }
        cout<<ans+1<<‘ ‘<<l<<endl;
 
    }
 
    return 0;
}

C. Nastya and Strange Generator

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=2e5+10;
int a[MAXN];
int main(){
    int T;
    cin>>T;
    while(T--){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        bool ok=true;
        for(int i=1;i<n;i++){
            if(a[i+1]>a[i]+1)ok=false;
        }
        if(ok)cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
 
    return 0;
}

D. Nastya and Scoreboard

dp[i][j]:第i位之后使用j根可以组成数字串.
$dp[i][j]=dp[i+1][j-t];$第i位使用t根可以组成数字。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=2100;
string s;
int num[10]={0b1110111,0b0010010,0b1011101,0b1011011,0b0111010,0b1101011,0b1101111,0b1010010,0b1111111,0b1111011};//二进制
int a[MAXN];
bool dp[MAXN][MAXN];
int b[MAXN];
int main(){
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>s;
        for(int j=0;j<7;j++){
            a[i]=(a[i]<<1)+(s[j]-‘0‘);
        }
    }
    dp[n+1][0]=true;
    for(int i=n;i>=1;i--){
        for(int j=0;j<10;j++){
            if((num[j]&a[i])==a[i]){
                int t=0;
                for(int l=0;l<7;l++){
                    if(!((a[i]>>l)&1)&&((num[j]>>l)&1))t++;//组成数字j还需要多少木棒
                }
                //cout<<t<<endl;
                for(int r=t;r<=k;r++){
                    dp[i][r]=dp[i][r]|dp[i+1][r-t];//若第i+1位的r-t可行,则第i位的r一定可行
                }
            }
        }
    }
    if(!dp[1][k])cout<<"-1"<<endl;
    else{
        for(int i=1;i<=n;i++){//从高位往后推
            for(int j=9;j>=0;j--){
                if((num[j]&a[i])==a[i]){
                    int t=0;
                    for(int l=0;l<7;l++){
                        if(!((a[i]>>l)&1)&&((num[j]>>l)&1))t++;
                    }
                    if(k>=t&&dp[i+1][k-t]){
                        cout<<j;
                        k-=t;
                        break;
                    }
                }
            }
        }
    }
 
 
    return 0;
}

E. Nastya and Unexpected Guest

待补

Codeforces Round #637 (Div. 2)

标签:range   ORC   ace   数字串   memset   i+1   http   test   sizeof   

原文地址:https://www.cnblogs.com/qq103013999/p/12829597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!