精度问题

P1419 寻找段落

@[小可爱三岁七](/space/show?uid=62490) 这个1000主要是我用1e4就20,1e3就50qaq 改成1e5就10了QAQ
by Loi_Anina @ 2018-10-24 10:04:14


@[Dirt、](/space/show?uid=91889) 锐锐!!!!!!!!!!!!!!!!!!!!!!!!!!
by Candice_ @ 2018-10-24 10:11:21


@[Loi_Anina](/space/show?uid=69864) QAQAQAQAQAQAQ 我在想你为啥不用double 开eps
by 小可爱三岁七 @ 2018-10-24 10:19:33


@[小可爱三岁七](/space/show?uid=62490) 因为我()想用整数二分啊QAQ (其实是不会实数二分QAQ
by Loi_Anina @ 2018-10-24 10:22:25


@[Loi_Anina](/space/show?uid=69864) 其实我不会实数二分qwq
by 小可爱三岁七 @ 2018-10-24 10:27:09


可能是结构体出锅了Orz 单调队列实现改成普通数组就AC了,确实是要*1e4
by Loi_Anina @ 2018-10-24 11:10:27


错误代码 ```cpp struct number { int num,pos; }qvq[100010]; int check(int x) { memset(f,0,sizeof(f)); memset(qvq,0,sizeof(qvq)); for(int i=1;i<=n;i++) f[i]=f[i-1]+a[i]-x; int head=1,tail=0; for(int i=S;i<=n;i++) { while(qvq[tail].num>f[i-S]&&head<=tail) tail--; qvq[++tail].num=f[i-S],qvq[tail].pos=i-S; while(head<=tail&&qvq[head].pos<i-T) head++; if(head<=tail&&f[i]-qvq[head].num>=0) return 1; } return 0; } ``` 正确代码 ```cpp int qvq[100010]; int check(int x) { memset(f,0,sizeof(f)); memset(qvq,0,sizeof(qvq)); for(int i=1;i<=n;i++) f[i]=f[i-1]+a[i]-x; int head=1,tail=0; for(int i=S;i<=n;i++) { while(f[qvq[tail]]>f[i-S]&&head<=tail) tail--; qvq[++tail]=i-S; while(head<=tail&&qvq[head]<i-T) head++; if(head<=tail&&f[i]-f[qvq[head]]>=0) return 1; } return 0; } ``` 只有存单调队列的部分不同 所以请问是结构体有什么性质导致出错了么QAQ
by Loi_Anina @ 2018-10-24 11:20:26


上一页 |