银当taki
银当taki
全部文章
分类
题解(24)
归档
标签
去牛客网
登录
/
注册
银当taki的博客
全部文章
(共22篇)
题解 | #Ad-hoc Newbie#
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
3
11
题解 | #Another Day of Sun#
A 计数DP 1表示看到白天,0表示看到晚上,-1表示看到不确定。给个序列,问所有把-1变成0或1的方案中,白天天数的和? 首先如果只是求方案数是好求的,但是这里每个方案都有贡献,要求的是所有方案的贡献和。这种一般就维护两个dp数组,一个是贡献和,一个是方案数,方案数正常转移,什么时候能产生贡献了,...
2025-07-23
0
10
题解 | #Rectangular Posters#
2025暑期第一场 G 模拟 数学 给两个01串,问分别从两个位置开始的子串,有多少个子区间完全相同? 注意到这是01串/手玩,可以推出,对于每段相等的最长子区间,长度的话,对答案贡献是 #include <bits/stdc++.h> #define rep(i, a, b) for(...
2025-07-16
3
26
寒假营第五场题解(不含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
96
小白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
71
寒假营第6场题解(不含G)
A 每次可以选一个子区间,复制其中所有元素,那其实我们可以用这个操作把初始元素变成任意多个,但是我们不能凭空变出来一个元素。那么给出操作后的数组,其中每一段连续相同元素,一定是初始数组中至少一个该种元素操作得来的。因此把每一段连续相同元素缩成一个该种元素,就是最小的初始数组 void solve()...
2025-02-13
1
83
2025寒假营第三场 G数论分块 题解
G 求n模i的余数的前k大的和,其中i属于。 首先是一个和整除,求和有关的东西,先想想数论分块。实际上 n模i=n-floor(n/i)*i 然后在整除分块的一个块里是一样的,所以在一个块里,余数是一个等差数列。然后我们要求前k大的余数的和,可以找到第k大的的余数的值,然后对于大于这个值的余数,直接...
2025-01-27
0
58
2025牛客寒假营第二场题解(不含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
77
2025寒假营第一场(不含CIL)题解
A 找到一个数和数组中任何一个数都不互为倍数,注意到数组中数字不超过1e9,但我们找的这个数可以1e18,那显然找一个比1e9打的质数就行了。但是注意任何数都是1的倍数,所以出现1就无解 #include<bits/stdc++.h> using namespace std; int m...
2025-01-22
11
121
题解 | #时间表#
周赛77 B 注意力 注意到我们要求每个长度为9的子数组都出现1-9,那么实际上构造方式只能是选择一个1-9的排列然后一直循环,最后剩下的不到9个也可以利用前面的组成长度为9的排列。 但是注意到这样是不行的,也就是只有剩余不到9个的数里没有重复的才行。这个条件也可以转化为,所有数字中最大出现次数-最...
2025-01-20
1
73
首页
上一页
1
2
3
下一页
末页