随笔分类 - 题目
摘要:A 模拟记录一下即可。 点击查看代码 #include<bits/stdc++.h> #define int long long using namespace std; int n; char c[55]; bool vs[55]; void xm(){ memset(vs,0,sizeof(vs
阅读全文
摘要:该学习笔记为2026.2.23至2026.3.1在信友队集训所学算法的笔记,每种算法抽取一道题写题解。 由于是给自己看的题解,所以证明过程基本都略了,而且可能不太严谨,慎用。 1.决策单调性优化\(dp\) P4767 [IOI2000] 邮局 加强版 决策单调性优化大多数用于区间拆分或区间合并 但
阅读全文
摘要:D link 首先考虑比较暴力的怎么做。 我们考虑一个前缀和的数组\(qzh_{0/1,i}\)代表\(1\)~\(i\)中\(0/1\)的个数。 那么如果我们让区间\(l\)~\(r\)(因为区间长度可以为\(0\),所以\(r \geq l-1\))是\(1\),答案就是\(qzh_{1,l-1
阅读全文
摘要:A link 如果选择这一天做题可以让差增加(即我这一天的题数大于他下一天的题数),则选;否则不选。 特殊的,另一个人地\(n+1\)天我们钦定他做了\(0\)道题。 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; int a[1
阅读全文
摘要:A link 如果两只小动物只往中间跳的话,那么中间间隔奇数个就是另一个小动物赢(一定会出现两个小动物挨着而该爱丽丝跳了),否则就是爱丽丝赢(一定会出现两个小动物挨着而改另一个动物跳了)。 那么我们可以发现,两个小动物只会往中间跳,因为往边上跳跳出去再跳回来一定是偶数步,不会改变自己的输赢(即不改变
阅读全文
摘要:A link 总共就三组,看一下每一组如果满足要让它是多少,看看最多有几个相同的,最多有几个相同的就满足这些,就可以满足这么多组。 点击查看代码 #include<bits/stdc++.h> using namespace std; int a[10]; int c[5]; void qwq(){
阅读全文
摘要:A link 首先,每次操作(第一次除外)之前\(s\)一定是一个奇数,那么我们要再加一个奇数才能让它变为偶数分数加一。 那么就是说操作过至少一次后,有几个奇数就有几分。 那么如果有至少一个偶数,那么第一次用偶数可以得分,后面再用奇数可以得分,偶数的不了分,最终得分就是奇数个数加一,如果没有偶数,第
阅读全文
摘要:A link 首先,对于一个数(比如说\(x\)),它和它加一一定互质(也就是\(x\)和\(x+1\)一定互质),那么它和它加一组成的区间(\([x,x+1]\))一定是好区间,也一定是最小好区间,因为除了本身\([x,x+1]\)、两个数\([x,x]\),\([x+1,x+1]\)和空集不包含
阅读全文
摘要:C link 手写队列存下开始位置和长度,模拟即可。 点击查看代码 #include<bits/stdc++.h> #define int long long using namespace std; int q; struct nd{ int st,len; }a[300005]; int h =
阅读全文
摘要:好像已经很久没有写过题解了 C link 对于每一个糕点,二分查找大于等于它大小的二倍的糕点的位置(可以用\(lower_{}bound\)函数),从这个位置到\(n\)就是可以和这个糕点配对的糕点。 猜猜我是啥 #include<bits/stdc++.h> #define int long lo
阅读全文
摘要:A link 由于它是由递减变成递增的,所以一定是中间一段连续的相同数不变,前面变,后面变,因为对于一个数来说原来这些数前面的数都大于等于它,而现在都要小于等于它,而原来后面的数都小于等于它,而现在都大于等于它了,那么它左右等于它的就可以不变,而不等于它的就一定要变。 那么一定是找个数最多的数不变,
阅读全文
摘要:C link 我们找到第\(k-1\)个段的结尾和第\(k\)个段的开头和结尾,当输出到第\(k-1\)个段的结尾时,输出第\(k\)个段,也就是第\(k\)个段的开头到结尾个\(1\),当输出到第\(k\)个段的开头时,直接跳到第\(k\)个段的结尾。 那么怎么找第\(k-1\)个段的结尾和第\(
阅读全文
摘要:C link 由于只能往后放,显而易见,如果可以达到要求,那么一定只有一种方式。所以重心就在判断是否可行上了。 首先,如果总数量不等于\(n\)肯定不行。 其次,如果第一堆不在\(1\)肯定不行。 最后,如果到了某个点的时候石头总和不够\(1\)到这个点的数量一定是不行的。 那么在统计答案的时候,我
阅读全文
摘要:C link 存一下那些点不能占,用总数减去即可,注意存的时候可以用一个\(map\),存过的就不要再存了。 神奇的代码 #include<bits/stdc++.h> #define int long long using namespace std; int n,m; int ans; int
阅读全文
摘要:今天的题比较简单。 A 友矩阵 link 人话翻译一下题目中的条件。 1.和相等。 2.左上角相同。 3.右下角不同。 4.长宽之和相同(周长相同)。 5.长宽之差互为相反数(一个长减宽,一个宽减长)。 我们可以证明一下两个矩形如果互为满足2.3.4.5.条的友矩阵,一定是左上角重合一个横着一个竖着
阅读全文
摘要:A 四舍五入 link 求{ \(i/j\) } $ < 0.5$ ({}是取小数),即\(i/j-\lfloor i/j \rfloor < 0.5\),两边同时乘\(j\),\(i-\lfloor i/j \rfloor j < 0.5j\),会发现(别问怎么发现的)左边就是\(i\) % \(
阅读全文
摘要:A link 如果想要\(x_1+y_2=x_2+y_1\),就是\(x_1-x_2=y_1-y_2\)即可,那么我们可以存一下每一个\(i\)的\(x\)与\(y\)的差,每到一个\(i\)就看一下前面有几个的差和它相等,这一个就可以和多少个组上对。 点击查看代码 #include<bits/st
阅读全文
摘要:A link 判断。 点击查看代码 #include<bits/stdc++.h> using namespace std; signed main(){ int l,r; cin >> l >> r; if(l == 1&&r == 0) cout << "Yes"; else if(l == 0
阅读全文
摘要:A link 判断\(A\),\(B\)之间可不可以放一个数,如果可以就是\(3\)个,不行就是\(2\)个(左右),但是如果\(A\),\(B\)相等就只有一个。 点击查看代码 #include<bits/stdc++.h> using namespace std; signed main(){
阅读全文
摘要:A link 先输出后面,在输出前面。 神奇的代码 #include<bits/stdc++.h> using namespace std; int n,k; int a[105]; signed main(){ cin >> n >> k; for(int i = 1;i <= n;++ i){
阅读全文

浙公网安备 33010602011771号