上一页 1 ··· 56 57 58 59 60 61 62 63 64 ··· 130 下一页
摘要: 官解的方法二就是这篇博客(注意要先将\(a\)从小到大排序),补充一下,博客中说当\(a_j-j+1<0\)时,我们就找第\(j-a_j\)列的那个房子即可 我在做的时候,也想到了逐个构造的方法,然而我在构造新的一列时,却总是想让这一列的房子与前一列的房子来配对,事实证明,我们构造的时候不要拘泥于数 阅读全文
posted @ 2024-07-07 14:38 最爱丁珰 阅读(26) 评论(0) 推荐(0)
摘要: 也不知道怎么想到的,反正放在对角线是没有什么问题的 就往特殊的想吧 当时的心路历程是这样的:肯定要利用\(a_i\)为偶数嘛,于是就想偶数是怎么走出来的,可以知道如果路线走成\(L\)形且\(L\)的两条直线长度相等(或者其旋转)那么就是偶数,于是就可以想到放在对角线上 阅读全文
posted @ 2024-07-07 13:43 最爱丁珰 阅读(10) 评论(0) 推荐(0)
摘要: 这里主要想一下怎么简化讨论 由于在同一块长方形中,横着走不用花费,于是我们可以统一地将\(S,T\)所表示的正方形,都变成其所在的长方形的左边一个正方形,这样发就好表示了,也就是这篇题解 阅读全文
posted @ 2024-07-07 10:11 最爱丁珰 阅读(10) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2024-07-06 22:16 最爱丁珰 阅读(5) 评论(0) 推荐(0)
摘要: 我只能说,打表也是构造的一种 update 2024.8.19 打表的话肯定不是把所有可能的字符串(最多有\(2^{90}\)种)全部写出然后循环枚举,而是应该直接随机生成\(n\)个字符串,然后判断 提醒一下,如果用map判重,template不要写<char *,bool>,好像是char *只 阅读全文
posted @ 2024-07-06 21:27 最爱丁珰 阅读(33) 评论(0) 推荐(0)
摘要: 这道题目感觉还可以这么做(没试,有空了试一下) 尝试利用数据结构优化 看转移方程: \[f[i]=min_{sum_i-sum_j≤M}(f[j]+max_{j+1≤k≤i}(A_k)) \]显然当\(i\)加一后,可以利用单调栈去找那些\(j\)的后面一项贡献max要改变,再利用线段树维护即可 u 阅读全文
posted @ 2024-07-05 12:42 最爱丁珰 阅读(13) 评论(0) 推荐(0)
摘要: 可以严格证明一下蓝书上说的“\(l\)~\(r\)的每一堆石子都被合并了” 利用数学归纳法,假设某一时刻的每一堆石子都是由最开始连续的一堆石子合并而成的(比如说现在有三堆石子,分别是由最开始的第一到第三堆,第四到第五堆,第六到第十堆组成),那么接下来的合并操作无论合并哪两堆,最终得到的每一堆石子仍然 阅读全文
posted @ 2024-06-28 20:20 最爱丁珰 阅读(13) 评论(0) 推荐(0)
摘要: 经过多次试验,我发现虚函数应该是这个意思 对于任何一个类,无论是不是虚函数,所绑定的函数都是这个类里面的函数(这个叫做“隐藏”),比如下面的代码 class A { public: void f() { cout<<1<<endl; } void g() { cout<<2<<endl; } vir 阅读全文
posted @ 2024-06-27 11:56 最爱丁珰 阅读(14) 评论(0) 推荐(0)
摘要: 这里要提醒一点,如果用刷表法,是不要用类似“最长公共上升子序列”这道题目的优化方法的,因为我们求的不是从当前状态到下一阶段的最优的状态,而是要用当前状态去更新下一阶段的所有状态,所以必须枚举下一行选择的左/右端位置所在的列,而不是用上面提到的方法优化到\(O(N^6)\) 阅读全文
posted @ 2024-06-25 16:08 最爱丁珰 阅读(10) 评论(0) 推荐(0)
摘要: 将这个凸多边形编号,如下 对于任意一种划分,边\((1,n)\)一定属于且只属于一个三角形,考虑这个三角形的另一个顶点为\(k\),于是有递推公式: \[f_n=\sum_{i=2}^{n-1}f_i\times f_{n-i+1} \]可知为卡特兰数 阅读全文
posted @ 2024-06-18 12:55 最爱丁珰 阅读(43) 评论(0) 推荐(0)
上一页 1 ··· 56 57 58 59 60 61 62 63 64 ··· 130 下一页