zoukankan      html  css  js  c++  java
  • CodeForces 21C Stripe 2 构造题

    题目链接:

    题目链接:点击打开链接


    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <iostream>
    #include <map>
    #include <set>
    #include <math.h>
    using namespace std;
    #define inf 10000000
    #define N 100050
    #define ll __int64
    ll n;
    ll a[N], lsum[N], rsum[N];
    ll lok[N], rok[N];
    int main(){
    	ll i, j;
    	while(cin>>n) {
    		ll sum = 0;
    		bool siz = false;
    		for(i=1;i<=n;i++)cin>>a[i], sum += a[i], siz |= a[i];
    		if(!siz) {
    			cout<<(n-1)*(n-2)/2<<endl;
    			continue;
    		}
    		if(sum%3){puts("0");continue;}
    		sum/=3;
    		lsum[0] = 0;
    		for(i=1;i<=n;i++)lsum[i] = lsum[i-1]+a[i];
    		rsum[n+1] = 0;
    		for(i=n;i;i--)rsum[i] = rsum[i+1]+a[i];
    		memset(lok, 0, sizeof lok);
    		memset(rok, 0, sizeof rok);
    		for(i=1;i<=n;i++) {
    			if(lsum[i]==sum){
    				lok[i] = 1;
    			}
    	//		if(i==n)lok[i]=0;
    	//		lok[i] += lok[i-1];
    		}
    		
    		for(i=n;i;i--) {
    			if(rsum[i]==sum){
    				rok[i] = 1;
    			}
    			rok[i]+=rok[i+1];
    		}
    		ll ans = 0;
    		for(i = 1; i+2<=n; i++)
    			ans += lok[i] * rok[i+2];
    	//	ll ans = (lok[n]*(lok[n]-1))/2;
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    /*
    7
    -1 1 -1 1 -1 1 0
    9
    -5 -2 1 1 5 0 -4 4 0
    100
    3 0 -5 2 -3 -1 -1 0 -2 -5 -4 2 1 2 -2 -1 -1 -4 3 -1 -3 -1 5 0 -4 -4 -1 0 -2 -2 0 1 -1 -2 -1 -5 -4 -2 3 1 -3 0 -1 1 0 -1 2 0 -2 -1 -3 1 -2 2 3 2 -3 -5 2 2 -2 -2 1 2 -2 -1 3 0 -4 7 -2 2 1 4 -9 -1 -2 -1 0 -1 0 -2 -2 -1 1 1 -4 2 -3 -3 7 1 1 -3 -7 0 -2 0 5 -2
    
    */


  • 相关阅读:
    memcached 在windows下安装及启动
    细说 ASP.NET Cache 及其高级用法
    asp.net MVC helper 和自定义函数@functions小结
    log4net 总结
    紧跟时代步伐,让我们拥抱MVC 3
    关于node-sass安装失败的解决办法
    table自适应
    获取select选中的值
    省市三级联动
    git bush 代码提交
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5180552.html
Copyright © 2011-2022 走看看