摘要: CF1239E Turtle 通过观察我们会发现,第一行一定单调递增,第二行一定单调递减,否则不是最优。再次前提下,乌龟的最优方案只有两种,要么一直向右,最后向下,要么先向下,再一直向右。因此,我们将最小的两个数字放在左上角和右下角,然后把余下数字填入剩余位置,并希望下式最小 显然,这是一个背包问题 阅读全文
posted @ 2023-06-20 11:43 DPD 阅读(22) 评论(0) 推荐(0)
摘要: [AGC028D] Chords 题意:给定一个圆, 圆上均等地放着 2n2n 个点, 已有 kk 对点之间连好了线段, 从中选择剩下 n−kn−k 对点随意连线段(每个点只连一条线段). 两点联通当且仅当两点在同一条线段上或两点所属于的线段相交, 求所有连边方案中, 联通块的个数和. 对于圆/正多 阅读全文
posted @ 2023-06-19 12:00 DPD 阅读(22) 评论(0) 推荐(0)
摘要: [AGC034E] Complete Compress 考虑这道题之前,我们先想一个经典问题: 对于一颗有根树,每个节点上可能放一颗棋子,且不同子树上的棋子可以相互抵消。那么,我们设maxson为最大子树包含的棋子数,sun【root】为root的所有子树的棋子总数,很容易得到,如果sum【root 阅读全文
posted @ 2023-06-19 08:54 DPD 阅读(16) 评论(0) 推荐(0)
摘要: P4145 上帝造题的七分钟 2 / 花神游历各国 这道题解法很多,但我主要想提一下势能这个概念。 就像重力势能一样,一个物体只会往下落,且到达零势面之后不会再继续往下落(虽然和真实情况有出入) 因此,我们往往可以利用这个特性,来减少许多不必要的操作; 对于这道题而言,我们发现一个数如果已经开到1, 阅读全文
posted @ 2023-06-18 22:38 DPD 阅读(16) 评论(0) 推荐(0)
摘要: CF888F Connecting Vertices 题号很吉利 我们把这个正多边形展开成一条线段,转化成经典区间DP问题。毕竟n3的算法也不是很多 然后,对于题目中要求两条连线不能相交,相当于线段上的两个区间要么相离,要么相切,要么包含。对于不能连的两个点,在DP的时候特判一下就行。 #inclu 阅读全文
posted @ 2023-06-18 22:10 DPD 阅读(8) 评论(0) 推荐(0)
摘要: UVA12716 GCD等于XOR GCD XOR 一道数学题。 首先,我们可以知道,a-b>=gcd(a,b)=c; 其次,a-b<=a xor b=c; 综上,可得a-b=c,即a-b=a xor b. 由于范围不大,直接枚举。 第一层枚举c(因为c较少),第二层枚举a,(b=a-c) 再判断c 阅读全文
posted @ 2023-06-18 21:59 DPD 阅读(14) 评论(0) 推荐(0)
摘要: [ABC282Ex] Min + Sum 一道分治题。比较新的地方在于,别的题都是按中点为M分治,而这道题是按最小值为M分治。记录b的前缀和sum。【L,R】最小值为M,则分为【L,M-1】,【M+1,R】。 #include<bits/stdc++.h> using namespace std; 阅读全文
posted @ 2023-06-18 21:52 DPD 阅读(46) 评论(0) 推荐(0)
摘要: CF598E Chocolate Bar 一道简单的DP,虽然用搜索写的。我们用f(i,j,z)表示把X×Y的巧克力分成总大小为Z的小块所需最小代价。每次掰开的方式有两种,横着掰和竖着掰,故有两种转移。 #include<bits/stdc++.h> using namespace std; int 阅读全文
posted @ 2023-06-18 21:39 DPD 阅读(38) 评论(0) 推荐(0)