![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维
文章平均质量分 64
MoYingo
菜狗
展开
-
单调队列一些不成熟的想法
单调队列一些不成熟的想法前言从ABC234G,想要把一个DP优化到线性,了解到了单调队列优化这种方法,在模板题上花了不少时间,感觉这是一个挺抽象的思想。对单调队列的一些感性认识从经典的滑动窗口入手,为了快速得到一段区间的最值,我们维护一个单调的双端队列。它首先具有单调性,并支持头的删除,和尾部的增加。我们规定,单调队列中的元素有这样的特点元素之间具有单调性元素下标是单调递增的(因为增加不会改变这些元素的相对位置)队列中只允许存在K个元素(K是查询区间长度,如果单调队列中元素数量超过K,一原创 2022-01-15 00:06:36 · 134 阅读 · 0 评论 -
POJ2431 Expedition(优先队列+贪心)
Expedition题目一个人骑车跑一段路程,一分钟消耗一个单位的油,路上有一些加油站,可以加一定单位的油,问如果想跑到终点,加油的最小次数是多少。思路最优解问题,本题考虑贪心即可。贪心策略为如果无法到下一个站点在以到达的范围内优先加提供最大的加油站点。证明:n = 1 时显然是成立的,考虑前n个加油站该方案成立,现在要前往n+1个点,如果可以到达,显然不用更新答案,不可以到达,从前n个站点选择最大的未被使用的站点加油即可。这确实是一个最优解。代码实现,可以用一个优先队列维护可选站点,每次原创 2021-09-25 20:24:20 · 114 阅读 · 0 评论 -
CCF202012-2(前缀和+二分)
期末预测之最佳阈值题目n个学生,每个学生有一个阈值和一个结果,结果有0,1两种选择,现在可选择阈值进行判断大于阈值取1,小于取0,问预测结果正确的次数最多的阈值是谁,如果预测次数相同,输出最大的阈值。思路结果和数据输入无关可排序,且如果有序,那么显然该阈值左侧预测结果为0,右侧为1,因此可以在排序后预处理出0,和1出现的次数,之后次数就是0,1个数和。考虑到有阈值相同的情况,此时我们要的结果仅应得到第一个和他相同的阈值,可以用二分查找得到第一个相同的元素AC代码时间复杂度:O(nlog原创 2021-09-18 23:14:32 · 161 阅读 · 0 评论 -
Educational Codeforces Round 113 (Rated for Div. 2) C. Jury Meeting(思维+数学)
C. Jury Meeting题目n个人发言,每个人都可以分一个次数,轮流发言,次数用尽就跳过,求有多少的分配排列可以使没有一个人连续发言。没有输出0.思路先考虑怎样的次数序列总不合法,对于序列最大值maxmaxmax,如果它很大显然会有人连续发言,现在找到这个“大的界限”。因为每一轮都会使发言次数减一,并且如果连续发言,此时一定只有一个次数非零的人,也就是说只要有一个人能充当“间隔” , 就不会使得人连续发言。因此考虑最大值aaa和第二大值bbb的关系。当a=ba=ba=b时,显然在原创 2021-09-09 23:39:20 · 159 阅读 · 0 评论 -
Codeforces Round #742 (Div. 2) D. Expression Evaluation Error(思维+模拟)
D. Expression Evaluation Error题目把一个十进制数拆成n个数,再转成十一进制,加起来,问使得这个十一进制最大的构造方案。思路通过模拟样例发现个位数字不会对答案起到任何增加作用,而越高位,增加作用越大(个位增加0,十位增加12,百位增加113−10311^3-10^3113−103······),因此可以发现这是一个贪心。由上得出贪心策略为在拆分中尽可能的保证高位不变,或者说保证拆出来的高位数字尽可能的多。首先我们要明确,拆分后不可能使某一位数字凭空增加,那么,原创 2021-09-07 11:03:58 · 96 阅读 · 0 评论 -
Codeforces Round #742 (Div. 2) C.Carrying Conundrum(思维奇偶讨论)
C. Carrying Conundrum题目左加法时让进位整体右移一位,给出这样算出的结果,求所有可以得到这样结果的方案数。思路考虑到这样算的话,总是奇数位只能得到上一个奇数位进位,偶数位同理,也即奇数位和偶数位是独立的可以分开考虑。对于单独的奇数位或偶数位,符合正常的加法运算法则,因此可以简单得到所有的加法组合,所以奇数位的方案乘以偶数位的即可,而又因为对于和sumsumsum不允许sum+0=sumsum+0=sumsum+0=sum的情况存在,故而还要再减2.所以,拆分一下奇偶位,原创 2021-09-07 11:02:17 · 91 阅读 · 0 评论 -
2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛 Command Sequence(思维+hash+查找区间和为0的map优化)
Command Sequence题目给一串命令,让机器人按它走,求有多少个子命令使机器人回到原位.思路回到原位则 sumL=sumR,sumU=sumDsum_L = sum_R , sum_U=sum_DsumL=sumR,sumU=sumD.由上,本题和命令集的前缀和有关,因此,为方便处理前缀和,我们令R⇒1,L⇒−1,U⇒1e6,D⇒−1e6R ⇒ 1,L ⇒ -1,U ⇒ 1e6 , D⇒ -1e6R⇒1,L⇒−1,U⇒1e6,D⇒−1e6.(本题数据规模2e52e52e5原创 2021-09-05 22:52:23 · 207 阅读 · 0 评论 -
2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛 Cut The Wire(思维)
Cut The Wire题目有从1开始无限长的点.每个点被线链接,保证i是偶数,i和i/2链接i是奇数,i和3*i+1链接给出n,求a链接b的线段数,保证 所有a<=n,所有b>n思路根据连接规则,显然分奇偶讨论对于偶数x,只有 n-n/2 条线满足对于奇数x,发现n每向右移动3位,满足要求的最左边点左移一位,所以可得到左边界,找出这个区间里的所有奇数就可以AC代码#include <bits/stdc++.h>#define inf 0x3f3f3f原创 2021-09-05 19:44:57 · 432 阅读 · 0 评论 -
Codeforces Round #741 (Div. 2)(A-D1)(结论抽奖场)
Codeforces Round #741 (Div. 2)抽奖一样的一场。。。而且打的时候好困···A找一个区间里 a%b 的最大值打表后猜出来的,数学苦手,不会证#include <bits/stdc++.h>#define inf 0x3f3f3f3f#define ll long long//#define int long longusing namespace std;typedef pair<int,int> PII;const int N =原创 2021-08-27 13:15:45 · 73 阅读 · 0 评论 -
E. Polycarp and String Transformation(思维 + 模拟)
E. Polycarp and String Transformation题意给2个串s,t,进行这样操作:t += s选择一字符“x",删去s中的所有”x"重复 直到s为空串现在给出 操作后的串 t,求原串s和删除顺序思路删除顺序从后往前很好扫一遍t就可以找到。关键在于如何确定s的长度。因为我们已知删除顺序,对于某字符c在第i次删除 在s中出现r次,可以想到c将在t中出现 r*i 次,那么我们只需再统计t中各字符出现次数 ,就可以求出 总长度了之后为了判断某些不存在的情况 再模拟一原创 2021-08-26 21:50:47 · 156 阅读 · 0 评论