2020牛客寒假演算法基礎集訓營3 E 牛牛的隨機數

2022-03-01 18:02:16 字數 666 閱讀 1867

用異或總和除以方案數

考慮每乙個二進位制位對異或總和的貢獻

列舉每乙個二進位制位

若區間1中這個二進位制位是1的數有a1個,是0的數有a0個

區間2中這個二進位制位是1的數有b1個,是0的數有b0個

那麼這個二進位制位的貢獻是(a1*b0+a0*b1)* 2^i

如果得到a1,a0,b1,b0呢

可以數字dp

但我用的另外一種方法

假設現在要計算<=n的數中有多少個第i位是1的數

將1—n,每2^i個數劃分一段

那麼奇數段只有最後1個數是第i位是1

偶數段除了最後1個數第i位都是1

#includeusing

namespace

std;

const

int mod=1e9+7

;long

long bit[60

];long

long

get(long

long n,int

d)int pow(int a,int

b)int

main()

ans=ans*inv%mod;

printf(

"%lld\n

",ans);

}return0;

}

2020牛客寒假演算法基礎集訓營

長期更新,補完為止 2 g 判正誤 題意 t組資料。判斷a d b e c f是否等於g。1e9 a,b,c,g 1e9,0 d,e,f 1e9。保證不會出現指數和底數同為 0 的情況。思路 硬算會tle或mle。快速冪取模,為了增加過題概率,多取幾個模數判斷。includeusing namesp...

2020牛客寒假演算法基礎集訓營1

找規律,推公式 三角形個數為2 m n m n m 1 n 1 2 m n mn m 1 n 1 2 m n mn m 1 n 1 include include include include using namespace std typedef long long ll const int m...

2020牛客寒假演算法基礎集訓營1

h題 突然發現h題可以用好多種方法做的。方法一 雙指標,維護乙個修改次數小於等於k的區間 include using namespace std typedef long long ll const int mod 1e9 7 const int n 1e5 5 const int inf 0x3f...