【发布时间】:2016-02-15 18:39:28
【问题描述】:
http://codeforces.com/problemset/problem/13/C 我遇到了上述问题。任何人都可以清楚地解释解决方案。我的代码对我来说似乎还不错,但是它没有通过测试用例 8。
lli n;
cin>>n;
lli arr[size];
fi(i,n)
cin>>arr[i];
if(n==1)
cout<<"0"<<endl;
else
{
lli sum=0;
for(lli i=n-1; i>0; i--)
{
if(arr[i]<arr[i-1])
{
lli k=abs(arr[i]-arr[i-1]);
if(i==(n-1))
{
arr[i]+=k;
sum+=k;
}
else
{
if((arr[i]+k)<=arr[i+1])
arr[i]+=k, sum+=k;
else
arr[i-1]-=k, sum+=k;
}
}
}
cout<<sum<<endl;
}
【问题讨论】:
-
什么是测试用例 8?
-
5000 960440941 -427665346 366632330 -922577959 -708929687 592187815 -119993724 -818916365 -808029838 306092723 916069264 -21931800 609160933 -699461833 -978359151 629415472 -354990986 -965311699 -137369406 -583707511 -948526279 867343453 -421546982 -2873...codeforces.com/problemset/status/13/problem/C -
lli类型的最大值是多少?是32位还是64位?
-
我将 lli 输入到
long long int并运行了你的程序。在我的 ubuntu 机器中 long long int 是 64 位。所以,我得到了 18203564911 的正确答案。我还在每次迭代时打印了 sum 和 k 的值,并且它匹配。如果您为 lli 使用了正确的类型(即它不应该溢出),我看不出您的代码有任何问题。 -
正确答案是 2527130128540。请参阅评论中提供的链接。我也得到了相同的输出。我想不出任何问题..
标签: c++ sorting dynamic-programming