題目描述
nirobc 姐姐腦洞了兩個數字 和 ,它們滿足 ,且 , nirobc 姐姐想知道 有多少種不同的取值,若有多組 的 值相同,則只算一次。
(其中 表示按位取或,c/c++
中寫作|
,pascal
中寫作or
)
(其中 表示按位取與,c/c++
中寫作&
,pascal
中寫作and
)
輸入格式
一行,五個非負整數 。
輸出格式
一行,乙個整數,答案。
樣例樣例輸入
11 3 10 8 13
樣例輸出7
資料範圍與提示
對於所有資料,\(t,l_x,r_x,l_y,r_y<2^\)
\(t,l_x,r_x,l_y,r_y<2^\)
列舉統計答案即可
namespace pt1
}
\(l_x=l_y=0\)
考慮簡單數字\(dp\)
\(dp[i][lim1][lim2]\)表示\(\text\)到了第\(i\)位,\(lim1,lim2\)表示是否受到仍\(r_x,r_y\)的限制
列舉兩個數這一位分別選擇\(0,1\),是否與\(t\)的這一位相同
但是存在一種會算重複的情況
當兩個數均可以取\(0,1\),且\(t_i=1\)的情況,則存在\((0,1),(1,0)\)兩種方案且他們的與相同
如何處理重複?我們分類討論一下(看不下去可以直接看結論)
1.\(lim1=1,lim2=1\)
這時候,把\(r_x,r_y\)中剩下的位數較大的那乙個選為1,另乙個選為0,這樣選擇一定包含反過來的情況,因為限制減輕了
2.\(lim1=1,lim2=0\)
當然是取(0,1),理由相同
3.\(lim1=0,lim2=1\)
當然是取(1,0),理由相同
4.\(lim1=0,lim2=0\)
那麼可以隨便取其中一者
namespace pt2
ll calc(ll n,ll m)
void solve()
}
\[\
\]\[\
\]設兩個數分別取\(x,y\),且\(x\and y=i\),列舉\(i\),然後再列舉\(x\),就能得到計算得出\(y\),檢查每乙個\(i\)是否存在方案
複雜度為\(o(3^)\)
namespace pt3
if(!j) break;
}ans+=fl;
if(!i) break;
} printf("%d\n",ans);
}}
\[\
\]同\(subtask2\)一樣,都可以通過列舉發現同樣的結論,所以只需要給\(\text\)狀態加上兩維即可ac
(事實是不會證明,但是對拍了20000組隨機資料,跑過了<64的所有資料,應該沒有問題)
namespace pt4
return dp[p][lim1][lim2][lim3][lim4]=res;
} ll calc()
void solve()
}
前面的轉移中總是會出現重複,這裡我們通過改變dp狀態來防止這種重複
每次把可能重複的轉移全部存下來
即如果存在兩個轉移方案\(x \and y\)相同,我們就把轉移他們得到的下一步狀態壓進去,得到乙個新的dp
\(dp[i][s]\)表示可能出現的\((lim1,lim2,lim3,lim4)\)組的集合為\(s\)
每次把相同的\(x\and y\)壓進同乙個狀態裡,就防止了重複
ll t,l1,r1,l2,r2;
ll dp[61][1<<16];
int get(int a,int b,int c,int d) // 為四個lim1的情況編號
int main();
rep(a,0,1) rep(b,0,1) rep(c,0,1) rep(d,0,1) if(s&(1<}
rep(j,0,1) if(g[j]) dp[i][g[j]]+=dp[i+1][s];
} }ll ans=0;
rep(i,0,(1<<16)-1) ans+=dp[0][i];
printf("%lld\n",ans);
}
loj6274 數字 題解
ppt 首先考慮樸素做法。我們列舉 v 檢查是否能存在 x 和 y 滿足 x land y v 設dp狀態 f i,0 1,0 1,0 1,0 1 表示當前考慮了前 i 位,是否存在一組 x 和 y 滿足 x land y v x lor y t lx leq x leq rx ly leq y l...
吉利數字 數字dp
中國人喜歡數字6和8。特別地,一些人喜歡滿足含有特定個數6和8的數。現在請求出,在區間 l,r 之間的第k大的含有x個6和y個8的數。輸入的第一行包括4個數字,l,r,x,y。接下來的一行給出該組資料的詢問數q。接下來q行中,每行有乙個整數k。對於某個詢問,輸出一行,為對應的第k大的數。如果不存在這...
ZJOI模擬 數字 數字dp
題目描述 已知t lx,rx,l y,ry t l x,rx ly,ry 問在滿足lx x r x,ly y r y,xo ry t l x x rx ly y ry xor y t的情況下,w xand y w x andy 有多少種取值。解題思路 數字 dp 會變得比較方便。考慮乙個數 w,我們...