这是我对Spoj 11373. Coke madness的解决方案
#include <cstdio>
int main(){
int T; scanf("%d",&T);
for(int j = 1; j <= T; j++){
int n;
scanf("%d",&n);
long long sum = 0, small = 0;
int t;
for(int i = 0; i < n; i++) {
scanf("%d",&t);
sum += t;
if( sum < small) small = sum;
}
printf("Scenario #%d: %lld\n", j, -1*small+1);
}
}问题很简单。这个解决方案在Spoj上需要0.12秒,尽管有0.01秒的解决方案。我很好奇可以对这段代码做哪些优化来提高速度。我认为-1*small+1可能是通过逐位操作获得的,但没有找到方法。我也不能去掉long long,因为sum可能会超过int。
发布于 2013-02-02 23:26:01
你进行了太多的I/O调用。一次读取整个文件,然后解析它,然后创建输出,然后一次编写所有内容。
https://stackoverflow.com/questions/14663352
复制相似问题