Codeforces Global Round 1 暈闕記
阿新 • • 發佈:2019-02-20
create urn bit max script inf 最小 快速 round
Codeforces Global Round 1 暈闕記
我做這場比賽的時候暈得要死。做這三道題做太久了,rating漲不起來啊!
A
如果願意的話你可以看做是膜2意義下的運算,寫快速冪等各種膜運算。只不過對手速有考驗。
B
我題意差點理解不了了。這裏講一下題意:
給你\(m\)條棍子,編號從\(1\)到\(m\),有\(n\)個位置的棍子斷了。你有無限長的修改帶,求你用\(k\)次機會修補棍子,所用修改帶的最小長度。允許修補到沒斷的棍子,允許修改區間重疊。
比賽的時候硬死想不出來,其實挺sb的:
我們貪心地覆蓋前\(n-k\)短的區間,剩下的區間直接一個點覆蓋即可。
沒錯,就這麽sb且貪心。
我是想不出來。
C
題意當然是看不懂啦!我們打表看看有沒有規律。
打表出來的規律就是:如果數字滿足\(2^k-1\),那答案是個奇怪的沒有規律的答案,否則答案是比它大的第一個\(2^k-1\)。
這裏就有兩種做法:
- 腦子不會轉彎的做法:可以發現:答案都是當\(b\)取其中的某個因數時得到。所以我們碰到這些\(2^k-1\)的時候,分解因數,\(O(\log n)\)求解。
- 比較聰明的人才會的解法:可以發現:這些特殊的數字沒多少個啊!我們直接打表不就可以了嗎??!!
/************************************************************************* @Author: Garen @Created Time : Thu 07 Feb 2019 09:15:33 PM CST @File Name: A.cpp @Description: ************************************************************************/ #include<bits/stdc++.h> using std::cin; using std::cout; using std::endl; #define ll long long const ll INF = 0x3f3f3f3f3f3f3f3f; ll gcd(ll x, ll y) { return y == 0 ? x : gcd(y, x % y); } ll f(ll a) { ll res = -INF, idx = -1; for(ll b = 1; b < a; b++) { ll temp = gcd(a ^ b, a & b); //res = std::max(res, gcd(a ^ b, a & b)); if(temp > res) { res = temp; idx = b; } } cout << idx << endl; return res; } bool check(ll a) { ll i = 1; while(i <= a) { if(i == a) return true; i = (i << 1 | 1); } return false; } void baoli(ll a) { ll bound = sqrt(a); ll ans = -INF; for(ll i = 1; i <= bound; i++) { if(a % i == 0) { if(i != 1) ans = std::max(ans, gcd(a ^ i, a & i)); if(a / i != i) { ll j = a / i; if(j != a) ans = std::max(ans, gcd(a ^ j, a & j)); } } } if(ans == -INF) ans = 1; cout << ans << endl; } int main() { ll q; cin >> q; while(q--) { ll a; cin >> a; if(check(a)) { baoli(a); } else { ll i = 1; while(i <= a) i = (i << 1 | 1); cout << i << endl; } } /* for(ll a = 1; a <= 10000; a++) { cout << "f(" << a << ") = "; if(check(a)) { baoli(a); } else { ll i = 1; while(i <= a) i = (i << 1 | 1); cout << i << endl; } } */ return 0; }
E
這裏立一個flag。聽說不難的樣子。
Codeforces Global Round 1 暈闕記