- 博客(7)
- 收藏
- 关注
原创 ICPC南京 B. Ropeway 单调队列DP
引入了“某些位置的支撑塔必须选取”这个概念,在DP中意味着,要将双端队列中的元素全部清空。所以遇到难题除了正解以外,准备一份暴力程序和makedata程序也是有必要的。因为i必须选取,所以显然不能从i之前的位置转移(因为这样位置i就不会被选取)代码虽然不长但是细节很多,也调试了很久。造了数据和标程比对才发现错误。所以是在单调队列DP的模板上作了修改。单调队列DP的变形。
2023-02-26 02:07:06
318
原创 C. Klee in Solitary Confinement
主要考察对vector的使用Problem - C - Codeforces题意概括:给你一段序列,要求你将l到r区间内的数全部加K,这个l和r可以由你任意取。最后求所有可能的方案中众数的最大个数。我们可以理解为x和x+k只能选择其中之一。当然必须选连续的一段。然后我们可以知道最后的众数一定是序列a的其中一个,枚举这个数字,然后用vector v[x]储存可以变成x的所有数,也就是x和x-k,然后这个最大众数可以用类似前缀和的方式快速计算出。(就是遍历然后求左边的最大值,详情见代码)综合复杂度不超过2*n由
2022-12-04 21:35:30
340
原创 The 2021 CCPC Guangzhou Onsite C. Necklace
二分很简单,主要是怎么贪。我的方法是从如图1号节点开始,尽可能向右贪心,如果max_len超出了,就把项链整体往左移动,这样可以保证利用到的max_len最大,也就是尽可能减少浪费。由于必须保证每段项链都包含恰好一个美丽宝石,所以项链是无法无限地整体向左移动的。用move记录能向左移动的最大距离,每次分段时都要更新。最后要判断一下第一段项链和最后一段项链能不能连接上。
2022-11-28 01:17:53
356
1
原创 洛谷 P1824 进击的奶牛
二分模板,记不清时来参考吧。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<iomanip>#include<cstring>#include<climits>#include<cmath>#include<string>#include<algorithm>using namespace std;#define go(i,a,b)
2022-05-20 23:34:56
241
原创 Codeforces Round #792 (Div. 1 + Div. 2) C. Column Swapping
Problem - C - Codeforces心情郁闷,比赛的时候想到思路没写出来。思路一眼秒,只需要sort一下,然后检查哪些位置与sort前不同,这些位置就是要交换的位置,设为l,r。设某一行要交换的位置为cnt1. cnt>2,则 -12. 若所有行cnt都为0,则 1 13. 若所有行cnt都为2,且满足l和r位置相同,则可行4. 若部分行cnt都为2且满足l和r位置相同,其他行cnt都为0,且满足a[l]==a[r],则同样可行可以证明cnt != 1因为n
2022-05-20 13:17:00
264
原创 CF786-D ABC-SORT
Problem - D - Codeforces贪心。从A的末端插到B的中间,再从B的中间插到C的末端。可以证明,A->B的过程中,插到中间的左边,和右边的结果是一样的又因为A->B先插入的,B->C先取出。B->C若长度为偶数可以从中间两个中取较小的。所以只考虑末尾的两个数即可,使用vector进行插入和删除操作,由于只对末尾进行操作,故复杂度为O(n)最后检查是否为non-decreasing即可代码如下#define _CRT_SECURE..
2022-05-19 19:30:29
186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人