目錄
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設計、網(wǎng)站制作、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務公安,10多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575前言
A. 柳予欣的歸來
?思路
回顧
C. 我沒有腦子 (確實)
思路
D. 我是殺豬飼料,祝你天天開心
G. A + B Problem
?思路?
K. 逃出虛圈
?思路
L. 為愛發(fā)電的Oier
?思路
N.?瀧1千0(easy version)
?思路
F.?瀧1千0(hard version)
?思路
其他題
總結
前言
“ 心情不好就把音量開到大?!?
被薄紗了,是甚至簽到都沒簽完的大失敗場。很好笑,師哥說有人做了兩三題就去玩了,我是認認真真地卡題崩潰罰坐3小時。但其實出5.6題大概不算難,yysy我的理念是能自己看懂題解的就不應該做不對。
隊長寫過題解了,這篇沒什么好看的,主要是我想記錄一下失敗,還有一些不想寫到lls要看的總結里的總結。高中做題就容易鉆牛角尖,沒想到現(xiàn)在更嚴重了,挺失望的。放個博客看看我什么時候才能改掉這個壞習慣。
以下代碼只是補題,但是沒重交,不知道能不能AC,看看思路即可。
------>2022.12.5更新,交了,改改,注釋注意點,都A了。
A. 柳予欣的歸來思路
對于任意素數(shù)p,小于p的數(shù)是p的完全剩余系,?對于任意a
回顧
因為之前被快速冪卡過好幾次(具體可見月賽熱身賽),所以這次覺得用線性逆元必贏,但是p的范圍很大,1e12數(shù)組開不下,所以我開了三個1e6的數(shù)組妄圖使1e6+1e6=1e12。(雖然真的很好笑但是當時我re到崩潰了)。
別太看重某一個知識點,軸勁兒上來了不知道是幫我還是害我。
ps: 我竟然在思維題上被卡死了,那我僅有的一點優(yōu)勢沒了啊,我不允許。
#includeusing namespace std;
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
const ll N = 1e6 + 1;
const ll MOD = 998244353;
ll fastpow(ll A, ll B, ll K ) {
ll ans = 1;
A = A % K;
while (B) {
if (B % 2 == 1)
ans = (ans * A) % K;
B /= 2;
A = (A * A) % K;
}
return ans;
}
void work() {
ll p, m;
cin >>p >>m;
p %= MOD;
ll ans = p * (p - 1) % MOD * fastpow(2, MOD - 2, MOD);
cout<< fastpow(ans, m, MOD)<<'\n';//xs,第一遍少打個‘CE了
}
int main() {
io;
work();
return 0;
}
C. 我沒有腦子 (確實)思路
自己打表300億記錄一下每億的結果。(這種技巧要會用)
或者? 矩陣快速冪。
//這個不想寫了,讓我擺吧,別管我了。
D. 我是殺豬飼料,祝你天天開心
蛇姐生日快樂!祝她天天開心!
(蛇姐是我這五個小時里唯一的安慰了)
G. A + B Problem思路?
本來想的是高精度加法+取模,因為沒學取模所以一開始沒打算做這個題??搭}解發(fā)現(xiàn)確實是狗題(dbq其實是我基礎知識不扎實)。
ull的大范圍就是2^64,所以溢出其實就是取模,我們根本不用管最終取模,只需要讓字符串變成ull即可。這里還有個小點:(a×b+c)?%?p=((a×b)?%?p+c?%?p)?%?p,但是自然溢出真的很省事啥也不用干。
K. 逃出虛圈思路
捅死我吧我為什么不寫bfs啊,真的對自己很無語,能不能別鉆牛角尖了。
我寫的bfs很板,不如師哥靈活。
#includeusing namespace std;
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define mem(a,b) memset(a,b,sizeof a)
typedef long long ll;
const int N = 1e5 + 5;
vectorarr[N];
bool vis[N];
bool exi[100005];
vectorent;
struct node {
int now;
int cnt;
};
void bfs() {
queueq;
for (int i = 0; i< ent.size(); ++i) {
node st;
st.now = ent[i];
st.cnt = 0;
q.push(st);
}
while (!q.empty()) {
node cur = q.front();
q.pop();
if (exi[cur.now]) {
cout<< cur.cnt<< '\n';
return;
}
for (int i = 0; i< arr[cur.now].size(); ++i) {
if (!vis[arr[cur.now][i]]) {
vis[arr[cur.now][i]] = 1;
node tt;
tt.cnt = cur.cnt + 1;
tt.now = arr[cur.now][i];
q.push(tt);
}
}
}
cout<< "N0\n";//這個大概是輸出的坑
}
int main() {
io;
int n, m;
mem(exi, 0);
mem(vis, 0);
cin >>n >>m;
while (m--) {
int u, v;
cin >>u >>v;
arr[u].push_back(v);
arr[v].push_back(u);
}
int p, q;
cin >>p >>q;
while (p--) {
int x;
cin >>x;
ent.push_back(x);
}
while (q--) {
int x;
cin >>x;
exi[x] = 1;
}
bfs();
return 0;
}
L. 為愛發(fā)電的Oier思路
這么簽的題,我被期望勸退了,6。
E(x)=1/2 * x =n,求x。很好笑,我當時覺得我不會。
N.?瀧1千0(easy version)思路
無論是取反還是翻轉,只要是偶數(shù)次操作就相當于無,那么希望修改第i個字符的操作就是進行三步操作:i ->1 ->i 。通俗來講就是把i的前綴翻轉,此時i位置元素到達1位置,然后修改1,再操作i給他變回去,此時僅i位置的字符進行奇數(shù)次操作,其他均進行偶數(shù)次操作,即可達到單獨修改i的目的。
最壞的情況是對于每一個字符都需要單獨修改,此時k=3*n。
#includeusing namespace std;
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N = 1005;
int ans[3*N];//這個注意一下,答案是小于3*N的,數(shù)組要舍得開
int cnt = 0;
int main() {
io;
string a, b;
cin >>a >>b;
int n = a.length();
for (int i = 0; i< n; ++i) {
if (a[i] != b[i]) {
ans[++cnt] = i + 1;
ans[++cnt] = 1;
ans[++cnt] = i + 1;
}
}
cout<< cnt;
for (int i = 1; i<= cnt; ++i) {
cout<< " "<< ans[i];
}
cout<< '\n';
return 0;
}
F.?瀧1千0(hard version)思路
修改前綴,我們先讓一個字串全為0/1,然后從后往前修改前綴,由于預處理a字串全為0/1,操作中的翻轉=無,有點那個完全平方數(shù)按燈的感覺(這個理解不了就別理解了我想法很怪)。相當于從后往前找,找到不一樣的就把前綴全部改變。
最壞的情況仍然是對于a,b字串,每一個字符都與相鄰的不一樣且ab互反,預處理和修改都需要n次操作。
可能的注意點:
1. string的下標從0開始,如果能搞清楚就不用管,搞不清楚可以借鑒師哥操作:在前面隨便加一個什么字符讓下標從1開始。
2. 我們找的now一定是a[n-1]而非a[0]。因為預處理是從前往后的,理論上我們修改了字串,但是實際上我們并沒有對字串進行操作,只是記錄了答案而已,所以最終a字串的理論形態(tài)應該是全為最后一個字符的。
#includeusing namespace std;
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N = 100005;
int ans[2*N];//同上
int main() {
int cnt = 0;
string a, b;
cin >>a >>b;
int n = a.length();
for (int i = 1; i< n; ++i) {
if (a[i] != a[i - 1]) {
ans[++cnt] = i;
}
}
int now = a[n - 1] - '0';
for (int i = n - 1; i >= 0; --i) {
if (now != (b[i] - '0')) {
ans[++cnt] = i + 1;
now = 1 - now;//這個是有點妙的
}
}
cout<< cnt;
for (int i = 1; i<= cnt; ++i) {
cout<< " "<< ans[i];
}
cout<< '\n';
return 0;
}
其他題
B. 收收心找個電子廠上班了(編程也就圖一樂)
區(qū)間貪心/差分約束。沒學,學了再寫。
E.?沒什么特殊意義,就是想混一個最長的題目名字,然后讓大家點進來做這道題
?離散化+ 權值線段樹/平衡樹/對頂堆/主席樹。都不會,學了再寫。
H.?柳予欣的色圖
? 防AK,polya裸題。高中數(shù)競看見過這個,但是只是從?Burnside求不動點 到 旋轉/翻轉同構的循環(huán)節(jié)。只有這一部分我是似乎理解的,hqgg給的洛谷題解看了很久但是還是沒太理解在群意義下的各種置換,打算等他講,我不自學了,真學不下去。(yjgg說看我做這題好幾個小時,我澄清一下,其實寫這題時間真不長,是一直卡A罷了。雖然聽起來更蠢)
I.?WWW的雜貨鋪
? 謝謝yyjj,真的是簡單模擬。
J. 去玩寶可夢嘍~
? dp+線段樹。先學學dp再說吧。之前聽到djk師哥說想出dp,特別簡單的。emmm,難以評價。
M. 完全不管大一死活
? 謝謝yjgg,出了周賽原題我是沒想到的,竟然一點難度都沒加?因為沒找到蛇姐的題面所以先開了這題,莫名其妙拿了一血。懷念水題時光,年少不知模擬簽。
總結
幾點反思:
最近打的每一場比賽都在破防,我也不想總是破防啊,顯得我很他媽矯情啊,一點都不酷。但難繃也是真難繃,我感覺我現(xiàn)在是除了簽到什么也出不來的狀態(tài),甚至今天簽到都沒簽完。被吊打,真麻了。
我挺不滿意自己現(xiàn)在的狀態(tài)的,雖然很多次比賽是靠著罰時少名次才沒那么難看,但是我寫代碼實在算不上穩(wěn),總是不記得開ll,不注意格式,不想特判等等,我不能保證思路對了就能一次寫對;如果說我思維強,今天的思維題也是真的把我卡死了?,F(xiàn)在是哪邊都不沾,這不應該。
其實最近學的有點用的東西也就一個線段樹吧,效率好低,我不想當失敗的卷王啊。
舍斷離!別鉆牛角尖啦,A不了就不想了,死磕一個題真的會讓一場比賽都爛掉。yjgg說有隊友會好一點,但其實女賽正式賽卡B的時候,姐姐們?nèi)慓,我讀完了題就又去想B了,中途討論是有點斷層的(很不好意思),幸好是磕出來B了,然后狂補G跟上了思路(雖然最后也是wa的)。那如果沒磕出來B呢,其實這樣是弊大于利的,這個事還是得改一改的,就看看我什么時候能改掉這個臭毛病吧。
笑死了,yjgg幫我找理由說這次沒大二師哥師姐帶榜導致我亂開題卡住,安慰一下自己聽聽得了,不是每一次比賽都會有人帶榜,icpc也有人歪榜啊那能怎么辦,不能把自己的節(jié)奏押在別人身上。自己亂開題還死磕就是能力的缺失啊靠。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧