- 博客(119)
- 收藏
- 关注
原创 CSES Missing Coin Sum
就代表S[i - 1] + 1是不能被合成出来的数字。假设 [1,i - 1]能表示1~X,那么加入。排序过后的枚举是为了依次找到最小的几个数字。
2025-02-01 16:20:39
368
原创 C++ set multiset 的lower_bound 改成 小于等于X的方法
如果把set逆序,那么lower_bound就能起到查找小于等于x的作用。
2025-01-29 22:53:52
98
原创 2034 C. Trapped in the Witch‘s Labyrinth
但是会遇到该情况,当前DFS走过的路径如果再走到,意味着出现环。但是如果遇到了之前走过的路径(非本次DFS搜索到的),就直接利用该路径的结论。但是这两种情况代码写起来会混淆,所以用了一点细节,每次走的时候都默认给其标记为是1,最后回溯回来如果能走出,再更新为0。一个矩阵,每个元素标有方向,人可以从任意一个位置出发,如果该位置永远走不到边缘,则被认为被困住了,统计这种位置的个数。),搜索如果能走出去,则回溯0,并且做类似并查集的那种操作,把这条路径都标记为0,同理,如果走不出去或者遇到。
2024-12-26 18:37:07
328
原创 1919C. Grouping Increases
但是如果我们下个数字大于8, 或者小于等于5,我们决策2和决策1会等价,并且决策2会少一点penalty。里,不论到A和B得会到一个负分,该决策优于添加到A,这个在文末证明。的插入,下列三种情况进行不同的讨论,不失一般性,我们假设。决策2的收益来的比较短,比如下面这种场景。比较上面情况, 决策2全方面的大于决策1。,实际上是个在线的过程,不断的从。为7,那么我们决策1就会得到收益。的末尾,会损失一个大一点的数字。情况3我们可以比较两种决策,为7,就得到1点负面收益。可接受的范围一定更广泛。
2024-12-25 19:26:10
930
原创 2044 E. Insane Problem
给你两个区间X∈[L1,R1],Y∈[L2,R2]X \in [L1,R1], Y \in [L2,R2]X∈[L1,R1],Y∈[L2,R2],和一个数字kkk,问kn∗X=Yk^n * X = Ykn∗X=Y的pair数目是多少?最暴力的做法就是枚举上面的2个未知元K,X或YK,X或YK,X或Y,判断范围,但是明显复杂度太高了我们可以枚举K=knK=k^nK=kn,因为指数增长速度太快KKK的集合比较少对于已知的K=knK=k^nK=kn,设Z=K⋅XZ=K \cdot XZ=K⋅X,XXX会存
2024-12-19 15:02:45
858
原创 2031C - Penchick and BBQ Buns 平方数构造
构造n个数字,每个数字出现的次数至少大于等于2,相同数字之间的距离是平方数。b. 10 和 26 之间15个数字,26后面还多一个数字,我们构造。c. 剩下的都是偶数邻居, 每个邻居用相同的数字即可。a. 发现1和10之间有8个数字,直接相邻填充即可。我们就特殊处理该情况,如果。
2024-12-18 18:07:25
464
原创 1879 C. Make it Alternating
n个01字符串,能够删除若干次,使得字符串变成01相间,即没有两个一样的连续字符。如何删除使其最长,并且得到该最长的字符串所删除的顺序可能组合数有多少种。对于每个相邻的字符串我们视为一个block,其长度为len,总共k个block,并且对于每个block我们只能保留1个数字,那么最后的结果就是。,最后我们把要删除的数字拿出来,做一个全排列,代表他们删除的可能即可, 最终结果。
2024-10-15 19:59:11
969
原创 1788C - Matching Numbers
先处理奇数A每次+2,B每次-1。处理完奇数后,偶数也一样处理。偶数不行,通过之和相同构造n和k的关系,k是构造后的首项。这样就能构造出consecutive的seq了。个数字,每个数字是其中两个数字之和。给你n,求permutation。
2024-10-12 17:10:45
427
原创 1882B - Sets and Union
这道题如果数据大一些做不了,但是数字大小只在50之间,并且集合的大小50,n大小50。我们可以用一个long long字符来存储集合的情况,因为。,所以我们可以枚举不在集合里的数字,然后排出有这个数字的集合。题意就是有n个集合,对n个集合做并集得到。复杂度就是n*50= 2500,非常快。, 现在抽n个集合中的集合做交集得到。
2024-10-12 13:36:47
441
原创 1978 C. Manhattan Permutations
由证明一得到,因为最终结果是偶数个奇数,所以我们序列最后的结果一定是偶数。证: 一个序列里数字进行相加减,其奇偶性和该序列的奇数个数相一致的。根据加减法的交换性质,把奇数(odd)都移动到最前面。通过递推维护,我们能得到的收益就能均匀的出现分布在。我们接着考虑最大值,最大排序一定是倒序,得到的值。最终相加减的结果和序列的奇偶性相关。第二轮,我们能得到的收益是,, 该证明省略,比较直觉。相似的,减法也依旧成立。第一轮,通过交换1和。
2024-10-05 11:27:07
648
1
原创 WSL外部SSH连接完整方案
wsl作为windows下使用linux平台有效的手段之一,本文可以让win作为工作站,外部系统用来连接win下的wsl系统。
2024-02-12 14:58:16
2508
原创 CodeForces - 1921D Very Different Array
分别对应着当前两个序列的最小值和最大值。他的可以选择的对象有两个,分别是。那么对于不能等长的序列,长度为。可以让当前情况最大化,那么。我们可以理解成,每次从。里找一个最大的值匹配。一定能得到更大的收益。以相反的顺序排序使得。
2024-02-02 22:38:17
305
原创 CodeForces 1858C J - Yet Another Permutation Problem
我们只需要枚举当前n以内的所有奇数,然后乘上2的次幂次方,就能使的结果不重不漏。由于gcd的特性,d最大值不能超过。,放在一起就能让结果变成最多。,达到了我们的理论最大值。, 该构造方式最大就是。
2024-01-31 12:28:23
375
原创 Codeforces Round 895 (Div. 3) C. Non-coprime Split
【代码】Codeforces Round 895 (Div. 3) C. Non-coprime Split。
2023-09-08 18:38:25
519
原创 Codeforces Round 894 (Div. 3) F. Magic Will Save the World 【DP枚举的艺术】
【代码】Codeforces Round 894 (Div. 3) F. Magic Will Save the World。
2023-09-04 23:40:07
275
原创 Codeforces Round 894 (Div. 3) E. Kolya and Movie Theatre
我们可以枚举最后一个数字,根据优先队列来维护前面所有数字里,最大的。构建最小堆,只要堆的容量到了m,那就剔除该最小的数字。,我们最后只需要减去。
2023-09-04 00:25:05
171
原创 [差值排序]B装进肚子
对于每个元素,赋予其优先级,优先级越高排最前面。优先级的定义为,早上吃的比晚上吃,对整体收益更大。只需要对每个元素之间做差俩俩排序即可。
2022-12-29 22:56:18
109
原创 线段树开4n空间的 三句话简单的证明
线段树存储N个节点(1)假设线段树要存储的节点个数是N=2kN = 2^kN=2k 如N=4N=4N=4,那么一定是满二叉树。又因为线段树的性质其叶子节点数一定是n个。那么此时的满二叉树总节点个数为N+N/2+N/4...+1=2N−1N + N/2 + N/4 ... +1 = 2N-1N+N/2+N/4...+1=2N−1(2)如果节点个数不是N=2kN=2^kN=2k 如N=5N=5N=5,数不一定是满二叉树,所以最后一层一定填不满。最坏情况下,最后一层的叶子节点在最右边。(3) 对于前面的满二
2022-06-13 16:39:45
711
3
原创 [css]中间文字两边分割线的方法
HTML <div class="sep"> <div style="margin-top: -11px"> <label>第三方账号注册</label> </div> </div>.sep { border-top: 1px solid #ddd; height: 20px; text-a.
2022-03-14 16:42:22
1702
1
原创 ES6 Promise 简单总结
总结回调地狱promisePromise 链 —— 回调地狱的解决方案async 与 await回调地狱学习promise之前首先了解一下什么是回调地狱比如有ABCD四个异步的请求,需要按照执行顺序如下A->B->C->DA获取值给B用,B获取值给C用, C获取值给D用。如果直接写A()B()C()D()因为是异步的请求,每一行代码不会等上一行代码完成而阻塞,因此不知道谁先完成,我们要求的顺序就不对了。如何解决上述问题?我们可以利用回调函数的一个嵌套就会有如
2022-02-09 22:28:39
767
原创 Vue学习笔记
vue的学习有一阵子了,打算在这新的一年花一点时间去沉淀一下。Vue的介绍Vue主要采用了MVVM的设计模式,是原来的MVC设计模式的一个升级。以前传统的MVC,是将后端数据手动渲染到前端页面,将业务逻辑和前端渲染彻底分开。MVVM本质上就是MVC 的改进版,指的是(Model,View,ViewModel),三者相互协调。MVVM的工作原理当数据源发生变化的时候,ViewMode就会监听到,负责自动渲染到视图层。当表单数据发生变化时,也会被监听到,并且自动同步到Model的数据源之中。.
2022-01-01 15:57:27
1258
原创 Oracle 中参数in和 out的区别
在声明procedure 或 function 的时候可能会用到需要传参数的情况。准备工作打开命令对话框输入1. inin可以参与运算和输出,不能赋值测试参与运算和输出CREATE OR REPLACE PROCEDURE test01(p1 in number)is b number:=1;begin dbms_output.put_line(p1+b);end;/测试结果是可以运算和输出in的参数进行赋值结果所以in修饰的参数,不能进行修改,只能进
2021-12-24 00:26:08
1771
原创 mysql分区入门
创建分区ALTER TABLE testPARTITION by RANGE COLUMNS(time)( PARTITION p01 VALUES less than ('2021-12-18 22:16:17'), PARTITION p02 VALUES less than ('2021-12-18 22:36:17'), PARTITION p03 VALUES less than ('2021-12-18 22:46:17'), PARTITION p04 VALUES less
2021-12-19 03:26:52
640
原创 python多线程编程(1)
进程的介绍进程的概念进程和子进程程序运行的时候会默认创建一个进程,如果在程序运行后又创建了的就叫子进程。多进程的好处程序可以并发执行,提高效率。py中的多进程操作步骤传参获取进程编号os.getpid() # 获取当前进程编号os.getppid() # 获取父进程的编号主进程和子进程的退出关系——守护进程主进程任务结束完,会等待所有子进程结束才会退出。如何实现主进程任务结束完 直接退出? ——守护进程主进程的子进程如果都是守护进程,当主进程可以退出时,所有的子进程
2021-12-13 12:34:12
941
原创 J Luggage Lock
题意给你两个数字锁,abcd,edfg,每次只能移动连续的k个(1<=k<=4),问从第一个状态到第二个状态最少需要多少步。解析我们从 A->B 实际上转动的是差值,我们可以等价为从 0000->C,C是我们将A和B每一位进行相减得到结果。所以bfs跑最短路即可。代码#include<bits/stdc++.h>#include<unordered_map>using namespace std;unordered_map<string
2021-11-24 22:48:43
940
原创 B Bitwise Exclusive-OR Sequence
题意给出n个顶点m条边,每条边<u,v,w> 代表点u异或点v的值为w,求解满足此规则的所有情况中,点之和最小值为多少?解析分层图,32位数字,我们分32位,对于每一层,我们可以让起点为1,我们自然可以得到所有点的情况,当然,出现矛盾即是不可能,直接退出。我们统计每个连通分量所贡献的值。最后累加到我们的答案中即可。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;int n,m;co
2021-11-23 23:02:44
1003
原创 21年广东工业大学第十五届文远知行杯程序设计竞赛 B 找山坡
题意如果两个相同的数字x之间的数字都>=x,称之为山坡,求最长山坡距离。解析每个数字做一条映射链,存储每个数字的下标,遍历下标的映射链,用双指针的想法去取每个合法区间。每个区间用ST表维护预处理迅速得到结果。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+5;int STMax[N][23];int lg[N];int query(int l,int r
2021-11-19 23:25:39
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人