| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
大神们!!,为什么用C++流会超时,而用scanf则不会呢#include <iostream> #include <stdio.h> using namespace std; #define MIN -0xfffffff int Data[50001];//元数据 int x[50001];//从前往后经过每一点的最大sum值 int main() { //输入case次数 int time = 0; scanf("%d", &time); //cin>>time; int num = 0; //初始化数组 while (time--) { //输入元数据个数 //cin>>num; scanf("%d", &num); int sum = 0; int temp = MIN; int out = MIN; //输入元数据并求 从前往后数,到达每一点 并包括该点 的子片段的最大和 for (int i=1; i<=num; i++) { //cin>>Data[i]; scanf("%d", &Data[i]); sum += Data[i]; if (sum > temp) temp = sum; x[i] = temp; if (sum < 0)//这一步的判断使得之前超时的部分得以简化,减少了一轮for sum = 0; } temp = MIN; sum = 0; //从后往前数,到达每一点 并包括该点 的子片段的最大和 for (int j=num; j>=2; j--) { sum += Data[j]; if (sum > temp) temp = sum; if (x[j - 1] + temp > out) { out = x[j - 1] + temp; } if (sum < 0) sum = 0; } printf("%d\n", out); //cout<<out<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator