Topcoder SRM 697题解
生活随笔
收集整理的這篇文章主要介紹了
Topcoder SRM 697题解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Topcoder SRM 697題解
D1L1
- 分子分母同乘a[i]:
\(a_{i}^{b_{i}+1} mod \prod a_i = 0\) - 然后我們考慮質(zhì)因子p,設質(zhì)因子p在a[i]中出現(xiàn)cnt[i]次
- 所以對于每個i都滿足:`\(\sum (b_i+1)cnt_i >= \sum cnt_i\)
- \(\sum \frac{1}{b_i+1} > 1\)有解
- \(\sum \frac{1}{b_i+1} = 1\)時,b[i]滿足兩兩不等有解。
D1L2
做法
- 一個有趣的算貢獻問題
首先答案可以這么算
我們來采訪第miao號選手,答案可以這么算
int ans=0; for i=0 to 1<<m-1:for x=0 to n:for y=0 to n:if a[x]^i < a[miao]^i && a[y]^i < a[miao]^yans++當然,也可以這么算
int ans=0;for x=0 to n:for y=0 to n:for i=0 to 1<<m-1:if a[x]^i < a[miao]^i && a[y]^i < a[miao]^yans++超進化!
int ans=0;for x=0 to n:for y=0 to n:ans += 有多少個i符合要求呢?- 注意到a^x與b^x大小關系,由x在a,b在二進制下,不相等的最高位上,是0,還是1來決定。
Trie樹!決定就是你了
#include <iostream> using namespace std; typedef long long LL; const int N = 200000+10; const int MOD = 1000000007; int n, m; int a[N]; int ch[N*32][2],sum[N*32],size;void insert(int s) {int now=0;for(int i=m-1;i>=0;i--) {int bit=(s>>i)&1;if (!ch[now][bit]) {ch[now][bit] = ++size;}now = ch[now][bit];sum[now] ++;} }LL cnt[30]; LL cac(int s) {int now=0;for(int i=m-1;i>=0;i--) {int bit=(s>>i)&1;cnt[i]=sum[ch[now][bit^1]];now = ch[now][bit];}LL ans=0;ans = (LL)(n-1)*(n-1)%MOD*(1LL<<(m-2))%MOD;for (int i=0;i<m;i++) {ans = ans + (LL)cnt[i]*cnt[i]%MOD*(1LL<<(m-2))%MOD;ans %= MOD;}return ans; }struct XorOrderDiv1 {int get(int mm,int nn,int a0,int b) {n = nn, m = mm;for(int i=0;i<nn;i++) {a[i]=(1LL*a0+1LL*i*b)%(1LL<<mm);insert(a[i]);}LL ans = 0;for(int i=0;i<n;i++) {ans ^= cac(a[i]);}return ans;} } T; int main() {int m,n,a,b;cin>>m>>n>>a>>b;cout<<T.get(m,n,a,b)<<endl; }轉(zhuǎn)載于:https://www.cnblogs.com/RUSH-D-CAT/p/9134921.html
總結(jié)
以上是生活随笔為你收集整理的Topcoder SRM 697题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 禁止解析PHP、限制user_agent
- 下一篇: EventBus的简单使用