上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 27 下一页
摘要: 洛谷传送门 解题思路 先用类似dp预处理出is[l][r]表示l到r这个区间是不是回文串。 然后在把is数组放到二维平面上,每次询问l,r实际上就是询问(l,l)到(r,r)这样一个矩阵的点的数量。 可以用二维前缀和处理出来,O(1)查询。 AC代码 #include<cstdio> #includ 阅读全文
posted @ 2021-09-26 08:36 尹昱钦 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 洛谷传送门 解题思路 最朴素的 dp 为:\(dp_{i,j}\) 为前 \(i\) 个数选 \(j\) 个方案数。 \(O(n^2)\) 的时空复杂度,很显然会炸,所以需要优化。 先考虑空间,第一维可以滚动数组滚掉,因为选的第 \(j\) 个数与上一个数是什么没关系。 再考虑时间上,尝试对于每个 阅读全文
posted @ 2021-09-26 07:24 尹昱钦 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 偶然学到了对拍的正确打开方式。 当然不只限于对拍,也可以偷懒用来测试样例。 首先应该写一个对拍程序: for(int i=1;i<=300;i++){ system("数据生成.exe > data.txt"); system("正解.exe < data.txt > ans.txt"); syst 阅读全文
posted @ 2021-09-26 06:18 尹昱钦 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 传送门 总述 比赛中过了4/6,rank26。 罚时感觉还是蛮多的~~(跟我一个oier有什么关系)~~。 最后一个题贪心贪错了,貌似如果是oi赛制会有60分。 A.牛牛吃米粒 考虑按二进制位拆分。 只要有一位不能满足要求,则输出NO。 #include<cstdio> #include<iostr 阅读全文
posted @ 2021-09-25 09:40 尹昱钦 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 不得不说,这题恶心到我了,调了一个多小时。 第一次高精度把运算等写在struct里面,感觉良好。但是一定要注意初始化。 再就是高精乘高精最后的位数是两个位数相加,而不是相乘。 AC代码 #include<iostream> #include<cstdio> #include<cst 阅读全文
posted @ 2021-09-24 18:34 尹昱钦 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 我们发现若一个原数i经过若干次op操作后能变成另一个原数j,则i没有存在的必要了(因为j更优)。 于是对于每一个ai,就能找到最小的一个原数(这个也是“性价比”最高的原数)。 因为原数数量很少,所以可以用二进制位来表示,假设消灭一个数字用到的是第i个原数,则将这个数字的值赋为2^i 阅读全文
posted @ 2021-09-24 15:26 尹昱钦 阅读(84) 评论(0) 推荐(0) 编辑
摘要: //第300篇博客祭QAQ 传送门 解题思路 挺好的一道题。 首先可以观察到,若按照水流方向建边,则整张图是个DAG。 第一步:建图。 令水池(0号店)为根。先用单调递减栈求出每个圆盘下面第一个比他大的圆盘,很显然水就往那里流,将这两个点之间连边,最后0号店向栈中剩下元素连边。 第二步:预处理ST表 阅读全文
posted @ 2021-09-24 11:09 尹昱钦 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 从前往后维护一个严格单调递减栈,在弹出元素和入栈的时候更新答案。 但是要注意两人身高相等的情况,所以要记下某元素的个数。 细节还是蛮多的。 AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<cma 阅读全文
posted @ 2021-09-24 09:26 尹昱钦 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 和上一道题基本相同。 但是这个题题面是真的复杂,读了好久才读懂。 关键在于如何建图。 将在第0列可以看做第0个点,第n列可以看做第m+1个点。 这两个特殊的点到其他点的距离为点线垂直距离,其他的点之间的距离为点点距。 还有不同的地方就是两个信号塔之间的距离是两个半径,而0点和m+1 阅读全文
posted @ 2021-09-24 08:29 尹昱钦 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 两种方法: 方法一: 直接按照Kruskal的方法求最小生成树,求的过程中s和t刚刚联通时加的边的大小即为答案。 方法二: 先二分答案,然后跑一遍最短路,要求只能走边权小于二分值的边。 AC代码 #include<cstdio> #include<iostream> #includ 阅读全文
posted @ 2021-09-24 06:18 尹昱钦 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 其实很简单的一个单调栈就可以解决的题,题解里的做法都写的很麻烦。 建立一个强制不为空的单调递减栈,然后运用扫描线的思想可以快速求出面积。 强制不为空是为了保证最左端一定要有柱子。单调递减是因为受到影响某个区域能否存储水的是左面和右面最高的柱子中的最小值。 可以借助下图进行理解: 分 阅读全文
posted @ 2021-09-23 21:35 尹昱钦 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 洛谷传送门 解题思路 方法一: 发现l和r特别大,但是a特别小。 于是令 \(l=0,r=10^{100}-1\),算出一个sum。 然后发现若l和r同时加上一个数x,最后的sum也加上了x。 所以只要我们算出原来的sum与a的差,然后l和r同时加上这个差就完成了。 sum怎么算? 0~9每个数字出 阅读全文
posted @ 2021-09-23 09:44 尹昱钦 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 洛谷传送门 解题思路 按mask二进制位,把物品分类。 设sum[i]为mask共有i位的物品的val的和。 因为若答案的第i位为1,对mask小于i位的物品是没有影响的。 于是我们从低位向高位枚举,这样就保证了后面的决策不会影响前面已经决定了的状态。 因为只要求答案变成相反数,所以只要每一个sum 阅读全文
posted @ 2021-09-23 08:36 尹昱钦 阅读(37) 评论(0) 推荐(0) 编辑
摘要: ##传送门 //别问我为什么现在才发,刚刚翻存库发现了这坑还留着E题没填,懒得填了所以就改成A到D题发上了。。。 ##总结 感觉还好,赛场上A了ABCD题,E题想出来了思路但没来得及实现。 ABCD感觉全是思维题,用不到什么高级算法。 ##A. Contest Start(数学) 洛谷传送门 模拟一 阅读全文
posted @ 2021-09-23 07:20 尹昱钦 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 洛谷传送门 解题思路 在图上很难做这种构造题,所以一种常用的方法是求出其生成树。 在生成树上做就容易很多。 于是这个题就按照 dfs 序建立一颗生成树,记录下每个节点的返祖边。 于是第一问可以根据树的深度判断是否符合要求,符合的话直接输出。 若没有,则易证第二问一定成立: 因为第一问不成立,所以叶子 阅读全文
posted @ 2021-09-22 22:52 尹昱钦 阅读(29) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 27 下一页