新人求助,降雨量那题,本机AC提交RE。。

回复帖子

@lin_toto  葉月ゆら 2017-05-11 17:25 回复

RUN ID343625

以下是我的代码:

#include<iostream>
using namespace std;
int y[50],r[50];
int TF(int a,int b)
{
int c;
if(r[a]>r[b])    return 0;
for(c=b+1;c<a;c++)
{
if(r[c]>=r[a])    return 0;
}
return 1;
}
int maybe(int a ,int b)
{
int c,d=0;
for(c=b;c<a;c++)
{
if(y[c]+1<y[c+1])    {    return 2;    }
}
return 1;
}
int main()
{
int X,Y,m,n,a,b,i,j,k,l;
cin>>n;
for(i=0;i<n;i++)
cin>>y[i]>>r[i];
cin>>m;
for(i=0;i<m;i++)
{
cin>>Y>>X;
for(j=0;j<n;j++)
{
if(X==y[j])    a=j;
if(Y==y[j])    b=j;
}
l=0;
k=TF(a,b);
if(k==0)    {    cout<<"false"<<endl;    continue;    }
l=maybe(a,b);
if(l==2)    {    cout<<"maybe"<<endl;    continue;    }
if(l==1)    {    cout<<"true"<<endl;    continue;    }
}
return 0;
}
@lin_toto  葉月ゆら 2017-05-11 17:27 回复 举报

@applese

@Seter 抱歉发上来才发现木有缩进。。。本机我确实是运行通过答案对的啊。。。有问题烦请明示。。。

我的思路是将X,Y的具体年份数值转换为下标a,b,先假设年份没有空缺,用TF函数判定是否直接为F,没有的话再用maybe函数判定年份是否连续,不连续的话判为maybe连续判T;他给的样例输入我本机输出答案是对的,VS2010编译器。。。

当然你要吐槽我是“C风格的C++”。。。这。。。

@Sonorous 2017-05-11 17:27 回复 举报

原来你的逻辑是样例过了就是A了啊。。。自己看看原题数据范围。。。再不懂就别做了吧 = =+

@Sonorous 2017-05-11 17:27 回复 举报

最后吐槽一句。。puts("2\n0\n2\n1\n3"),他给的样例输入我本机输出答案是对的啊。。。为什么交上来WA了呢。。

@lin_toto  葉月ゆら 2017-05-11 17:28 回复 举报

@applese

数据范围的话数组大小我试过用50000,变量我能想到的只有long int也不行所以上面程序才用的int和y[50];

我整个程序虽然现在无法AC但逻辑并没有错,我诚心诚意地发问了,你不说也就算了,用个puts吐槽我又是要作甚?

@deluxurous 2017-05-11 17:28 回复 举报

LS 鄙视applese神犇掉rp……

建议去学splay或线段树再来捉此题~

@lin_toto  葉月ゆら 2017-05-11 17:29 回复 举报

@Antonio

不是我BS,他说的那种puts那叫性质恶劣,你可以指责我的代码,但你不能嘲讽我的诚心。。。

至于你说线段树。。。实话说,我没学过;但是就这题,我给出的这个答案而言,我并没有用到线段树的知识;如果我这个程序在逻辑上有考虑不周或者错误的地方,烦请指出,感激不尽;

我在这里发帖,只是想请教下我错在哪里导致无法AC而已。。。

@Sonorous 2017-05-11 17:29 回复 举报

明明是你在敷衍我们好不好。。你不把你改到认为没有问题的代码发上来,倒是发个数组大小只有50的,那我一眼看去觉得这种错误都检查不出来简直就是在玩我们这些可能会帮你改的人,换了别人都懒得理你。。再者标题说“本机AC”,本机AC啊,计算不是下载了数据并且全部通过好歹也是和标准程序对拍过的程序吧,你仅仅通过样例就这么说更让我不爽了。

不过既然我都入坑了,就给你组数据吧,你自己看看哪里错了

1 2000 2000

1 1999 2001

输出应该是maybe,你RE了。

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。