Codeforces Round #390 (Div. 2) - A
题目链接:http://codeforces.com/contest/754/problem/A
题意:给定一个长度为n的序列,让你把这个序列分成几部分,保证分完后每一部分的和不为0.输出具体的划分。没有满足条件的划分输出NO
思路:可以发现最多分成2部分就可以满足条件。 所以枚举中间的划分点。如果划分点在最后说明不用划分就满足。如果找不到划分点就说明不存在满足条件的划分。
import java.io.PrintWriter; import java.util.Scanner; public class Main { public static final int MAXN=100+10; public static int num[]=new int [MAXN]; public static void main(String[] args) { Scanner cin = new Scanner(System.in); PrintWriter out = new PrintWriter(System.out); int n=cin.nextInt(); for(int i=1;i<=n;i++){ num[i]=cin.nextInt(); } int idx=0; for(int i=1;i<=n&&idx==0;i++){ int sumL=0,sumR=0; for(int L=1;L<=i;L++){ sumL+=num[L]; } for(int R=i+1;R<=n;R++){ sumR+=num[R]; } if(i==n){ idx=sumL!=0?i:0; }else{ idx=sumL!=0&&sumR!=0?i:0; } } if(idx==0){ out.println("NO"); }else{ out.println("YES"); if(idx==n){ out.println(1); out.printf("%d %d\n", 1,n); }else{ out.println(2); out.printf("%d %d\n", 1,idx); out.printf("%d %d\n", idx+1,n); } } cin.close(); out.flush(); } }