首页 > 其他 > 详细

Codeforces Round #660 (Div. 2)

时间:2020-08-06 23:24:45      阅读:95      评论:0      收藏:0      [点我收藏+]

Captain Flint and Crew Recruitment

#include<bits/stdc++.h>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
const int N=2e5+2;
typedef long long ll;
const ll inf=1e18;
int tpflag;
int n,k;
int tp[N];
char a[N],b[N];
queue<int>q;
vector<int>son[N];
int ans;
int main()
{
    int t;cin>>t;
    while(t--)
    {
        int n;cin>>n;
        if(n<=30) printf("NO\n");
        else
        {
            int b=n-30;
            if(b!=14&&b!=10&&b!=6)
            {
                printf("YES\n");
                   printf("14 10 6 %d\n",b);
            }
 
            else
            { printf("YES\n");
                printf("15 10 6 %d\n",b-1);
            }
        }
    }
}

 

Captain Flint and a Long Voyage

 

#include<bits/stdc++.h>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
const int N=2e5+2;
typedef long long ll;
const ll inf=1e18;
int tpflag;
int n,k;
int tp[N];
char a[N],b[N];
queue<int>q;
vector<int>son[N];
int ans;
int main()
{
    int t;cin>>t;
    while(t--)
    {
        int n;cin>>n;
        if(n<=4)
        {
         for(int i=0;i<n-1;i++)
                printf("9");
         printf("8");
        }
        else
        {
            int b=n/4;
            if(n%4==0) b=b-1;
            for(int i=0;i<n-b-1;i++)
                printf("9");
            for(int i=0;i<b+1;i++)
                printf("8");
        }
        printf("\n");
    }
}

 

Uncle Bogdan and Country Happines

建树,双向边

dfs

判断条件搞清楚

#include<bits/stdc++.h>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
const int N=2e5+2;
typedef long long ll;
const ll inf=1e18;
int dp[N][5];
int p[N],h[N];
queue<int>q;
vector<int>s[N];
int f=1;
void dfs(int son,int ba)
{
 
 
    if(s[son].size()==1&&son!=1)
    {
 
        if(p[son]<abs(h[son])) {f=0;}
        if((p[son]+h[son])%2==1) {f=0;}
        dp[son][1]=(p[son]+h[son])/2;
        dp[son][2]=p[son]-dp[son][1];
        return;
    }
    for(int i=0;i<s[son].size();i++)
    {
        if(s[son][i]==ba) continue;
        dfs(s[son][i],son);
 
        dp[son][1]+=dp[s[son][i]][1];
        dp[son][2]+=dp[s[son][i]][2];
    }
    int sum=dp[son][1]+dp[son][2]+p[son];
        int x=(sum+h[son])/2;
        dp[son][2]=sum-x;
        if(sum<abs(h[son])) {f=0;}
        if((sum+h[son])%2==1) f=0;
        if(x<dp[son][1]) f=0;
        dp[son][1]=x;
}
int main()
{
   int t;cin>>t;
   while(t--)
   {
       f=1;
       int n,m;
       cin>>n>>m;
       for(int i=1;i<=n;i++) {dp[i][1]=dp[i][2]=0;scanf("%lld",&p[i]);}
       for(int i=1;i<=n;i++) scanf("%lld",&h[i]);
       for(int i=1;i<=n-1;i++)
       {
           int a,b;cin>>a>>b;
           s[a].push_back(b);
           s[b].push_back(a);
       }
       dfs(1,0);
       if(f) printf("YES\n");
       else printf("NO\n");
       for(int i=1;i<=n;i++)
       {
           dp[i][1]=dp[i][2]=0;
           s[i].clear();
       }
 
   }
}

 

Codeforces Round #660 (Div. 2)

原文:https://www.cnblogs.com/hahaee/p/13449344.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!