- 博客(182)
- 收藏
- 关注
转载 PepperLa‘s String
如果连续出现两个或以上的字符,压缩表示长度更短,如果只有一个,则显然不需要压缩。考虑删去一个字符使得长度减小的情况:① 删去单一字符,长度减一;② 删去两个字符中的一个,长度减一;③ 删去一个字符后,其出现次数位数减少一。否则剩余能减小长度的情况都会增大字典序(除了在结尾处删),则尽可能让删除位置靠右。不能减小长度的情况,则删去第一个字符最优。给一个字符串 s ss,可以删去一个字符,并且可以对其进行任意的压缩表示一个字符加其连续出现次数的十六进制表示,求最短的表示串,相同长度则输出字典序最小的。...
2022-08-28 11:13:40
303
转载 Game of Primes (博弈)
Alice需要两个都大于k的素数才能获胜,如果Bob先手,只要存在两个距离x、y相等的素数,Alice就可以获胜,因为Bob无论减哪个,Alice减另一个就可以了。初始有两个数 x 和 y,每次操作可以选择一个数减1,Alice和Bob轮流操作,指定某人先手,Alice先手的话,让Alice随便选一个减,就转化为了Bob先手。(1)如果某时刻 x == k 或 y == k,Bob胜。(2)如果某时刻 x、y都是素数,Alice胜。(3)如果(1)(2)同时满足,Bob胜。...
2022-08-26 23:06:48
399
1
原创 Game With Array
问: 你能否找到这样的一个序列, 并且选定出一个k(k ∈ [ 0 , s ] , 使得从序列中任选若干个元素, 总和不等于k, 也不等于s-k. 若能, 则输出一种合法的序列和k.要使子序列和不为k和n-k,最简单的就是取k=1,判断一下s/n>=2就行,这样序列可以为n-1个2和s-2*(n-1)组成。给定n和s, 表示你需要构造出一个仅由正整数组成, 且长度为n序列, 使得序列中元素总和为s.
2022-08-24 22:45:42
133
转载 Boboniu Plays Chess (模拟构造)
一个n*m大的棋盘,在某个位置有一个棋子,棋子的走法和象棋中的“车”一样,要求输出棋子遍历完整个棋盘所有位置经过的位置。如果所在行没遍历完,则遍历该行,否则寻找另外没有遍历过完的行,重复上述操作直到所有位置都遍历完。
2022-08-24 22:20:09
124
转载 Composite Coloring
3x5和5x7有公因子5,那么把5x7也涂成1.现在2x3和5x7是一样的颜色,但他们的gcd=1,不符合要求!2x3 3x5 5x7 7x2这4个数,首先看2,我们就把2x3、7x2涂色成1,然后看3,由于2x3已经涂色了,那么我们只能把3x5涂成颜色2,最后把5x7涂成颜色3.这样涂色的话,可以保证相同颜色的数一定gcd>1。我们注意到1000以内的合数一定有一个 1(涂相同颜色的两个数不互质)
2022-08-24 18:04:14
160
转载 Find The Array
用2的幂次去构造,b数组的每个值都变为离该a数值对应位置上的值距离最近的2的n次方(n=0,1,2…) ,这样即可以保证每一对相邻元素都符合要求,而且每一个元素的变化值都不会超过他的一半,所以总的变化量也不会超过总值的一半。2、数组b中每个位置的数字减去数组a中相应位置的数字的绝对值和的二倍小于等于S。1、数组中的每个数可以将他两边的数字整除或者被他两边的数字整除。输出任意一个满足的数组b。
2022-08-24 16:20:58
151
转载 Wall Game(并查集)
对于输出联通块边的数量,维护一下每个集合内点的数量和重复边的数量,*6-v输出即可。n组输入,每组输入三个数字,第一个数字代表操作类型, 第二三个数字代表坐标。对于图上加点,可以给每个点的坐标离散化成序号,然后丢到并查集维护连通性。操作2:查询这个点的整个联通的快,输出整个块的边的数量。操作1:在整个图上添加点,并和相邻的点联通。
2022-08-24 11:15:51
266
转载 Fair Distribution (整除分块)
当且仅当能量条的数量是机器人数量的倍数时,才存在公平分配。为了避免机器人的灭绝,禁止摧毁所有的N个机器人。输入的第一行包含一个整数T(1≤T≤1000),表示测试案例的数量。对于n>m的情况,答案显然为n − m(因为m%n == m,只能把m加到跟n一样大才行)梦网拥有的唯一工具是一把强大的激光枪。每次他打开激光枪时,他正好可以做两件事中的一件。唯一一行包含两个整数n和m(1≤n,m≤108),表示机器人和能量条的初始数量。对于每个测试案例输出一行,包含一个整数,表示获得公平分配的最小成本。
2022-08-24 11:10:26
447
原创 Function (欧拉筛法)
3.n能分解成多个质因数相乘时,f(n) = f(最小的质因子的次幂)走一二两种情况,2.n是质数的次幂时,f(n) = p^(k / 2);1.n是质数或者1时,f(n) = 1;根据式子计算1~n的f(n)的累加和。
2022-08-23 00:15:58
144
原创 City (并查集 + 思维)
给出一个图,每次询问给出x ,每次将边权< x 的边摧毁,问还能互相到达的点的对数。将k值和边权排序,从大到小并查集不断加边,计算贡献即可。
2022-08-17 15:33:47
153
原创 Transform
给你两点(A,B,C)和(x,y,z)在三维空间。设L是穿过点(A,B,C)和原点(0,0,0)的直线。如果你把点(x,y,z)绕线L旋转r度和-r度,你将得到两个点P和Q。如果P的z坐标大于Q,则输出P,否则输出Q,我们保证解决方案是唯一的。三维几何旋转向量模板。...
2022-08-17 15:12:11
124
原创 Bracket Sequence
给定括号的对数和括号的种类求出最后合法序列的数量。如果只有一种括号序列就可以直接用卡特兰数。多种匹配的括号可以转换成同一种括号。
2022-08-16 15:50:48
381
转载 LRU (二分)
现在要求求缓存的块数,使得对于给定的长度为n 的请求序列,少k 次命中缓存。二分一个长度并进行检验,检验时用一个s e t 维护Cache中的块编号,并按照请求序列的先后顺序进行排序,用一个m a p维护映射元素上一次的出现位置。有一个技巧,在插入元素时不要使用insert,而是使用emplace方法,避免插入时多余的一次构造和析构,可以提升程序效率。对于缓存已满的情况,则擦除set中的第一个元素(历史最久远的块),然后插入新块;3.未命中缓存,缓存已满,替换缓存中时间最久的块;缓存未满,直接插入新块。..
2022-08-16 11:52:11
151
转载 Visit the Park
有n个点,m条边的无向图(多路径),每条边有一个权值 ,后给定一个行进序列,问概率是多少?期望值的求法:字符串拼接的样子将每段路的期望值合并。数学期望等于 = 每一种结果 x 概率求和。1 – > 2 有三条路,值为1 2 2。2 – > 3 有两条路,值为1 4。...
2022-08-16 11:20:17
207
原创 Barbecue
否则每轮开始时玩家拿到的字符串都不是回文串.若此时玩家必败,即删除第一个或最后一个字符都会使得剩下的字符串是回文串,则此时的串只能形如a b , a b a b , a b a b a b , ⋯ ,⋯,这表明必败态的长度是偶数,故谁胜只与起始串长度的奇偶有关.若每次询问都用Manacher算法判断回文串,时间复杂度O ( n q ),会TLE.考虑用字符串哈希O ( n ) 预处理,每次询问O ( 1 ) 查询,时间复杂度O ( n + q )当子串为回文时,拥有这个子串的选手输掉了比赛;...
2022-08-14 21:52:25
210
转载 BpbBppbpBB
考虑如何统计洞数.从上往下、从左往右扫一遍字符矩阵,遇到白格子时做一遍DFS,统计每个连通块中白格子的个数,若为12 ,检查该白格子的附近是否满足洞的特征.设C型、S型印章分别用了x 、y 个.因印章不重叠,则黑格子数为146 x + 100 y ,洞数为2 x + y ,联立解出x 和y 即可.原文链接:https://blog.youkuaiyun.com/Hytidel/article/details/126287064。C型印章的黑格子数为146 ,S型印章的黑格子数为100 1.......
2022-08-14 14:48:16
643
原创 Candy Machine
题目链接题意 :给定一系类数组,求所有子集中的一个子集中满足严格大于这个子集的平均数的元素个数的最大值思路 :假设最终选择的集合的平均数不超过 k。为使平均数不超过 k,应将 ≤ k 的数全部选入,然后贪心选择 > k 的部分中最小的若干个数。因此将 N 个数从小到大排序后,最优解一定是一个前缀。可以先将这个数组从小到大排序,然后依次比较每次去掉最大的一个元素之后的结果,符合条件所得的ans的最大值为所求。因为如果每次去掉的是最小的数组元素的话,所得数组的平均值会变大,最后该数组中能满足严格
2022-08-14 14:19:01
445
原创 Minimize The Integer
有一个序列,如果相邻的两个数的奇偶性不同,就可以把它们交换。问得到的最小的序列是什么。根据题意我们可以理解为相同奇偶性的数字顺序是不能变的,能变得只是不同奇偶性的数字。所以我们可以通过两个队列来分别按顺序存储奇数和偶数,然后判断大小依次输出就行。...
2022-08-12 17:42:56
187
转载 Madoka and Childish Pranks(贪心)
显然第三种不能画,第一种可以画,第二种不用动。所以我们试着每次只涂两个,从后面涂到前面,其实发现,只要第一个不是黑色,全部都能涂,只不过是用最多次数来涂,遍历所需数组,遇到1就涂(前一格和这一格(两格)),如果在第一列,就涂这一格和上面一格(第一行第一列除外)。这题的意思有点难懂,大概题意是,原本有n ∗ m 的网格,然后每次操作只能按棋盘图案操作,就是只能画一个类似棋盘的图案,比如样例1,第一步,画了一个3 ∗ 3 的正方形,按照棋盘的规则(黑白相间,第一个为白),第二步也是画了个棋盘不过是2*2的。..
2022-08-12 14:49:40
121
原创 Don’t Really Like How The Story Ends(dfs搜索)
2 和 3 之间加一条边,3 和 4 之间需要加一条边,但是4 和 5之间不需要,因为4可以通过3回溯后搜索到5;给定n个点(1 ~ n),还有m条已经链接的边,问需要加多少条边可以形成一个dfs序(即按照dfs遍历的顺序)如果按顺序两个点没有直接连接,并且不能通过回溯到达,那么必须加一条边。== AC代码 : ==所以条件采用while。...
2022-08-10 12:24:02
209
原创 aaaaaaaaaaA heH heH nuN
题意:规定一个字符串芳香的前缀是nunhehheh,后缀是数量个的a;给定一个n ,找出有n个芳香子序列的字符串。思路:nunhehheh + a * x,有2^x - 1个有效子序列nunhehhe hhhha ,有p个h,则有p个有效子序列那么在最后一个a前面加一个h就可以构成2 ^ x个有效子串例如 haha == 4 haaha == 8直接对应到2进制,所以我们直接枚举有多少个二进制位有1,然后在最前面那个a后面加h和对应二进制位上加h(即a与a之间的空位)即可构造AC代码:...
2022-07-14 14:58:31
499
原创 Median (二分答案 + 二分查找)
题意:有N个整数,计算两两不同的整数间的差值,然后找到差值中的中位数.思路:二分答案 + 二分查找题目数据范围是xi
2022-07-13 23:00:28
175
原创 Mirror Grid
题意:给定一个n * n的矩形,将其旋转90°,180°,270°后保持不变.问需要最少多少步可以完成.思路:由题意可知这个矩阵必须是中心对称图形,所以遍历这个矩形的每一层,查看每次0多还是1多即可重点 : 遍历矩阵AC代码:...
2022-07-13 22:53:37
496
原创 团体程序设计天梯赛 -- 练习集 (L2合集)
文章目录L2-001 紧急救援 (25 分)L2-002 链表去重 (25 分)L2-003 月饼 (25 分)L2-004 这是二叉搜索树吗? (25 分)L2-005 集合相似度 (25 分)L2-006 树的遍历 (25 分)L2-007 家庭房产 (25 分)L2-008 最长对称子串 (25 分)L2-009 抢红包 (25 分)L2-010 排座位 (25 分)L2-011 玩转二叉树 (25 分)L2-012 关于堆的判断 (25 分)L2-013 红色警报 (25 分)L2-014 列车调度
2022-04-15 01:13:51
2830
转载 二叉搜索树详解(C++实现)
二叉搜索树的定义二叉搜索树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点。二叉搜索数中序遍历为有序数组一、查找二叉搜索树中的某个元素在二叉搜索树b中查找x的过程为:若b是空树,则搜索失败,否则:若x等于b的根节点的数据域之值,则查找成功;否则:若x小于b的根节点的
2022-04-14 11:40:10
1294
转载 7-70 树的遍历(已知前序||后序 和中序求层序遍历)
7-70 树的遍历(已知前序||后序 和中序求层序遍历)7-70 树的遍历 (25 分)给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4
2022-04-14 00:42:46
394
转载 C++实现已知二叉树前序遍历和中序遍历,求后序遍历
C++实现已知二叉树前序遍历和中序遍历,求后序遍历一、基本概念1.先序遍历(NLR)可以确定二叉树的父子结点;2.中序遍历(LNR)可以确定二叉树的左右子树;3.后序遍历(LRN)可以确定二叉树的父子结点;二、结论1.已知先序遍历,中序遍历序列,能够创建出一棵唯一的二叉树,可以得出二叉树的后序遍历;2.已知后序遍历,中序遍历序列,能够创建出一棵唯一的二叉树,进而可以得出二叉树的先序序列;3.综上,必须含有中序遍历(确定二叉树左右孩子),先序遍历或者后序遍历任选一个(确定二叉树父子结点),就可
2022-04-14 00:24:57
3611
转载 c++中setw()与setfill()的用法详情
c++中setw()与setfill()的用法详情在C++中,setw(int n)用来控制输出间隔。例如:cout<<'s'<<setw(8)<<'a'<<endl;则在屏幕显示s a//s与a之间有7个空格,加上a就8个位置,setw()只对其后面紧跟的输出产生作用,如上例中,表示’a’共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出setw()默认填充的内容为空格,可以setfill(
2022-04-12 23:57:27
3695
原创 团体程序设计天梯赛 -- 练习集 (L1合集)
文章目录L1-001 Hello World (5 分)L1-002 打印沙漏 (20 分)L1-003 个位数统计 (15 分)L1-004 计算摄氏温度 (5 分)L1-005 考试座位号 (15 分)L1-006 连续因子 (20 分)L1-007 念数字 (10 分)L1-008 求整数段和 (10 分)L1-009 N个数求和 (20 分)L1-010 比较大小 (10 分)L1-011 A-B (20 分)L1-012 计算指数 (5 分)L1-013 计算阶乘和 (10 分)L1-014 简单
2022-04-11 19:54:01
7348
原创 欧拉函数 (数论)
文章目录欧拉函数欧拉定理公式法求欧拉函数筛法求欧拉函数欧拉函数欧拉定理公式法求欧拉函数题目描述 ;给定 n 个正整数 ai,请你求出每个数的欧拉函数。输入格式第一行包含整数 n。接下来 n 行,每行包含一个正整数 ai。输出格式输出共 n 行,每行输出一个正整数 ai 的欧拉函数。数据范围1≤n≤100,1≤ai≤2×109输入样例:3368输出样例:224公式 :公式证明 : 容斥原理AC代码#include <iostream>
2022-04-11 16:05:53
487
原创 约数 (数论)
文章目录试除法求约数约数个数约数和试除法求约数题目描述 :给定 n 个正整数 ai,对于每个整数 ai,请你按照从小到大的顺序输出它的所有约数。输入格式第一行包含整数 n。接下来 n 行,每行包含一个整数 ai。输出格式输出共 n 行,其中第 i 行输出第 ii 个整数 ai 的所有约数。数据范围1≤n≤100,2≤ai≤2×109输入样例:268输出描述 :1 2 3 6 1 2 4 8 AC代码#include <iostream>#includ
2022-04-11 14:55:02
213
原创 质数 (数论)
文章目录试除法判定质数AC代码分解质因数质因数概念AC代码质数筛法朴素筛法(nlogn)线性筛法(n)Rabin-Miller大素数判定试除法判定质数小于2的数不是质数(1既不是质数也不是合数),之后的数从2开始依次判断能否被x整除,如果可以则不是质数,否则的话则除了1和本身没有其他因子所以是质数;AC代码#include <iostream>#include <algorithm>using namespace std;bool is_prime(int x){
2022-04-11 11:45:16
293
原创 蓝桥杯 --- 搜索合集
文章目录蓝桥杯 --- 搜索方格分割凑算式完美平方数分配口罩搭积木超级胶水第39级台阶迷宫李白打酒字串排序网络分析波动数列跳蚱蜢大臣的路费蓝桥杯 — 搜索方格分割6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图:就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。AC思路图形关于(3,3)点对称,所以我们从(3,3)开始搜索,然后标记走到过的点和对称的点即可;AC代码#include<iostream>#inclu
2022-04-07 15:24:32
728
1
转载 整数分解 (记忆化 ,数学隔板)
整数分解【问题描述】把3分解成两个正整数的和,有两种分解方法,分别是 3 = 1 + 2 和 3 = 2 + 1。注意顺序不同算不同的方法。将5分解成三个正整数的和,有6种分解方法,分别是 1 + 1 + 3 = 1 + 2 + 2 = 1 + 3 + 1 = 2 + 1 + 2 = 2 + 2 + 1 = 3 + 1 + 1。请问,将2021分解成五个正整数的和,有多少种分解方法?方法一记忆化搜索#include<bits/stdc++.h>using namespace s
2022-04-07 15:05:35
167
原创 正整数的任意进制转换
文章目录正整数的任意进制转换AC代码正整数的任意进制转换正整数的任意进制转换时间限制: 1 Sec 内存限制: 128 MB题目描述将 p 进制 n 转换为 q 进制。p 和 q 的取值范围为[2,36],其中,用到的数码按从小到大依次为:0,1,2,3,4,5,6,7,8,9,A,B,…,Z,不考虑小写字母。输入一共1+m 行:1行为 m,表示后面有 m 行(1 <= m <= 60).其后的m行中,每行3个数: 进制p,p进制数n,以及进制 q。三个数之间用逗号间隔。
2022-04-06 17:13:09
789
转载 明码 (二进制转换)
文章目录明码明码转自:https://blog.youkuaiyun.com/u013377068/article/details/79778568汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,一共16行,布局是:第1字节,第2字节第3字节,第4字节....第31字节, 第3
2022-04-06 16:42:58
1097
原创 跳跃 (dfs)
文章目录跳跃AC思路AC代码跳跃题目描述小蓝在一个 n 行 m 列的方格图中玩一个游戏。开始时,小蓝站在方格图的左上角,即第 1 行第 1 列。小蓝可以在方格图上走动,走动时,如果当前在第 r 行第 c 列,他不能走到行号比 rr 小的行,也不能走到列号比 c 小的列。同时,他一步走的直线距离不超过 3。例如,如果当前小蓝在第 3 行第 5 列,他下一步可以走到第 3 行第6 列、第 3 行第 7 列、第 3 行第 8 列、第 4 行第 5 列、第 4 行第 6 列、第 4 行第 7 列、第 5
2022-04-06 16:02:25
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人