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