CF題目心得 總結

2022-09-28 04:57:15 字數 3006 閱讀 2250

created: 10/18/2021

updated: 10/20/2021 11/27/2021

目錄1594c make them equal

題意思路點

1593d2 hall of same

賽中想到的

solution

1593b make it divisible by 25

1614c divan and bitwise operations

​ t組資料,n個點,m條限制,每條限制輸入a、b、c,要求建立的樹在a和c之間只有一條路徑並且b不在這條路徑上。

​ 答案輸出樹的每條邊相鄰兩點。

通過觀察資料範圍m < n,得出一定有乙個點沒有被限制,然後以這個點為中心連乙個樹就可以,輸出每一條邊。

​ 以乙個點為中心連邊,每次將不同的點塞在b的兩側,達到了第一層,正解在第n層

#include#include#includeusing namespace std;

// 從點和邊的資料範圍中觀察出技巧

int main()

int center = 0;

for(int i = 1; i <= n; i++)

}for(int i = 1; i <= n; i++)

}return 0;

}

​ \(t\)組資料,輸入長度為\(n\)的字串\(s\)和乙個字元\(c\),可以進行乙個操作,對於\(1≤x≤n\),可以將不能整除\(x\)的\(i(1≤i≤n)\),所在的下標字元替換成\(c\),問最少經過多少次操作可以使\(s\)每個字元都是\(c\)?

因此最多需要2次操作就可以將\(s\)替換成想要的字串。

對於做0次操作,遍歷陣列就行。

對於做1次操作,當陣列中\(\exists i,\(i\)及\(i\)的倍數下標位置的字元都是\(c\)的話,只需要一次操作就可以把\(s\)都替換成\(c\),輸出\(i\)的下標。

對於做2次操作,就是\(\nexists i,\(i\)及\(i\)的倍數下標位置的字元都是\(c\),輸出\(n-1\)和\(n\)。

​ 上述的第一點想到了,但是忽略了做1次操作的做法,也是這道題的核心,由第1點衍生出,\(i\)可以替換不是它倍數的下標位置(其實就是題意)。我太蠢了

#include#includeusing namespace std;

int main()

}if(flag)

bool f = false;

for(int i = 1; i <= n; i++)

}if(flag)

}if(!f)

}return 0;

}

​ d1的加強版,賽中過了,這裡就不再單獨將d1列出來。d1題意是輸入乙個陣列 $a(-1e6≤a_i≤1e6) \(,\)n\(個元素\)(4≤n≤40,n為偶數)$求出乙個最大的整數 \(k\),對每個元素減去若干個 \(k\) 之後,\(a\)中所有元素相同。

​ 此題(d2)的題意與d1大致相同,但求乙個最大的 \(k\),使得陣列中至少一半的元素能夠相同。

​ 所有 \(d\%k\) 同餘想到了,還是沒深入思考到 \(k\) 一定是所有 \(d\) 的最大公約數。

#include#include#include#include#includeusing namespace std;

int main()

if(same >= n / 2)

maps;

for(int j = 0; j < nums.size(); j++)}}

for(auto t: s)}}

if(ans == int_max)

ans = -1;

printf("%d\n", ans);

}return 0;

}

​ 多測,輸入數字 \(n(n ≤ 1e18)\),每次可以對 \(n\) 進行操作,刪去一位數字,使 \(n\) 可以整除 \(25\), 求最少的操作次數 \(ans ≥ 0\),資料保證一定有解

​ 腦子糊了

#include#includeusing namespace std;

int main()

else

ans1++;}}

if(flag)

break;

}flag = false;

for(int i = s.size() - 1; i >= 0; i--)

else

ans2++;}}

if(flag)

break;

}printf("%d\n", min(ans1, ans2));

}return 0;

}

求出未知數組的所有子串行的 \(xor\) 和,輸入子串行開始位置和結束位置以及子串行的 \(or\) 和,且保證輸入包含陣列每個元素。

結論題,答案為 \(ans^\), \(ans\) 為陣列元素 \(or\) 的和,

求所有元素 \(or\) 和 \(ans\) 是知道的。結論實在推不出來,還把題輸出給讀錯了,以為還要輸出原陣列,難上加難。

#include#includetypedef long long ll;

typedef std::pairpii;

typedef std::pairpll;

#define pb push_back

using namespace std;

const int mod = 1e9 + 7;

templatetype qmi(type a, type k, type p)

return res;

}int main()

cout << 1ll * res * qmi(2, n - 1, mod) % mod << endl;

}return 0;

}

CF刷題總結 CF706E鍊錶

這題目應該要秒做出來的。首先看到二維,又沒什麼思路就直接降維 考慮一維的情況,就是一段連續的和另一端連續的交換,最快的當然是鍊錶模擬了。所以考慮到二維中也不應該用陣列儲存,而是鍊錶表示。但是由於二維的話,不可能是簡單的鍊錶。所以考慮每乙個矩形和旁邊的關係。肯定就是四周的,但是只考慮單向,那就是2個方...

jdbc 心得總結

jdbc 心得總結 首先 jdbc 是乙個連線資料庫的協議標準,每乙個資料庫廠商都有自己的實現。步驟 如下 1,載入資料庫驅動 2,建立連線 可以使用連線池,就是把連線物件放進 乙個集合,用於之後在放回集合中,連線資訊可以放在乙個屬性檔案中 3,建立語句物件 preparedstatement 用的...

工作心得總結

這篇總結是我在實際工作中的一些心得體會。主要是我在工作中犯的錯誤然後進行總結,也是對自己的警示。我在這裡先丟擲乙個觀點 技術能力不等同於工作能力,只能說技術能力是工作能力的一部分,在公司裡會發現有些技術不錯的程式設計師並不得志,有些技術不如他的反而得到晉公升 事件的背景是我在乙個小組周會上進行了乙個...