Codeforces_733_C

Posted 冷暖知不知

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces_733_C相关的知识,希望对你有一定的参考价值。

http://codeforces.com/problemset/problem/733/C

 

从后往前一个个b对应一组组a。

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;

int n,k,a[505],b[505],ans[505];
char c[505];

int main()
{
    int sum1 = 0,sum2 = 0,cnt = 0;
    scanf("%d",&n);
    for(int i = 1;i <= n;i++)
    {
        scanf("%d",&a[i]);
        sum1 += a[i];
    }
    scanf("%d",&k);
    for(int i = 1;i <= k;i++)
    {
        scanf("%d",&b[i]);
        sum2 += b[i];
    }
    if(sum1 != sum2)
    {
        printf("NO\n");
        return 0;
    }
    int r = n,l = r;
    for(int i = k;i >= 1;i--)
    {
        for(;l >= 1;l--)
        {
            if(b[i] > a[l])    b[i] -= a[l];
            else if(b[i] < a[l])
            {
                printf("NO\n");
                return 0;
            }
            else
            {
                if(l != r)
                {
                    int maxx = a[r],t,flag = 1;
                    for(int j = r;j >= l;j--)
                    {
                        if(maxx != a[j])    flag = 0;
                        maxx = max(maxx,a[j]);
                    }
                    if(flag)
                    {
                        printf("NO\n");
                        return 0;
                    }
                    for(int j = r;j >= l;j--)
                    {
                        if(maxx != a[j])    continue;
                        if(j == r && a[r-1] != maxx)
                        {
                            flag = 1;
                            for(int h = r;h > l;h--)
                            {
                                cnt++;
                                ans[cnt] = h;
                                c[cnt] = L;
                            }
                            break;
                        }
                        else if(j == l && a[l+1] != maxx)
                        {
                            flag = 1;
                            for(int h = l;h < r;r--)
                            {
                                cnt++;
                                ans[cnt] = h;
                                c[cnt] = R;
                            }
                            break;
                        }
                        else if(j != r && a[j+1] != maxx)
                        {
                            flag = 1;
                            int h;
                            for(h = j;h < r;r--)
                            {
                                cnt++;
                                ans[cnt] = h;
                                c[cnt] = R;
                            }
                            for(;h > l;h--)
                            {
                                cnt++;
                                ans[cnt] = h;
                                c[cnt] = L;
                            }
                            break;
                        }
                        else if(j != l && a[j-1] != maxx)
                        {
                            flag = 1;
                            int h;
                            for(h = j;h > l;h--,r--)
                            {
                                cnt++;
                                ans[cnt] = h;
                                c[cnt] = L;
                            }
                            for(;h < r;r--)
                            {
                                cnt++;
                                ans[cnt] = h;
                                c[cnt] = R;
                            }
                            break;
                        }
                    }
                    if(!flag)
                    {
                        printf("NO\n");
                        return 0;
                    }
                }
                l--;
                r = l;
                break;
            }
        }
    }
    printf("YES\n");
    for(int i = 1;i <= cnt;i++) printf("%d %c\n",ans[i],c[i]);
    return 0;
}

 

以上是关于Codeforces_733_C的主要内容,如果未能解决你的问题,请参考以下文章

codeforces 733D

Codeforces Round #733 (Div. 1 + Div. 2) C. Pursuit

Codeforces Round #733 (Div. 1 + Div. 2) C. Pursuit

codeforces733D. Kostya the Sculptor 偏序cmp排序,数据结构hash,代码简化

codeforces 733CEpidemic in Monstropolis

codeforces 733DKostya the Sculptor(贪心)