- 博客(121)
- 收藏
- 关注
原创 1879 C. Make it Alternating
n个01字符串,能够删除若干次,使得字符串变成01相间,即没有两个一样的连续字符。如何删除使其最长,并且得到该最长的字符串所删除的顺序可能组合数有多少种。对于每个相邻的字符串我们视为一个block,其长度为len,总共k个block,并且对于每个block我们只能保留1个数字,那么最后的结果就是。,最后我们把要删除的数字拿出来,做一个全排列,代表他们删除的可能即可, 最终结果。
2024-10-15 19:59:11 918
原创 1788C - Matching Numbers
先处理奇数A每次+2,B每次-1。处理完奇数后,偶数也一样处理。偶数不行,通过之和相同构造n和k的关系,k是构造后的首项。这样就能构造出consecutive的seq了。个数字,每个数字是其中两个数字之和。给你n,求permutation。
2024-10-12 17:10:45 370
原创 1882B - Sets and Union
这道题如果数据大一些做不了,但是数字大小只在50之间,并且集合的大小50,n大小50。我们可以用一个long long字符来存储集合的情况,因为。,所以我们可以枚举不在集合里的数字,然后排出有这个数字的集合。题意就是有n个集合,对n个集合做并集得到。复杂度就是n*50= 2500,非常快。, 现在抽n个集合中的集合做交集得到。
2024-10-12 13:36:47 404
原创 1978 C. Manhattan Permutations
由证明一得到,因为最终结果是偶数个奇数,所以我们序列最后的结果一定是偶数。证: 一个序列里数字进行相加减,其奇偶性和该序列的奇数个数相一致的。根据加减法的交换性质,把奇数(odd)都移动到最前面。通过递推维护,我们能得到的收益就能均匀的出现分布在。我们接着考虑最大值,最大排序一定是倒序,得到的值。最终相加减的结果和序列的奇偶性相关。第二轮,我们能得到的收益是,, 该证明省略,比较直觉。相似的,减法也依旧成立。第一轮,通过交换1和。
2024-10-05 11:27:07 618
原创 WSL外部SSH连接完整方案
wsl作为windows下使用linux平台有效的手段之一,本文可以让win作为工作站,外部系统用来连接win下的wsl系统。
2024-02-12 14:58:16 2056
原创 CodeForces - 1921D Very Different Array
分别对应着当前两个序列的最小值和最大值。他的可以选择的对象有两个,分别是。那么对于不能等长的序列,长度为。可以让当前情况最大化,那么。我们可以理解成,每次从。里找一个最大的值匹配。一定能得到更大的收益。以相反的顺序排序使得。
2024-02-02 22:38:17 277
原创 CodeForces 1858C J - Yet Another Permutation Problem
我们只需要枚举当前n以内的所有奇数,然后乘上2的次幂次方,就能使的结果不重不漏。由于gcd的特性,d最大值不能超过。,放在一起就能让结果变成最多。,达到了我们的理论最大值。, 该构造方式最大就是。
2024-01-31 12:28:23 350
原创 Codeforces Round 895 (Div. 3) C. Non-coprime Split
【代码】Codeforces Round 895 (Div. 3) C. Non-coprime Split。
2023-09-08 18:38:25 498
原创 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 251
原创 Codeforces Round 894 (Div. 3) E. Kolya and Movie Theatre
我们可以枚举最后一个数字,根据优先队列来维护前面所有数字里,最大的。构建最小堆,只要堆的容量到了m,那就剔除该最小的数字。,我们最后只需要减去。
2023-09-04 00:25:05 156
原创 [差值排序]B装进肚子
对于每个元素,赋予其优先级,优先级越高排最前面。优先级的定义为,早上吃的比晚上吃,对整体收益更大。只需要对每个元素之间做差俩俩排序即可。
2022-12-29 22:56:18 94
原创 线段树开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 626 2
原创 [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 1627 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 749
原创 Vue学习笔记
vue的学习有一阵子了,打算在这新的一年花一点时间去沉淀一下。Vue的介绍Vue主要采用了MVVM的设计模式,是原来的MVC设计模式的一个升级。以前传统的MVC,是将后端数据手动渲染到前端页面,将业务逻辑和前端渲染彻底分开。MVVM本质上就是MVC 的改进版,指的是(Model,View,ViewModel),三者相互协调。MVVM的工作原理当数据源发生变化的时候,ViewMode就会监听到,负责自动渲染到视图层。当表单数据发生变化时,也会被监听到,并且自动同步到Model的数据源之中。.
2022-01-01 15:57:27 1235
原创 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 1733
原创 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 583
原创 python多线程编程(1)
进程的介绍进程的概念进程和子进程程序运行的时候会默认创建一个进程,如果在程序运行后又创建了的就叫子进程。多进程的好处程序可以并发执行,提高效率。py中的多进程操作步骤传参获取进程编号os.getpid() # 获取当前进程编号os.getppid() # 获取父进程的编号主进程和子进程的退出关系——守护进程主进程任务结束完,会等待所有子进程结束才会退出。如何实现主进程任务结束完 直接退出? ——守护进程主进程的子进程如果都是守护进程,当主进程可以退出时,所有的子进程
2021-12-13 12:34:12 931
原创 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 908
原创 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 979
原创 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 228
原创 闲来无事写点图
01电路维修https://www.acwing.com/problem/content/177/题意每次移动一个木棍,让其转方向,问最少转动几次能从左上角到右下角。解析 (巧妙建立01权图+最短路问题)难点在于建图,长和宽分别是r,cr,cr,c那么总共的点就有(r+1)×(c+1)(r+1)\times(c+1)(r+1)×(c+1)个顶点,每个顶点都需要建4条边,如果为“/”,那么说明右上角和左下角的代价为0,同理左上角和右下角的代价为1。因此这张图就建成了只有0 和 1 的有向图,只需要
2021-11-15 16:42:44 838
原创 H-钟别 牛客小x白月赛 遍历决策点,前缀和巧妙处理O(1)
题意给出一个序列,每次操作都能使得相邻的三个数字减1,并且有一次机会,能直接让两个相邻的数字变为0,现在求最多要多少次操作才能让数字都<=0解析假设不动用机会,我们如何把所有数字变为<=0 ,对于最左边的数字假设是a[1],那么我们一定要花费a[1]次操作,将a[1]处理完,对于数字a[2]已经是边界,因此我们必须要花费a[2]-a[1]的操作,但是我们不知道a[2]-a[1]是否大于0,那么就要max(0,a[2]-a[1]),因此我们可以按这样最优的贪心下来算出最终结果。由于只需要
2021-11-04 17:34:51 340
原创 1487 C. Minimum Ties
题意n支队伍,两两之间有一场比赛,胜利者+3分,平局都+1分,失败+0分,如何构造出每队的得分都相同且让平局的场次尽可能的小解析每个人输赢必须相同,因此考虑对半思考问题。对于队伍数目为nnn,分类讨论如果是奇数的个数,那就非常好办了,取窗口大小为[n2][\frac{n}{2}][2n]向后滑动,处在窗口的前一般部分是失败后一半是胜利如果是偶数的话,可以让窗口中间的数字平局,前一半失败,后一半的队伍胜利。代码#include<bits/stdc++.h>using names
2021-11-01 23:32:53 239
原创 The 15th Chinese Northeast Collegiate Programming Contest K.CITY 离线单调+并查集连通+优先队列
题意n个节点,m条边,每条边都有权重,Q次询问,每次询问附带一个正整数x代表,有规模为x的军队,能通过权重>=x的路。如果两个节点能互相到达,则算一个有效对,求针对军队规模为x,有几个有效对。解析很容易的发现每次询问附带的军队规模x具有单调性,x如果越大,答案越小,反之答案越大。那么可以离线存储询问,对询问的规模进行排序,从规模大开始计算,然后越来越小,答案递增。对于一个确定大小为sss的连通块,其对答案贡献是固定的为s∗(s−1)2\frac{s*(s-1)}{2}2s∗(s−1),对.
2021-10-31 23:33:58 302
原创 1594 B. Special Numbers
题意给一个n,和k特殊数字: 不同的n的幂次方之和构成的数字,并且按顺序排列。求第k个特殊数字解析可以看成底数为n的二进制比如第3(11)个特殊数字就是1∗n0+1∗n11*n^0+1*n^11∗n0+1∗n1代码#include<bits/stdc++.h>typedef long long ll;using namespace std;const int mod=1e9+7;void solve(){ int n,k; cin>>n>
2021-10-09 12:04:46 265
原创 1592 C. Bakry and Partitioning
题意有一颗树,问你能不能分成至少2个至多k个连通分量,并且每个连通分量的异或值都相同。解析设每个点的异或之和为xo根据异或的性质,如果xo为0,那么说明可以分成两个区间,其两个区间的异或之和一定为0。如果xo不为0,我们要分成m个区间,每个区间为xo,如果我们能分成10个区间,那么一定能分成8个区间,因为我们可以选择相邻的三个连通分量构成一个大连通分量,其异或值还是为xo,因此,我们最后分成的奇数个连通分量的最小值是3。现在题目转化成,能不能分成3个连通分量,异或值相同。思路很简单,dfs遍
2021-10-04 17:33:53 479
原创 1592 B. Hemose Shopping
题意给一个长度为n的数组,每两个数字下标只差大于等于x都能交换,问最后能不能变成非递减序列?解析对于长度大于等于2∗x2*x2∗x的序列,其每个数字都能互相交换到达所要到的位置。对于长度小于2∗x2*x2∗x的序列,对于区间[1,n−x][1,n-x][1,n−x]可以和区间[x+1,n][x+1,n][x+1,n]互相交换,因此如果这种序列想要有序,必须保证[n−x,x+1][n-x,x+1][n−x,x+1]这段区间里的数字已经是最终排完序的数字。代码#include<bits/st
2021-10-04 14:43:19 323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人