前言 : 我確診很閒所以來寫這東西
如果你覺得我的 code 沒有註解的話,這可能是為了順便訓練讀者的觀念題讀題能力(X
開一個陣列維護每個數字出現的次數,更新最大值,輸出最大值。
最後把陣列倒著跑回來,有出現就輸出。
複雜度 :
#include <bits/stdc++.h>
using namespace std;
array<int, 10> C;
signed main(){
int x, cnt = 0;
for(int i = 0; i < 3; i++){
cin >> x;
C[x]++, cnt = max(cnt, C[x]);
}
cout << cnt << " ";
for(int i = 9; i; i--){
if(C[i]) cout << i << " ";
}
cout << "\n";
return 0;
}
題目給了我們加密方法,所以我們把他倒著做就能解密了。
人話 : 把
最後如果
複雜度 :
#include <bits/stdc++.h>
using namespace std;
array<string, 104> E;
string trans(string &T, string &e){
int n = T.size(), l = 0, r = n - 1, sum = 0;
string S;
for(int i = 0; i < n; i++) S += ' ';
for(int i = 0; i < n; i++){
if(e[i] == '0') S[l++] = T[i];
else S[r--] = T[i];
}
for(char c : e) sum += c;
for(int i = 0; i < n >> 1; i++){
if(sum & 1) swap(S[i], S[i + (n >> 1) + (n & 1)]);
}
return S;
}
signed main(){
int m, n;
string S;
cin >> m >> n;
for(int i = 1; i <= m; i++) cin >> E[i];
cin >> S;
for(int i = m; i; i--) S = trans(S, E[i]);
cout << S << "\n";
return 0;
}
先把所有鏡子照
然後暴力跑,不會有環,所以最多每個鏡子的正反面都被射過一遍。
複雜度 :
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
struct ban{
int p, x, y;
};
array<int, 250004> T, X, Y;
array<array<int, 4>, 250004> N;
vector<ban> B;
bool cmpx(ban a, ban b){
return a.x < b.x;
}
bool cmpy(ban a, ban b){
return a.y < b.y;
}
int exp(int x, int k){
int p = 1;
for(; k; k >>= 1){
if(k & 1) p *= x;
x *= x;
}
return p;
}
int shoot(int p, int f){
int cnt = 0;
for(; p; f = (f + exp(-1, f) * T[p] + 4) % 4, p = N[p][f], cnt++);
return cnt;
}
signed main(){
int n, x, y, t;
cin >> n;
B.pb({1, 30000, 30000});
for(int i = 2; i <= n + 1; i++){
cin >> x >> y >> t, x += 30000, y += 30000;
B.pb({i, x, y}), T[i] = t? 1 : -1;
}
sort(B.begin(), B.end(), cmpx);
for(auto [p, i, j] : B){
N[p][0] = Y[j], N[Y[j]][2] = p, Y[j] = p;
}
sort(B.begin(), B.end(), cmpy);
for(auto [p, i, j] : B){
N[p][3] = X[i], N[X[i]][1] = p, X[i] = p;
}
cout << shoot(N[1][2], 2) << "\n";
return 0;
}
暴利枚舉在
最大區間和 : 不斷往後加,每加一次更新答案,如果當前區間和小於
複雜度 :
#include <bits/stdc++.h>
using namespace std;
const int inf = 1 << 30;
array<int, 1004> A, B;
int dot(int p, int n, int m){
int sum = 0, ans = -inf;
for(int i = 1; i <= m; i++){
if(p + i < 1 || p + i > n) continue;
sum += A[p + i] * B[i];
ans = max(ans, sum), sum = max(sum, 0);
}
return ans;
}
signed main(){
int n, m, ans = -inf;
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> A[i];
for(int i = 1; i <= m; i++) cin >> B[i];
for(int i = 1 - m; i <= n; i++) ans = max(ans, dot(i, n, m));
for(int i = 1; i <= m >> 1; i++) swap(B[i], B[m - i + 1]);
for(int i = 1 - m; i <= n; i++) ans = max(ans, dot(i, n, m));
cout << ans << "\n";
return 0;
}
| M | T | W | R | Column 3 || –––– | –––– | –––– || Text | Text | Text |
Jun 7, 2025在探索真相的過程中,你意外發現自己只是蕭煜晨的妄想朋友,是因為孤獨而誕生的存在。認知到這些事情後,「蕭淵暝」消失了,世上只剩下了重拾過往的蕭煜晨。你不停在夢境中回到了妹妹離你而去的那天,為了保護她,你將她關進了一個絕對安全的場所,卻也同時在半夢半醒間錯將路邊的少女誤認為妹妹,將她們綁架到了倉庫中。然而,殺害她們的並不是你,而是你的青梅竹馬,藍菈娜。逃離自幼長大的永恆真知教團後,你不願回想那段血腥的過往,也與她斷絕了聯繫,但崇拜你的藍菈娜卻找了上來,殺害少女們並透過謠言刺激,讓你回想起一切。假死脫身的藍菈娜來到你面前闡訴教團現狀,自前任教主意外身亡、原定繼任教主,也就是你,離開教團後,祭司們爭奪大權,信仰不再純粹,教團規模大不如前。她希望你能回到教團,重新建立信仰。但你不相信這個殺害無辜少女的瘋子,即便她看起來再無害。同時,在調查中重新審視一遍自己記憶的你發覺了一件事:她就是讓你永遠失去妹妹的幕後黑手。你知道自己應該怎麼做。你披上了你最熟悉的那個偽裝,神色無悲無喜,平和地看著藍菈娜。一絲期待從藍菈娜眼中閃過,她成功喚回了她的神明,她欣喜若狂的跪伏在你的面前,深深低下頭。「藍菈娜,身為信徒,我想你應該知道自己的本分。」你如他所願張開了口,說出的,卻並非讚賞或恩賜。她惶恐不安,但審判並不會因此延緩到來。「喚回我的記憶固然有功,然而擅自揣測我的意思,殺死少女是你的過失。」「膽敢插手我與蕭郁曦的事,則是你犯下的又一個錯誤。」「從今以後,你不得自稱是我的信徒。」你轉身離去。
Sep 13, 2024https://cses.fi/problemset/task/1642
Jul 30, 2024「仁,是將人一分為二的藝術」–- 孔子
Jul 30, 2024or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up