#24321: 奇怪的RE求解


ttttestttt (unknown)

學校 : 不指定學校
編號 : 142418
來源 : [140.116.130.164]
最後登入時間 :
2023-12-09 21:28:57
d750. 11321 - Sort! Sort!! and Sort!!! -- UVa11321 | From: [42.74.175.169] | 發表日期 : 2021-02-06 17:25

弱弱的問個問題,在寫這題吃了好多RE(記憶體區段錯誤),經不斷作死塞爆ZJ的流量測試出原因出在自寫的compare函式:

bool cmp(int p1,int p2)
{
    if((p1%m)!=(p2%m))
    {
        return p1%m<p2%m;
    }
    else if((p1%2==1)&&(p2%2==1))//若此判斷這樣寫RE,改為else if((p1%2)&&(p2%2))則AC
    {
        return p1>p2;
    }
    else if((p1%2==0)&&(p2%2==0))
    {
        return p1<p2;
    }
    else
    {
        return p1%2;
    }
}

實在不明白這樣改有甚麼差別導致RE,懇請大神求解~
 
#24324: Re:奇怪的RE求解


fire5386 (becaidorz)

學校 : 國立清華大學
編號 : 115822
來源 : [59.115.180.44]
最後登入時間 :
2024-05-03 16:46:17
d750. 11321 - Sort! Sort!! and Sort!!! -- UVa11321 | From: [61.230.25.215] | 發表日期 : 2021-02-06 17:38

弱弱的問個問題,在寫這題吃了好多RE(記憶體區段錯誤),經不斷作死塞爆ZJ的流量測試出原因出在自寫的compare函式:

bool cmp(int p1,int p2)
{
    if((p1%m)!=(p2%m))
    {
        return p1%m<p2%m;
    }
    else if((p1%2==1)&&(p2%2==1))//若此判斷這樣寫RE,改為else if((p1%2)&&(p2%2))則AC
    {
        return p1>p2;
    }
    else if((p1%2==0)&&(p2%2==0))
    {
        return p1<p2;
    }
    else
    {
        return p1%2;
    }
}

實在不明白這樣改有甚麼差別導致RE,懇請大神求解~


如果要判斷數字為奇數還是偶數,建議用(n & 1),位元運算比%/運算快非常多

(n & 1)範例:

n = 5 = (101)2,1 = (001)2

讓(101)和(001)去做&運算會得到(001)2

意思是20那項的係數為1,所以n就是奇數。反之,如果20項的係數為0,則n就是偶數

 
ZeroJudge Forum