triangle
来源:互联网 发布:淘宝王小说 编辑:程序博客网 时间:2024/04/30 00:47
水题加一,然后。。。。各种TLE,,,最后用了一种其丑无比的方法高空擦边而过。。。。
嗯。。。。说明有的时候剪枝还是挺有用的样纸。。。。
#include <stdio.h>#include <iostream>using namespace std;#define maxn 100010int a[maxn],sum[maxn];template<class T>inline char read(T &n){ T x = 0, tmp = 1; char c = getchar(); while((c < '0' | c > '9') && c != '-' && c != EOF) c = getchar(); if(c == '-') c = getchar(), tmp = -1; while(c >= '0' && c <= '9') x *= 10, x += (c - '0'),c = getchar(); n = x*tmp; return c;}int main(){ int n; while(scanf("%d",&n)!=EOF) { int i,j,k; for(i=0;i<n;i++) { // scanf("%d",&a[i]); read(a[i]); if(i==0) sum[i]=a[i]; else sum[i]=sum[i-1]+a[i]; } if(sum[n-1]%3) {printf("0\n");continue;} int len=sum[n-1]/3; int tmp=0,tmpp; int ans=0; j=k=0; int l,r; for(i=0;i<n;i++) { if(sum[i]>=len&&!j) {j=1;l=i;continue;} if(sum[i]>=2*len&&!k) {k=1;r=i;break;} } tmpp=r; for(i=l;i<=r;i++) { for(j=tmp;j<l;j++) { if(sum[i]-sum[j]==len) break; } if(sum[i]-sum[j]==len) { for(k=tmpp;k<n;k++) if(sum[k]-sum[i]==len) break; } if(sum[k]-sum[i]==len) {ans++;tmp=j;tmpp=k;} } printf("%d\n",ans); } return 0;}
0 0
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- Triangle
- 从webapp中获取spring的ApplicationContext
- UVA - 10487 Closest Sums
- Hadoop1.x伪分布安装
- poj 2404 floyd+状态压缩(中国邮递员问题)
- jquery 如何获取ISBN
- triangle
- C++之常量
- java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量
- 【code】java栈和队列实现
- deep learning 深度学习札记
- OpenCV相关资源ubuntu安装
- 测试
- 指针被delete之后应该赋值NULL
- 小白书55页水题的小技巧