洛谷11月月賽題解(A-C)
心路歷程
辣雞T3卡我1.5h題意,要不是最後nlh跟我解釋了一下大樣例估計這次是真涼透了。。
A P4994 終於結束的起點
打出暴力來發現跑的過最大資料??
保險起見還是去oeis了一波,然後被告知第一個滿足條件的位置不會超過\(2n +2\)
贏了
#include<bits/stdc++.h> #define Pair pair<int, int> #define MP make_pair #define fi first #define se second using namespace std; const int MAXN = 1e7 + 10; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f; } int f[MAXN] = {0, 1}; int main() { int M = read(); for(int i = 2; i; i++) { f[i] = (f[i - 1] + f[i - 2]) % M; if(f[i - 1] == 0 && f[i] == 1) {printf("%d\n", i - 1); break;} } return 0; }
B P4995 跳跳!
為啥\(n \leqslant 300\)啊。。出題人這麼放煙霧彈真的好麼。。。
直接排序之後每次在沒跳過的最大的和沒跳過的最小的之間跳
開始的時候跳的最大的
#include<bits/stdc++.h> #define Pair pair<int, int> #define MP make_pair #define fi first #define se second #define LL long long using namespace std; const int MAXN = 1e6 + 10; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f; } int N; LL a[MAXN]; int main() { N = read(); for(int i = 1; i <= N; i++) a[i] = read(); sort(a + 1, a + N + 1, greater<int>()); LL ans = a[1] * a[1], l = 1, r = N, opt = 0; for(int i = 1; i <= N - 1; i++, opt ^= 1) { ans += abs((a[l] - a[r]) * (a[l] - a[r])); if(!opt) l++; else r--; } cout << ans; return 0; }
B P4996 咕咕咕
看不懂題其實也不能完全怪出題人吧。。還是自己太菜了。。
直接爆搜+記憶化就能騙到\(40\)分(莫名奇妙wa掉兩個點)
交上去的時候已經\(11:47\)了。。吃飯的時候發現可以把\(1\)的個數相同的數一起算,他們的係數都是一樣的。
然後就做完了。。
時間複雜度:\(O(2^n)\)
好像可以直接用組合數算係數?
#include<cstdio> #include<map> #include<iostream> #define Pair pair<int, int> #define MP make_pair #define fi first #define se second #define LL long long using namespace std; const int MAXN = 3e6 + 10, mod = 998244353; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f; } int N, M, Lim, ans, ou[MAXN], in[MAXN]; int mp[1 << 22]; void add(int &x, int y) { if(x + y < 0) x = x + y; else x = (x + y >= mod ? x + y - mod : x + y); } int mul(int x, int y) { return 1ll * x * y % mod; } int trans(string x) { int ou = 0; for(int k = 0; k < N; k++) if(x[k] == '1') ou |= 1 << k; return ou; } int g(int x) { return __builtin_popcount(x); } int dfs(int sta) { if(ou[g(sta)]) return ou[g(sta)]; for(int i = sta + 1; i <= Lim; i++) if((i & sta) == sta) add(ou[g(sta)], dfs(i)); return ou[g(sta)]; } int dfs2(int sta) { if(in[g(sta)]) return in[g(sta)]; for(int i = 0; i < sta; i++) if((i & sta) == i) add(in[g(sta)], dfs2(i)); return in[g(sta)]; } int main() { N = read(); M = read(); Lim = (1 << N) - 1; for(int i = 1; i <= M; i++) { string s; int val; cin >> s; val = read() % mod; mp[trans(s)] = val; } in[0] = 1; ou[g(Lim)] = 1; dfs(0); dfs2(Lim); for(int i = 0; i <= Lim; i++) add(ans, mul(mp[i], mul(ou[g(i)], in[g(i)]))); cout << ans; }
D
沒時間寫暴力了。
puts("-1 -1")
騙了10分。。
相關推薦
洛谷11月月賽題解(A-C)
心路歷程 辣雞T3卡我1.5h題意,要不是最後nlh跟我解釋了一下大樣例估計這次是真涼透了。。 A P4994 終於結束的起點 打出暴力來發現跑的過最大資料?? 保險起見還是去oeis了一波,然後被告知第一個滿足條件的位置不會超過\(2n +2\) 贏了 #include<bits/stdc++.h&g
「P4996」「洛谷11月月賽」 咕咕咕(數論
題目描述 小 F 是一個能鴿善鵡的同學,他經常把事情拖到最後一天才去做,導致他的某些日子總是非常匆忙。 比如,時間回溯到了 2018 年 11 月 3 日。小 F 望著自己的任務清單: 看 iG 奪冠; 補月賽題的鍋。 小 F 雖然經常咕咕咕,但他完成任務也是很厲害的,他一次性可以完成剩
[洛谷11月月賽]
比賽連結 T1 思路 按照斐波那契的式子到著往前推就行,f[i]=f[i+2] - f[i+1],當找到某個值使得f[i] = 0,f[i+1] = 1的時候就停止。 程式碼 //https://www.luogu.org/problemnew/show/P4994 #include<cstd
「P4994」「洛谷11月月賽」 終於結束的起點(枚舉
一次 分享 ted main orange 多少 質因子 生涯 nbsp 題目背景 終於結束的起點終於寫下句點終於我們告別終於我們又回到原點…… 一個個 OIer 的競賽生涯總是從一場 NOIp 開始,大多也在一場 NOIp 中結
洛谷11月月賽
https://www.luogu.org/contestnew/show/12006 我是比賽完後在去寫的 這是我第一次打洛谷月賽,之前一次是比賽完才去看而且寫了第一題就沒寫後面的了 284分,太水了,rank85左右 第一題第二題AC了,第三題寫了3^n的演算法,知道會超時,也知道滿分做法應該是隻
【洛谷11月月賽T3】【P4996】咕咕咕(組合數)
遲到的題解 昨天亂翻的時候感覺這道題挺有意思的 一眼看過去狀態壓縮亂搜 轉移方程大概是 設f[i]表示從0轉移到i的遺憾值之和 f[i]=sigma(f[j])+val[i]*dis[i] dis[i]=sigma(dis[j]) 其中j是i的子集,dis[i]表示從0轉移到i的方案數之和 妙啊有70分了 /
【洛谷月賽】洛谷三月月賽題解報告
現在 圖片 數字 div 但是 格式 image 投票 cin 昨天就是洛谷三月月賽,小編考的並不好,才31分,隔壁大佬50分,於是小編決定改一改題,先看第一題: P5238 整數校驗器 題目描述 有些時候需要解決這樣一類
【題解】洛谷6月月賽 —— 「數學」約數個數和
分解 pri clas left pac 這樣的 DC 兩個 探測 看德國戰墨西哥去了結果發現比賽只剩下30分鐘……當然之後又思考這題挺久也還是不會做。看了一下題解,覺得這個做法挺厲害的,在這裏記錄一下: 原式實際上就是:(\(K +=
洛咕11月月賽部分題解 By cellur925
聽說是你谷史上最水月賽?我不聽我最菜 T1:終於結束的起點 月天歌名好評 給你一個模數 \(M\),請你求出最小的 \(n > 0\),使得\(fib(n)\) \(mod\) \(m=0\),\(fib(n+1)\) \(mod\) \(m=1\)。 數學題,開始還想打表驗證下,但是我不會告訴你
洛谷10月月賽Round.1 A.絲綢之路
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #inclu
洛谷七月月賽
bfs scanf col sca 貪心 排序 ont pre open A題 分析:直接貪心即可,註意要long long 1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #in
洛谷9月月賽T1——預生成密碼
-a cnblogs turn code -o style su- col blog 其實這題只是一道比較簡單的數學題。 輸入給出了a,b,c三個數的與或和 由於要a盡可能小,a相同則b盡可能小,b相同則c盡可能小 所以a最小一定是and,此時若要b盡可能小,c就要盡可能大
洛谷10月月賽R1·普及組
ack com iostream read n) none 水題 cin 初始 SAC E#1 - 一道不可做題 Jelly 這題是大水題,隨便AC。 就是要註意一點:初始溫度與熔點的大小關系。 就是因為這個。。wa了。。 #include<iostream>
【LGR-047】洛谷5月月賽
cti stat strong 半徑 要求 一起 lin 算法 pac 這次我期待了很久的Luogu賽制崩掉了 傳說中的Luogu神機就這樣被卡爆了 然後我過了20min才登上Luogu的網站,30min後才看到題目 然後交T1TM的不給我測!!!然後又叫了一次機子就炸了,
【洛谷5月月賽】玩遊戲(NTT,生成函數)
wap class char gist 一個 我們 max 卷積 include 【洛谷5月月賽】玩遊戲(NTT,生成函數) 題面 Luogu 題解 看一下要求的是什麽東西 \((a_x+b_y)^i\)的期望。期望顯然是所有答案和的平均數。 所以求出所有的答案就在乘一個逆
洛谷5月月賽T30212 玩遊戲 【分治NTT + 多項式求ln】
LG AI getchar make DG mit pla con 形式 題目鏈接 洛谷T30212 題解 式子很容易推出來,二項式定理展開後對於\(k\)的答案即可化簡為如下: \[k!(\sum\limits_{i = 0}^{k} \frac{\sum\limits_
【LGR-049】洛谷7月月賽
while size printf class jump 二分 ++ 一個 sin Preface Luogu八月月賽都結束了我才來補七月月賽 這次月賽還是很狗的,在紹一的晚上恰逢刮臺風,然後直接打到一半斷網了 結果都沒有交上去GG 感覺這次難度適中,解法也比較清新自然吧,
【洛谷九月月賽T1】簽到題(bsgs)(快速乘)
code 是我 好的 取模 lin pri sca ast for 說好的簽到題呢qwq。。。。怎麽我簽到題都不會啊qwq 之後看了bsgs才發現貌似不是那麽那麽難fake!!什麽東西。。。 先貼上部分分做法(也就是枚舉1的個數,然後每一步都進行取模(這和最後取模結果一樣,
洛谷十月月賽
如果 打表 奇數 new 回文 十月 http clas 維護 (比賽鏈接)[https://www.luogu.org/contestnew/show/11084] T1 50分 : 暴力 100分· : 臨時數組記錄位置 T2 先看s = 0時 對於一個合理串 把它每一
洛谷十月月賽2T1瀏覽器P4932
傳送門 https://www.luogu.org/problemnew/show/P4932 題面 題目描述 __stdcall給了你n個點,第i個點有權值x[i],對於兩個點u和v,如果x[u] xor x[v]的結果在二進位制表示下有奇數個1,那麼在u和v之間連線一個Edg