![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
--------基础算法--------
文章平均质量分 65
Faithfully__xly
这个作者很懒,什么都没留下…
展开
-
k叉哈夫曼树 - NOI2015荷马史诗
Analysisk叉哈夫曼树解析这道题稍微还需要注意一点的就是最后还要求最长长度最短这个其实就是在面对两个权值相同的情况下,优先合并深度较小的点Code#include<bits/stdc++.h>#define re register#define in read()using namespace std;inline char nc(){ static cha...原创 2019-10-28 12:32:12 · 142 阅读 · 0 评论 -
浅谈Huffman树
学习ing二叉哈夫曼树一、定义给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。(摘自百度百科)带权路径:到达该叶子节点经过的边数×叶子节点当前代表的数二、实现贪心每次从所给序列中找到两个权值最小的点合并,将合并后的新权值放回...原创 2019-10-28 12:13:08 · 1511 阅读 · 0 评论 -
分块+打表 - WOJ#1198 数数
传送门Analysis什么?数位dp?乱说……(反正我没推出来)每一百万为一组,打表求出来剩下的部分,暴力计算即可在计算的时候可以做到O(数字长度)统计因为位数之和的一半最多为9*9/2=40.5我们考虑压位,二进制下的每一位i表示i这个数能否被凑出具体实现就是: int xx=x;ll f=1; while(xx){ f|=f<<(xx%10);//就是一...原创 2019-10-21 10:27:50 · 161 阅读 · 0 评论 -
1005 - 最长不上升子序列+贪心 - NOIP 1999 拦截导弹
题目背景NOIP1999 提高组试题题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于10000的正整数),计...原创 2018-10-05 21:50:47 · 236 阅读 · 0 评论 -
【2018/10/05】T1 - 分解质因数 - 阶乘
我好菜啊……好菜啊……好菜啊……阶乘 (fact)【问题描述】 有 n个正整数 a[i],设它们乘积为 p,你可以给 p乘上一个正整数 q,使 p*q刚好为正整数m的阶乘,求m的最小值。 【输入】 共两行。 第一行一个正整数n。 第二行n个正整数a[i]。 【输出】 共一行 一个正整数m。 【输入样例】 1 6 【输出样例】 3 样例解释: 当p=6,q=1时,p*...原创 2018-10-05 17:15:45 · 225 阅读 · 0 评论 -
【2018/09/22】T3 - “机缘巧合”-数球
数球(44/100)描述小A有n个球,编号分别为1到n,小A每次都会从n个球中取出若干个球,至少取一个,至多取n个,每次取完再放回去,需要满足以下两个条件。(1)每次取出的球的个数两两不同。(2)每次取出的球的集合两两不包含。包含是指,对于两次取球,对于取的数目少的那次取球的所有球都出现在取的数目多的那次取球中,例如{1,2}和{1,2,4},{1,2}和{2,3}则不算作包含...原创 2018-09-22 17:36:07 · 187 阅读 · 0 评论 -
【2018/09/22】T1-水题-古代密码
古代密码(100/100)描述古罗马帝国有一个拥有各种部门的强大政府组织。其中一个部门就是保密服务部门。为了保险起见,在省与省之间传递的重要文件中的大写字母是加密的。当时最流行的加密方法是替换和重新排列。替换方法是将所有出现的字符按照一个规则替换,比如ABCDEFGHIJKLMNOPQRSTUVWXYZ到BCDEFGHIJKLMNOPQRSTUVWXYZA,如果原词是 "VICTORI...原创 2018-09-22 17:18:57 · 630 阅读 · 0 评论 -
0921-输出优化
今天去刷一个超级简单的桶排,然后数据范围1e7,妥妥的TLE了然后默默去学习了一下输出优化:大致原理就是 putchar 比 printf 快inline void write(int x){ if(x<0) { putchar('-');x=-x; } if(x>9) write(x/10); putchar(x%10+'0');}(...原创 2018-09-21 21:40:14 · 202 阅读 · 0 评论 -
【2018/10/04】T1 - 模拟 - K进制
K进制 【题意】 给定一个K(2<=K<=16)进制数a,判断a是否能被K-1整除。 【输入】 第一行是一个整数 t(1<=t<=50),表示测试点数量。 对于每组数据,第一行一个整数 K,表示进制。 第二行一个 K 进制数,表示 a。保证 a 是合法的 K 进制数,没有前导 0,且只由’0’-‘9’、’A’-‘F’构成。 【输出】 如...原创 2018-10-04 14:34:42 · 140 阅读 · 0 评论 -
1025 - 链表动态查前驱和后继- 邻值查找(CH1301)
传送门牢骚看到这种题,绝对的平衡树乱搞但我需要练习链表啊昨天偷懒贴了ldx的读优,结果他又没有加负数,气……分析将A数组排序后,建立链表那么Ai在链表中的pre和nxt就分别对应其前驱和后继从后往前查,查完后就删除这个点(因为题目要求是1&lt;=j&lt;i1&lt;=j&lt;i1<=j<i)删除的话,就直接把 i 的nxt置为...原创 2018-10-25 14:14:39 · 1928 阅读 · 0 评论 -
1028 -三分套三分 - 传送带(BZOJ 1857)
传送带描述在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间输入输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy...原创 2018-10-28 16:22:44 · 306 阅读 · 0 评论 -
【提高组NOIP2017】T2 - 时间复杂度
题目描述输入输出样例输入82 O(1)F i 1 1E2 O(n^1)F x 1 nE1 O(1)F x 1 n4 O(n^2)F x 5 nF y 10 nEE4 O(n^2)F x 9 nEF y 2 nE4 O(n^1)F x 9 nF y n 4EE4 O(1)F y n 4F x 9 nEE4 O(n^2)F x ...原创 2018-11-01 07:41:18 · 246 阅读 · 0 评论 -
树状数组求逆序对 - 手套
手套描述你现在有N对手套,但是你不小心把它们弄乱了,需要把它们整理一下。N对手套被一字排开,每只手套都有一个颜色,被记为0~N-1,你打算通过交换把每对手套都排在一起。由于手套比较多,你每次只能交换相邻两个手套。请你计算最少要交换几次才能把手套排整齐。输入输入第一行一个N,表示手套对数。第二行有2N个整数,描述了手套的颜色。每个数都在0~N-1之间,且每个数字都会出现恰好两次。输出一...原创 2018-11-06 11:00:17 · 214 阅读 · 0 评论 -
NOIP2016提高组Day1T1 - 玩具谜题(toy)
传送门Analysis好像没有什么好分析的毕竟这可是被洛谷评为普及-的题啊只是需要注意一下,这种取模的问题下标从0开始编号会方便很多很多Code#include<bits/stdc++.h>#define in read()#define N 100009using namespace std;inline int read(){ char ch;int f=...原创 2018-11-04 19:08:10 · 242 阅读 · 0 评论 -
简单BFS - 走迷宫
描述L上次旅行进入了一个迷宫,他被困在了一个N*M的矩形迷宫中。L开始在左上角的点,他知道出口在右下角,他可以向四个方向移动到相邻的点。不过这个迷宫有些魔法,每个格子有一种颜色,不同的颜色代表不一样的功能:如果格子是红色的,表示当前格子无法通行如果格子是粉红,表示格子可以正常通行如果是橙色,当前格子也可以通行,不过会让L身上散发臭气如果是蓝色,这个格子里有鳄鱼,如果L想通过身上要带有臭气...原创 2019-01-23 11:36:35 · 519 阅读 · 0 评论 -
矩阵快速幂 - 迷路 (SDOI2009)
Analysis由于ti很小,我们可以将每个点都拆成若干个点然后就将边权不为1转化为边权为1了即将图中的每个点拆成至多9个点,首先将每个点的第i个点和第i+1个点连一条权值为1的边。另外,如果原图中Eij=m,则将新图的第i个点拆成的第m点和j点的第一个点连一条权值为1的边。这样就完全转化为我们可以解决的问题形式了。时间复杂度 O(n’^3*logT)Code#include<b...原创 2019-07-24 10:42:27 · 85 阅读 · 0 评论 -
【2018/10/11】T1 - 水题 - 方阵
方阵描述Tom 最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的 Tom 打算在 电脑上还原这个伟大的布局。他努力钻研,发现秦始皇布置兵马俑是有一定规律的。兵马俑阵总共有 n 行 m 列,秦始 皇在布置的时候每次会指定一行或一列,然后指定一个兵种,使得这一行或者这一列上全 部放上这一个兵种。如果这一行上以前放过其它的兵种,那么他会拔掉以前的兵种改成现在 他命令的兵种。...原创 2018-10-11 12:57:39 · 186 阅读 · 0 评论 -
【2018/10/02】T2 - 二分 -矩阵分组
矩阵分组 【描述】 有 N 行 M 列的矩阵,每个格子中有一个数字,现在需要你将格子的数字分为 A,B两部分 要求: 1、每个数字恰好属于两部分的其中一个部分 2、每个部分内部方块之间,可以上下左右相互到达,且每个内部方块之间可以相互到达,且最多拐一次弯 如: AAAAA AAAAA AAAAA AABAA BaAAA AAABB ABBBA BBA...原创 2018-10-02 19:43:21 · 264 阅读 · 0 评论 -
【2018/08/19】T3-模拟题-Change
题目背景SOURCE:NOIP2015-SHY-10题目描述Alice 和 Bob 又聚在一起了!他们已经厌倦了取石子游戏,现在他们热衷于切题。于是,Alice 找到了一道题让 Bob 做。Alice 有一张 N*M 的表格,每个格子上有一个值 a[i][j] (1≤i≤N,1≤j≤ M),Alice 将会给 Bob 若干个操作,操作分以下三类:交换两行 交换两列 输出某一个格...原创 2018-08-19 13:29:32 · 174 阅读 · 2 评论 -
【2018/08/22】T1-基础题-string (SDOJ )
字符串【描述】 给定两个字符串 s,t,其中s只包含小写字母以及*,t只包含小写字母。 你可以进行任意多次操作,每次选择 s中的一个*,将它修改为任意多个(可以是 0个)它的前一个字符。问是否能将 s修改为t。 有多组数据。 【输入】 第一行一个整数T表示数据组数。 每组数据两行,第一行一个字符串 s,第二行一个字符串 t。 【输出】 每组数据输出一行,如果能将 s修改为t,...原创 2018-08-22 13:22:45 · 452 阅读 · 0 评论 -
【2018/08/19】T2-状压dp+二分答案-dp
题目背景SOURCE:NOIP2015-SHY-10题目描述一块土地有 n 个连续的部分,用 H[1],H[2],…,H[n] 表示每个部分的最初高度。有 n 种泥土可用,他们都能覆盖连续的 k 个部分,第 i 种泥土的价格为 C[i],可以使 i,i+1,…,i+k-1 部分的高度增加 E[i](如果 i+k>n,那就覆盖 i,…,n ),我们必须满足以下条件:1、每种泥土只...原创 2018-08-19 22:08:57 · 187 阅读 · 0 评论 -
【2018/08/30】T1-模拟-万里长城(SDOJ 3796)
万里长城描述万里长城是中国强大的标志,长城在古代的用途主要用于快速传递军事消息和抵御外敌,在长城上的烽火台即可以作为藏兵的堡垒有可以来点燃狼烟传递消息。 现在有一段万里长城,一共有N个烽火台,有些烽火台里驻扎有士兵,而有一些烽火台没有驻扎。一次将军巡视时发现了一个巨大的防卫漏洞,一个烽火台狼烟点燃后,并不是任意一个烽火台就能看见,当距离超过D后就不能看见了,为了保证第一个烽火台的狼烟点燃后...原创 2018-08-30 21:10:54 · 324 阅读 · 0 评论 -
【2018/08/30】T2-矩阵快速幂+扩展欧几里得-k-斐波那契(SDOJ 3739)
k-斐波那契题目描述:输入格式:一行两个整数 n,P输出格式:从小到大输出可能的 k,若不存在,输出 None样例数据:输入5 5输出2备注:【样例解释】 f[0] = 2f[1] = 2f[2] = 4f[3] = 6 mod 5 = 1f[4] = 5 mod 5 = 0f[5] = 1【数据范围】30% 的数据保...原创 2018-08-30 22:26:28 · 187 阅读 · 0 评论 -
【2018/08/21】T1-模拟-开锁匠(SDOJ 3432)
开锁匠描述经济危机席卷全球,L国也收到冲击,大量人员失业。然而,作为L国的风云人物,X找到了自己的新工作。从下周开始,X将成为一个酒店的助理锁匠,当然,他得先向部门领导展示他的开锁能力。领导给了X一串钥匙,这串钥匙串在一个大圆环上,每把钥匙有一个编号(1..N)。然后蒙上X的眼睛并把他带到一个圆形的大房间中。在这个房间中有N个上锁的门,用1..N表示,这串N把钥匙每一把正好打开一扇...原创 2018-08-21 16:21:01 · 167 阅读 · 0 评论 -
【2018/08/21】T2-trie树+贪心-位运算(SDOJ 3772)
【写在前面】子集:概念同集合里的子集。举例 { 1,2,3 }的子集有{ 1 },{ 2 },{ 3 },{ 1,2 },{ 1,3 },{ 2,3 },{ 1,2,3 },{ 空 }超集:包含原集合中所有数的集合。举例 { 1,2,3 }的超集有{ 1,2,3,4 },{ 1,2,3,4,5 },{ 1,2,3,6 }……位运算描述有q次操作,每次操作是以下两种:1、...原创 2018-08-21 20:07:15 · 238 阅读 · 1 评论 -
0901-倍增法求LCA+例题
一直听大佬们说男生用树链剖分求lca,只有女生用倍增????然而姑娘我表示今天之前一直不会倍增,为了显示我女生的身份我决定学习一下倍增,结果第一次写的时候漏洞百出啊,不过还好有可耐的勾勾同学耐心纠错,感谢Orz,所以在这儿打个总结【前言】LCA(Least Common Ancestors)的意思是最近公共祖先,即在一棵树中,找出两节点最近的公共祖先。这个图中,6,8的lca就是1...原创 2018-09-01 13:35:38 · 518 阅读 · 0 评论 -
0830-矩阵快速幂-POJ 3070
传送门 大致题意就是“简单”地求一个斐波那契数列 分析虽然这是我们熟悉的斐波那契数列,但 n 的范围达到了1e9。所以如果单纯递推的话会超时,那么我们换一种求法POJ 题目描述上已经给出了提示,那我们照着敲一遍代码即可先来了解一下矩阵乘法:两个矩阵只有当左边的矩阵的列数等于右边矩阵的行数时,两个矩阵才可以进行矩阵的乘法运算 主要方法就是:用左边矩阵的第一行,...原创 2018-08-30 14:56:45 · 168 阅读 · 2 评论 -
0902-分解质因数+例题
天啦天啦,我突然发现我不会分解质因数,写满了一脸的方方方,马上去恶补,phew,还好炒鸡简单核心代码void fact(int x){ for(int i=2;i*i<=x;++i)//每次 x 都在改变,这个循环相当于枚举小于等于 x 的所有数//而为什么不用单独考虑质数呢?比如 i 枚举到4的时候,x 若能被4整除,//那也会在i=2的时候把x中所有2的因子除去完,那么枚...原创 2018-09-02 21:21:20 · 371 阅读 · 0 评论 -
【2018/09/08】T1-签到题-eat(WOJ 3931)
传送门 分析我简直醉了,这道题居然那么简单!!!!(所谓签到题,就是说只要去了就可以AC)这道题和图论完全没有关系,题目中说明了所有点都和1联通,那么任意一个点都可以走到,且答案与走的顺序没有关系。为什么呢?因为如果第一天吃了 a[n] 的人,那么第二天就只能吃 a[n-1]-1 个人: a[n]-0 + a[n-1]-1 + a[n-2]-2 + ...... + a[k]...原创 2018-09-08 15:09:24 · 116 阅读 · 0 评论 -
【2018/09/15】T2-模拟-切木板
题目描述有一个 m×n 的矩形木板。你需要把这个木板切成 1×1 的小方块,也就是竖着切 n-1 刀、横着切 m-1 刀。横着切第 i 个位置的权值为 xi ,竖着切第 j 个位置的权值为 yj 。切某一刀时的费用为切这一刀的权值乘上切过的块数。请你安排切的顺序使得所有费用之和最小。输入格式第一行两个数 m,n 。接下来一行 m-1 个整数 x1,x2,…,xm-1 。接下来一...原创 2018-09-15 22:01:33 · 435 阅读 · 0 评论 -
0924-NOIP 2004 普及组-FBI树
题目描述我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为 B 串,全“1”串称为 I 串,既含“0”又含“1”的串则称为 F 串。FBI 树是一棵二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点三种。由一个长度为 2N 的“01”串 S 可以构造出一棵 FBI 树 T,递归的构造方法如下:(1) T 的根结点为 R,其类型与串 S 的类型相同;(2) 若串 S ...原创 2018-09-24 21:55:12 · 407 阅读 · 0 评论 -
【2018/10/01】T3 - 贪心 + 堆 - 购买书籍
购买书籍 【描述】 L的书籍被 M偷了以后伤心欲绝,决定再购买一些回来,现在有 N 本书可以买,每本书的价格是 a[i]元。 现在L总共有 M 元,以及 K 张优惠券。 对于每本书,如果使用一张优惠券,则可以用b[i]的优惠价格购买。 注意每本书只能使用一张优惠券,只能购买一次。 L想知道自己最多可以购买几本书? 【 输入】 第一行三个整数 N, K, M 接下来 N 行,每行两个整数,...原创 2018-10-01 19:08:02 · 214 阅读 · 0 评论 -
【2018/10/01】T1 - 模拟 - 卡牌游戏
卡牌游戏 【题意】 L最近喜欢上了一个卡片游戏,游戏规则是: 2 个人一共拿 2n 张卡片,编号 1..2n,每个人 n 张,然后进行 n 轮出牌,每轮 2 个人都打一张牌,,点数大的玩家每次获1分。 L可以预测到对方要打牌的顺序。 同时,L有一次机会选择了某个时间点,从那个时候开始,每回合点数少者获胜。 请你帮助 L获得最大的分数 【输入】 第一行是1个整数n,n是偶数 ...原创 2018-10-01 19:48:03 · 292 阅读 · 4 评论 -
【2018/10/02】T1 - 低级数学 - 聚会
聚会 【描述】 在成都的一条街道上,一共有 N 户人家,每个家庭有 Xi 个人,他们和谐的生活在一起,作为全国和谐街道,他们经常会小范围组织活动,每次活动会选择一户作为聚点,并要求某些家庭参加,为了方便通知,村长每次邀请位置连续的家庭。因为每户人数不同,每个家庭之间有一定距离,村长希望你计算出每次邀请的家庭的移动代价。第 i 个家庭移动到家庭j的代价是: Xi*dis(i,j) dis...原创 2018-10-02 16:22:55 · 148 阅读 · 0 评论 -
0720-归并排序-noip 2011 瑞士轮
题解这真的是一道很简单的模拟题啊,随便模拟一下就可以了,按照题目意思一步步敲出代码,60分就到手了那怎么得到100分呢?首先我们要知道只得60分是因为 T 了4组,那么是哪里重复计算(或其他什么毛病)导致时间T掉呢。很显然是 sort 排序拖了后腿,因为其时间复杂度为n log(n)。那我们就需要另辟蹊径,找其他的排序方法,而归并排序就很符合这道题,其复杂度为O (n+m)...原创 2018-07-20 16:21:10 · 190 阅读 · 0 评论