周康禧
周康禧
全部文章
分类
题解(2)
归档
标签
去牛客网
登录
/
注册
周康禧的博客
全部文章
(共79篇)
题解 | 牛牛喜欢字符串
对于每一个字串最后要让所有的对应位置相同就是下标对k取模相同的位置的字符都要相同,然后统计一下每一个对应位置出现最多的那个,更改其他的就行了 void solve(){ int n,k; cin>>n>>k; string s;cin>>s...
2026-01-09
0
17
题解 | 区间取反与区间数一
线段树维护一下区间一的个数,取反就用区间长度减去一的个数就行了 struct seg{ int l,r; int c1; int lz; }tr[N<<2]; string a; void pushup(int p){ tr[p].c1=tr[p<&...
2026-01-08
0
17
题解 | 统计个数
按题意统计一下就行了,注意重复的要去掉除一下,线的个数就是算一个顶点跟另外两个点连就算,然后那个三角就是三个不同点的环的个数,因为n很小所有暴力枚举算一下就好了 void solve(){ int n,m; cin>>n>>m; vector<v...
2026-01-06
0
19
题解 | 小美打怪
因为n的范围比较小,可以直接暴力n^2算一下,在排序之后,算一下以第i个为结尾的最多可以击败的怪物数量 void solve(){ int n,H,A; cin>>n>>H>>A; vector<pair<int,int>...
2026-01-05
1
28
题解 | 先序遍历、中序遍历和后序遍历
按先中后的顺序遍历就行了,因为是有向边,所以入度为0的为树的根 vector<vector<int>>e(N); int d[N]; void dfs1(int x){//root left right cout<<x<<" &quo...
2026-01-01
0
26
题解 | 小红的01串
暴力枚举判断一下,最后要么是全1,要么是全0,如果两种都不行就是不行了 bool ck(string s,string a){ for(int i=0;i<s.size()-1;i++){ if(s[i]!=a[i]){ s[i]=a[i]; ...
2025-12-31
1
24
题解 | 人人都是好朋友
并查集+离散化一下就行了,dsu随便写的,没按秩合并什么的,跑的1.6s,常数可能有点,离散化写的也有点丑陋了 struct DSU{ int n; vector<int> f; void init(int _){ n=_; f.r...
2025-12-30
0
30
题解 | 小红的01子序列构造(easy)
枚举左端点然后二分就行了,因为右端点越往右满足的子序列数量单调不减,然后后缀算一下子序列的数量,二分ck的时候减一下就行了 ll dp[N],cnt1[N],cnt0[N]; ll ck(int l,int r){ return dp[l]-dp[r+1]-((cnt0[l]-cnt0[r+...
2025-12-29
0
25
题解 | 最长不下降子序列
维护一个最优的上升数组,如果当前的a[i]大于等于最优的上升数组的最后一个就把这个加到后面,否则找到第一个严格大于a[i]的位置,将其替换成a[i],哎哎哎,好久以前学的有些忘了都 void solve(){ int n; cin>>n; vector<in...
2025-12-29
0
25
题解 | 秘藏
dp一下 dp[i][j]表示到i行j列能得到的最多金币数量,那么i行j列可以从i行j-1列跟i^1行j-1列转移,注意一下转移条件就可以了,最后答案给dp[0][n],dp[1][n]取一下max就行了 void solve(){ int n,k; cin>>n>...
2025-12-24
0
27
首页
上一页
1
2
3
4
5
6
7
8
下一页
末页