![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维
文章平均质量分 74
Dousir9
ACMer
展开
-
Codeforces Round #712 (Div. 2) E. Travelling Salesman Problem【思维 | DP】
题意:给定 nnn 个城市,编号从 111 到 nnn,第 i 个城市的美丽值为 aia_iai,一个销售员想从城市 111 出发,经过其他城市至少一次且仅一次,最后返回城市 111,对于两个城市 i,j(i≠j)i,j (i ≠ j)i,j(i=j),从 iii 到 jjj 花费的费用为 max(ci,aj−ai)\max(c_i, a_j - a_i)max(ci,aj−ai),找到完成整个过程的最小费用。1≤n≤105,0≤ai,ci≤1091 ≤ n ≤ 10^5,0 ≤ a_i原创 2021-04-08 16:43:32 · 208 阅读 · 1 评论 -
CH0501 货仓选址 | Codeforces Round #703 B. Eastern Exhibition【中位数】
CH0501题意:在一条数轴上有N家商店,它们的坐标分别为 A[0]~A[N- 1]。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。N<=100000, A[i]<=1000000。CH0501思路:本题我们可以利用中位数的性质来解决,将 A[0] ~ A[N - 1] 排序,设货仓建在 X 坐标处,X 的左侧商店有 P 家,右侧 Q家,若 P < Q,则把货仓向右移动移动 1 单位原创 2021-02-20 21:43:15 · 239 阅读 · 0 评论 -
Educational Codeforces Round 104 C. Minimum Ties【思维】
题意:n 支球队比赛,每支球队之间进行一次比赛,若平局,则双方各加一分,否则赢的球队加 3 分,输的不加分,问怎么设置输赢让各个球队的分数相同且平局的数量最少。t 组数据,每组 2≤n≤1002 \le n \le 1002≤n≤100。思路:由题意得,每支球队要与其他球队进行 n−1n - 1n−1 次比赛,若 n 为奇数,显然最优的情况应该是每支球队赢一半输一半平局次数为0,若 n 为偶数,那么每支球队输赢都是 ⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n⌋,平局次数原创 2021-02-20 19:30:50 · 128 阅读 · 0 评论 -
Codeforces Round #701 (Div. 2) D. Multiples and Power Differences【LCM | 思维】
题意:给定 n 行 m 列正整数组成的矩阵 a,构造一个矩阵 b,满足如下条件:(1) 1≤bi,j≤1061 \le b_{i,j} \le 10^61≤bi,j≤106;(2) bi,jb_{i, j}bi,j 是 ai,ja_{i, j}ai,j 的倍数;(3) 相邻(共享同一条边)两个数之差的绝对值等于 k4k^4k4,其中 k≥1k ≥ 1k≥1。其中 2≤n,m≤5002 \le n,m \le 5002≤n,m≤500,1≤ai,j≤161 \le a_{i,j} \le 161≤ai原创 2021-02-18 22:28:13 · 91 阅读 · 0 评论 -
Codeforces Round #701 (Div. 2) C. Floor and Mod【数论 | 整除分块】
题意一对正整数 a,b 如果被称为 special ,则要满足 ⌊ab⌋=a mod b\lfloor \frac{a}{b} \rfloor = a \bmod b⌊ba⌋=amodb。给定两个数字 x,y,找到 special 的 (a, b),其中原创 2021-02-17 21:51:21 · 131 阅读 · 0 评论 -
Codeforces Round #701 (Div. 2) A.Add and Divide【思维】
题意:给定数字 a、b,可以进行如下两种操作:(1)a=⌊ab⌋a = \lfloor \frac{a}{b} \rfloora=⌊ba⌋;(2)b=b+1b = b + 1b=b+1,问最少进行多少次操作才能将 a 变为 0,有 t 组数据。1≤a,b≤1091 \le a,b \le 10^91≤a,b≤109,1≤t≤1001\le t \le 1001≤t≤100。思路:假定进行 x 次 1 操作,y 次 2 操作,一定是先把 2 操作进行完了之后才进行 1 操作。考虑最差的情况,a原创 2021-02-14 19:59:12 · 1252 阅读 · 4 评论 -
Educational Codeforces Round 94 (Rated for Div. 2) D. Zigzags【枚举 | 统计技巧】
题意:给出一个数组 a1,a2…ana_1, a_2 \dots a_na1,a2…an,计算满足下列条件的元组 (i,j,k,l)(i, j, k, l)(i,j,k,l) 的个数:1≤i<j<k<l≤n;1 \le i < j < k < l \le n;1≤i<j<k<l≤n;ai=aka_i = a_kai=ak and aj=al;a_j = a_l;aj=al;其中:4≤n≤30004 \le n \le 3000原创 2021-02-04 23:14:02 · 94 阅读 · 0 评论 -
Codeforces Round #696 (Div. 2) D.Cleaning【思维 | 枚举】
题目链接题目描述:给定一段数字序列,有一种操作是让相邻的两个数都减1,可以操作无限次,还有一种超级操作:在普通操作前让交换两个相邻的数,超级操作可以有0次或者1次,问是否可以将数字序列全都变为0。题解:遇到这种问题,可以先想想分情况考虑。考虑不使用超级操作的情况,令a为原数列,令b[0] = a[0], b[1] = a[1] - b[0], b[2] = a[2] - b[1], …, b[i] = a[i] - b[i - 1],若最终b[n - 1] = 0且b[i]都不小于0,则“YE原创 2021-01-22 20:35:02 · 142 阅读 · 2 评论 -
Codeforces Round #655 C.Omkar and Baseball【思维】
题目链接题目描述:给一个1 ~ N 的排列,可以进行“特殊交换”操作,所谓特殊交换,就是选择一个子区间,然后然后对区间内的数进行重新排列,所有的数排列后不能在原来的位置,问至少要执行多少次特殊操作才能使这个排列变成 1 2 3 … n。题解:显然,若排列已经有序,那么操作次数为0若排列中所有的数都不满足a[i] = i,即所有的数都不在最终的位置(最终的位置指的是排列变为有序:a[i] = i),这显然只需要一次特殊交换。对于其他情况,至多需要两次,下面进行证明:对于一个排列,假设它有偶数个原创 2020-10-12 16:38:56 · 96 阅读 · 0 评论 -
EOJ Monthly 2020.9 C. 最小表示【DP | 思维】
题目链接题目描述做法1(差分+DP):有样例我们可知,连续的 1 可以变为一个 1 和 -1,但是也有反例,例如1110111,如果按照这样的话会变为1 0 0 -1 1 0 0 -1,共需要 4 个,但是其实正确的答案是 1 0 0 0 -1 0 0 -1,即将中间的 -1 和 1 合并成 -1,同理 1 -1 也可以合并成 -1,所以我们可以用类似于差分的方式将原数列变成差分的形式,然后进行动态规划,将能合并的进行合并,令dp[i]表示前 i 个位需要非零元素的数量,状态转移方程如下:a[原创 2020-10-10 21:46:31 · 92 阅读 · 0 评论 -
蓝桥-算法训练 ALGO-116 最大的算式【区间DP】
题目链接题目描述:给出 N 个数字(0 ~ 9),在不改变他们顺序的情况下,加上 K 个乘号和 N - 1 - K 个加号,问最大值,其中 2 <= N <= 15, 0 <= K <= N - 1。题解:状态设计为 dp[i][k] 表示 1 ~ i 个数中插入 k 个乘号的最大值,对于一个区间,我们向其中插入一个乘号时(我们向每个元素前面插入乘号,即下标为 2 ~ N 前面都能插入乘号),我们要枚举乘号的位置才能知道插入在哪最优,所以对于一个区间,我们要知道插入位置前面原创 2020-10-07 20:31:08 · 129 阅读 · 0 评论 -
POJ 2279 Mr. Young‘s Picture Permutations【线性DP】
题目链接题目描述标号为 1 ~ N 的同学站成 k 行,每行人数为 aia_iai,规则入下图所示,同一行标号从左向右递增,同一列标号从后向前递减,前面的列数不长于后面的列数,问方案有多少种。题解:满足两个方向的递增:因为在合法的方案中,每行每列都是递增的,所以我们可以考虑从标号 1 到 N 开始放,对于同一行的递增,后放的一定大,满足了从左到右递增;对于同一列的递增,后放的也一定大(要满足这一列的行是最后一行或者要放的这一行同一列后面的行已经放了数),这满足了从后向前递增。满足前面行数不大原创 2020-10-07 12:45:20 · 153 阅读 · 0 评论 -
Codeforces Round #674 E. Rock, Paper, Scissors【数学 | 最大流 | 思维】
题目链接题目描述A 和 B 进行石头剪刀布游戏,共进行 n 个回合,其中 A 出 a1a_1a1 次石头,a2a_2a2 次剪刀,a3a_3a3 次布,B 出 b1b_1b1 次石头,b2b_2b2 次剪刀,b3b_3b3 次布,问 A 最多获胜的次数和最少获胜的次数。最大流做法:min:You can link the source to A’s options (2-rock, 3-scissors, 4-paper) with their respectives capacit原创 2020-09-30 09:35:11 · 160 阅读 · 0 评论 -
Codeforces Round #674 D.Non-zero Segments【前缀和 | set】
题目链接题目描述:题解:好题啊~不知道为啥,我感觉用英文比中文写题解更简洁。Firstly, let’s understand that the sum of the segment [l;r][l;r][l;r] is zero if pr−pl−1p_r-p_{l-1}pr−pl−1 is zero (in other words, pl−1=prp_{l-1}=p_rpl−1=pr), where pip_ipi is the sum of the first iii ele原创 2020-09-28 23:03:02 · 163 阅读 · 0 评论 -
蓝桥-算法训练 ALGO-2 最大最小公倍数【思维】
题目链接题目描述:已知一个正整数N,问从 1 ~ N 中任选出三个数,他们的最小公倍数最大可以为多少,1≤ N ≤ 1e6。题解:考虑两个数 a, b 的最小公倍数,当 a、b 互质时他们的最小公倍数为 a * b,由常识我们知道,相邻的两个数一定互质,本题让从 1 ~ N 中选 3 个数,所以越往大里选越优。当 n 为奇数时,n 与 n - 1, n 与 n - 2 互质,答案就是n * (n - 1) * (n - 2),当 n 为偶数时,n 与 n - 2 有公因子 2,所以如果还是按原创 2020-09-24 22:10:43 · 87 阅读 · 1 评论 -
CH 0102 64位整数乘法【快速幂思想 | 数学】
题目链接题目描述:求 a 乘 b 对 p 取模的值,其中 1 ≤ a, b, p ≤ 101810^{18}1018。题解:我们观察到,乘的时候很容易爆long long,我们又看到数据范围比较特别,1181^{18}118 乘以2后也没到 263−12^{63} - 1263−1 (9.2233720368548e+18),所以我们可以把 b 利用类似于快速幂的思想用二进制表示,即:b=ck−12k−1+ck−22k−2+...+c020b=c_{k-1}2^{k-1}+c_{k-2}2^{原创 2020-09-22 19:51:26 · 228 阅读 · 0 评论 -
洛谷 P1342 请柬【Dijkstra | 反向建图】
题目链接小记:昨天一个学长面试中科院,其中有一道机试的题目就类似这道题,特此学习一下,希望明年的我也能保研成功,加油!题目描述:给一个有向加权图,求从编号为 1 的点向其他点 x 走并走回1的最短路径,这样的 x 很多,求它们的最短路径和。题解:可以把路径和分成两部分:从 1 到 x 们和 从 x 们 到 1,对于从 1 到其他点的最短路径和只需要跑一遍最短路,把数组 dis 累加即可;对于从其他点到 1 的最短路径和,可以反向(边的方向反向)建图跑一遍最短路,然后对 dis 数组就和。原创 2020-09-21 21:38:33 · 216 阅读 · 0 评论 -
CF #670(div2B) Maximum Product【思维】
题目链接题目描述:给定一个数组 a,数组 a 的大小为 n (n≤2∗105n ≤ 2 *10^5n≤2∗105),数组 a 的元素大小为 [−3∗103,3∗103][-3*10^3,3*10^3][−3∗103,3∗103],现在拿出其中 5 个数,求这 5 个数相乘的最大值。题解:对于求这 5 个数相乘的最值,我们可以用两个数组 mx 和 mn,mx[i] 表示用 i 个数组成的最大值,mn[i] 表示用 i 个数组成的最小值。一开始将 mx[0] = mn[0] = 1,将 mx 和 mn原创 2020-09-13 22:15:56 · 116 阅读 · 0 评论