牛客網暑期ACM多校訓練營(第九場)

2022-08-01 17:27:09 字數 1182 閱讀 2385

做法:看到下標 \(xor\) 這種情況就想 \(fwt\),可是半天沒思路,於是放棄了。。其實這個 \(n\) 瘋狂暗示啊。設未知數向量為 \(x\),列一下方程組就可以發現有: $$b[k] = \sum_ a[i]·x[j]$$ 做法就顯然了吧,把\(a\)和\(b\)分別\(fwt\),對應相除然後反變換即可。表示前天才學的\(fwt\),就不會使了。。

#include #define rep(i,a,b) for(int i=a;i<=b;++i)

typedef long long ll;

const int mod = 1e9+7;

const int n = 262144+10;

using namespace std;

inline int add(int x,int y)

inline int sub(int x,int y)

int n;

ll a[n],b[n],inv2;

ll q_pow(ll a,ll b)

return ans;

}void fwt_xor(ll a,int n,int on) ^ip[i] + (i-1)^m·\prod_^ip[i]·(1-p[1]) + \sum_^i ((i-j+1)^m + dp[j-2])·\prod_^i p[k]·(1-p[j-1])$$要注意區間的概率需要判$0$,在這卡了好久。

```c++

#include #define rep(i,a,b) for(ll i=a;i<=b;++i)

typedef long long ll;

const ll mod = 1e9 + 7;

const int n = 1100;

using namespace std;

ll q_pow(ll a,ll b)

return ans;

}ll inv(ll x)

ll n,m,p[n],inv1,dp[n],pp[n],s0[n];

ll p(int l,int r)

int main()

dp[1] = p[1];

rep(i,2,n)

}dp[i] %= mod;

}dp[n]%=mod;

printf("%lld\n",(dp[n]+mod)%mod);

return 0;

}```\]

2020牛客暑期多校訓練營(第九場)

總結 這一場過了a題,之前用c 各種寫,但是沒想到用 三行 就解決了問題,還是需要學習很多很多。fi 一級目錄 土撥鼠在第1個宿舍,橙子在第n個宿舍。這n個宿舍間有n 1條路並且長度都為1,土撥鼠從第1個房間去第n個宿舍,速度為1m s 橙子從第n個宿舍追趕土撥鼠,速度為2m s。二分時間 t 然後...

2019牛客暑期多校訓練營(第九場)

d knapsack cryptosystem 折半搜尋,晚上又去看了挑戰程式設計,對於時間複雜度高的情況,可以通過犧牲空間來降低時間複雜度。先把前半部分所有可以組合的情況列舉出來,然後對於後半部分依次列舉,那麼複雜度變化為o 2 36 o 2 18 2 18log 18 顯然就可做了,折半的裸題。...

2019牛客暑期多校訓練營(第九場)

給定 p 1000000007 有兩個數x,y,其中 x leqslant y leqslant p x y equiv b mod p x times y equiv c mod p 求 x,y的值 二次剩餘 1 二次剩餘參考資料1 2 二次剩餘參考資料2 知道 x y 和 x times y 那...