CodeForces 754A Lesha and array splitting

来源:互联网 发布:视频音频切割软件 编辑:程序博客网 时间:2024/05/16 10:14

题目链接:http://codeforces.com/contest/754/problem/A
题意:给你一个长度为n的数组,让你把他划分成若干个任意长度的子序列,但是这个子序列的和不能为0,若不能划分就输出NO,否则输出YES,并输出子序列的区间个数,和区间
解析:一个非零数组为一个区间肯定是最方便的,然后0就跟最近的非零数抱团,所以从前往后扫,last初始为1,遇到非零数就更新为last+1,并记录答案

#include <bits/stdc++.h>using namespace std;const int maxn = 105;struct node{    int l,r;    node() {}    node(int _l,int _r)    {        l = _l;        r = _r;    }};int main(void){    int n;    scanf("%d",&n);    int last = 1;    vector<node>ans;    for(int i=1;i<=n;i++)    {        int x;        scanf("%d",&x);        if(x)        {            ans.push_back(node(last,i));            last = i+1;        }    }    if(ans.size())    {        puts("YES");        printf("%d\n",ans.size());        for(unsigned i=0;i<ans.size()-1;i++)            printf("%d %d\n",ans[i].l,ans[i].r);        printf("%d %d\n",ans[ans.size()-1].l,n);    }    else        puts("NO");    return 0;}
0 0
原创粉丝点击