zoukankan      html  css  js  c++  java
  • 1333B.Kind Anton(前缀和)

    题意:

    鲍里斯再一次需要安东的帮助来完成一项任务。这次Anton需要解决以下问题:

    有两个长度为n的整数数组a和b。结果发现,数组a只包含集合{−1,0,1}中的元素。

    Anton可以执行以下操作序列任意次数:

    选择任意一对索引(i,j),使1≤i可以多次选择同一对(i,j)。

    把ai加到aj。换句话说,数组的第j个元素等于ai+aj。

    例如,如果给你一个数组[1,−1,0],你只能通过一个操作把它变换成[1,−1,−1],[1,0,0]和[1,−1,1]。

    Anton想要预测是否有可能将这些操作中的某个数(0或多个)应用到数组a上,从而使它等于数组b。您能帮助他吗?

    输入

    每个测试包含多个测试用例。

    第一行包含测试用例t的数量(1≤t≤10000)。测试用例的描述如下。

    每个测试用例的第一行包含一个整数n(1≤n≤105)——数组的长度。

    每个测试用例的第二行包含n个整数a1,a2,…,an(−1≤ai≤1)——数组a的元素。元素之间可以有重复项。

    每个测试用例的第三行包含n个整数b1,b2,…,bn(−109≤bi≤109)——数组b的元素。元素之间可以有重复项。

    它保证所有测试用例的n的总和不超过105。

    输出

    对于每个测试用例,如果可以通过执行所描述的操作使数组a和b相等,则输出一行“YES”,如果不可能,则输出“NO”。

    您可以打印每个字母在任何情况下(上或下)。

    题解:

    维护a数组的状态,如果b比a大且前面没有1,则NO

    如果b比a小且前面没有-1,则NO

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+100;
    int T;
    int N;
    int a[maxn];
    int b[maxn];
    int c1,cz;
    map<int,int> pos;
    int main () {
        scanf("%d",&T);
        while (T--) {
            scanf("%d",&N);
            for (int i=1;i<=N;i++) scanf("%d",&a[i]);
            for (int i=1;i<=N;i++) scanf("%d",&b[i]);
            c1=0,cz=0;
            int f=1;
            for (int i=1;i<=N;i++) {
                //printf("%d %d
    ",c1,cz);
                if (b[i]-a[i]>0) {
                    if (c1==0) {
                        f=0;
                        break;
                    }  
                } 
                else if (b[i]-a[i]<0){
                    if (cz==0) {
                        f=0;
                        break;
                    }
                }
                if (a[i]==1)
                    c1++;
                if (a[i]==-1)
                    cz++;
                //printf("%d %d
    ",c1,cz);
            }
            if (f==1)
                printf("YES
    ");
            else 
                printf("NO
    ");
        }
    }
  • 相关阅读:
    C#/Net代码精简优化技巧(二)【转】
    IsSpecialName特性及其他问题【转】
    &、|与&&、||的比较
    序列化后存储Cookie
    序列化反序列化操作
    C#/Net代码精简优化技巧(一)【转】
    .Net 中的序列化与反序列化【转】
    c#对象序列化(二进制序列化)BinaryFormatter【转】
    POJ 2828 Buy Tickets(单点更新) 详细题解和思路
    Color the ball HDU 1556 (非线段树做法)
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12687307.html
Copyright © 2011-2022 走看看