银当taki
银当taki
全部文章
分类
题解(35)
归档
标签
去牛客网
登录
/
注册
银当taki的博客
全部文章
(共33篇)
2025暑期第五场
J 二分 多源BFS 切比雪夫距离 01矩阵,最多把一个0变成1,然后每个1每一秒会把曼哈顿距离为1的相邻0变成1,问变成全1的最小时间? 注意到肯定是越早越困难,越晚越容易,答案具有单调性,可以二分变成全1的时间。 从多个源点出发的染色,故check里考虑多源bfs,发现我们从所有1出发bfs,只...
2025-07-30
3
47
2025暑期第三场
D 思维 可以把长度a的连续1变成0,可以把长度a+1的连续0变成1,问最多能得到多少1? 只要有一段长度a的1,我们把他们变成0,然后和两侧的0,肯定可以构成一个长度至少a+1的连续0,然后我们可以把他们再变成1,重复这个操作可以把所有0都变成1 如果开始没有长度a的1,但是有长度a+1的0,可以...
2025-07-23
5
52
2025暑期第二场
A 计数DP 1表示看到白天,0表示看到晚上,-1表示看到不确定。给个序列,问所有把-1变成0或1的方案中,白天天数的和? 首先如果只是求方案数是好求的,但是这里每个方案都有贡献,要求的是所有方案的贡献和。这种一般就维护两个dp数组,一个是贡献和,一个是方案数,方案数正常转移,什么时候能产生贡献了,...
2025-07-23
2
52
2025暑期第一场
2025暑期第一场 G 模拟 数学 给两个01串,问分别从两个位置开始的子串,有多少个子区间完全相同? 注意到这是01串/手玩,可以推出,对于每段相等的最长子区间,长度的话,对答案贡献是 #include <bits/stdc++.h> #define rep(i, a, b) for(...
2025-07-16
4
61
25寒假营第五场(不含E)
A 模拟不谈 void solve(void){ cin>>n; char c; cin>>c; if(c=='*')cout<<1<<' '<<n; else if(c=='+')cout<<n/2<<'...
2025-02-17
0
134
小白月赛110
A 除500和对500取模即可,但是这个余数是1-500的,并不是0-499,所以直接取模会在边界情况出错,需要特判一下 void solve(){ cin>>n; int x=n/500; char c='A'+x; int y=n%500; if(y){ cout&...
2025-02-15
1
105
25寒假营第六场(不含G)
A 每次可以选一个子区间,复制其中所有元素,那其实我们可以用这个操作把初始元素变成任意多个,但是我们不能凭空变出来一个元素。那么给出操作后的数组,其中每一段连续相同元素,一定是初始数组中至少一个该种元素操作得来的。因此把每一段连续相同元素缩成一个该种元素,就是最小的初始数组 void solve()...
2025-02-13
1
127
25寒假营第三场 G数论分块
G 求n模i的余数的前k大的和,其中i属于。 首先是一个和整除,求和有关的东西,先想想数论分块。实际上 n模i=n-floor(n/i)*i 然后在整除分块的一个块里是一样的,所以在一个块里,余数是一个等差数列。然后我们要求前k大的余数的和,可以找到第k大的的余数的值,然后对于大于这个值的余数,直接...
2025-01-27
0
100
25寒假营第二场(不含IL)
A 签到 判断一个数列是否由给定元素构成,由于反例很少,可以从反例入手,写的更短 #include<bits/stdc++.h> using namespace std; int main(){ int f=0; for(int i=0;i<7;i++){ ...
2025-01-24
0
120
25寒假营第一场(不含CIL)
A 找到一个数和数组中任何一个数都不互为倍数,注意到数组中数字不超过1e9,但我们找的这个数可以1e18,那显然找一个比1e9打的质数就行了。但是注意任何数都是1的倍数,所以出现1就无解 #include<bits/stdc++.h> using namespace std; int m...
2025-01-22
11
164
首页
上一页
1
2
3
4
下一页
末页