自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(277)
  • 收藏
  • 关注

原创 2020牛客寒假算法基础集训营3 题目解析及知识点整理

这里引用一下官方题解A. 牛牛的DRB迷宫IB. 牛牛的DRB迷宫II考察点:构造需要知道一个知识点:任意的非负整数都可以由若干互不相同的2的次幂相加得到,剩下的就按官方照题解的构造方式把这些2次幂得到然后根据输入进行拼接。C. 牛牛的数组越位D. 牛牛与二叉树的数组存储E. 牛牛的随机数考察点:期望、贡献因为是异或运算我们考虑每个二进制位的贡献,在这道题里的期望实际上就是每...

2020-02-08 20:28:12 947

原创 河南省第九届ACM程序设计竞赛 部分题解

A 表达式求值 <逆波兰>#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const ll LINF =...

2019-04-21 14:14:21 1179

原创 Codeforces Round #553 (Div. 2) 题解

题目链接A. Maxim and Biology取连续一段改为ACTG的最小代价#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f...

2019-04-20 23:12:59 1028 2

原创 Codeforces Round #552 (Div. 3) 题解

题目链接A. Restoring Three Numbers#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;con...

2019-04-20 22:47:58 815 2

原创 Farm Tour POJ - 2135 费用流

题解要求从起点到终点在回到起点,可以看做起点到终点流量为2的网络流。题目所给出的边没有方向设置为两条容量为1的有向边。限制流大小为2,最后跑最小费用最大流即可。AC代码#include <stdio.h>#include <iostream>#include <algorithm>#include <queue>#include &l...

2019-04-18 22:40:11 942 3

原创 Flow Problem HDU - 3549 最大流

题解模板题。。dinic求最大流。AC代码#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const ll LI...

2019-04-18 22:34:43 491

原创 小P的秘籍 ZZULIOJ - 1523 二分 ST表

题解类似于括号匹配,将K看为1将A看为-1做前缀和记为a。如果某个区间[l, r]合法则a[l - 1]为当前区间内的a的最小值、a[r]为区间内的a最大值。使用单调栈求出两个数组l、r,l表示当前位置向左第一个大于当前a的位置、r表示当前位置向右第一个小于当前a的位置。枚举答案区间的左端点i二分右端点,二分范围为[i, r[i] - 1],右端点如果为r[i]则非法而小于这个值对于从左向右...

2019-04-18 22:15:17 566

原创 ACM-ICPC 2018 南京区域赛 D. Country Meow 三分 | 模拟退火

题解题目大意给n个三维坐标系的点,要求找到一个点到达这些点的最远距离最近。三分法:因为答案函数单峰且三个维度的最优解相互独立,所以使用三次三分嵌套求出最优的x、y、z。模拟退火:玄学算法。。随机选取一个点检测是否更优然后更新答案。每次选取的点随着温度的降低与当前最优解的偏移量也降低。由于答案函数单峰所以更容易得到最优解。AC代码三分法:#include <stdio.h&gt...

2019-04-18 21:50:59 385

原创 “卓见杯”第五届CCPC中国大学生程序设计竞赛河南省赛-网络模拟赛 部分题解

题目链接A Mex Query#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll; const int INF = 0x3f3f3f3f;const ll LINF = 0...

2019-04-18 21:39:29 473

原创 郑州轻工业大学“CCPC2019-河南省赛”选拔赛(2) 部分题解

题目链接A 火柴棒等式 <暴力>#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll; const int INF = 0x3f3f3f3f;const ll L...

2019-04-18 21:21:24 896

原创 河南省第十一届ACM大学生程序设计竞赛 部分题解

题目链接A 计划日#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const ll LINF = 0x3f3f3f3f3f3f3f3f;bool leapyear(int y){ ...

2019-04-18 19:50:48 949

原创 “卓见杯”第五届CCPC中国大学生程序设计竞赛河南省赛 题解

题解使用树状数组查询某个范围内的数值的数量,因为数值比较大需要先进行离散化处理。使用DFS遍历整棵树,当到达某个节点时首先查询区间[a[i]-m, a[i]+m]范围内的数字数量记为last,表示还没到当前子树时已有的数量。将当前节点值加进梳妆数组,因为自身到自身也算。进行递归,回溯后再次查询区间[a[i]-m, a[i]+m]记为now,表示增加了自身子树之后的数量。最后每个点的答案f[...

2019-04-13 18:41:12 836 2

原创 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛

A PUBG <dijkstra>边权不为1时最短路使用dijkstra。#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x...

2019-04-09 22:13:01 323

原创 牛客寒假算法基础集训营4 B Applese 走方格 构造

题解用DFS跑了一些结论当n和m有一个为1的时候 只有另一个为2有答案 就是出去再回来 当n和m同时为奇数的时候无答案当n和m有一个为偶数的时候先沿着偶数的方向走到底(比如n=4先向下3次然后向右)然后蛇形回来即可AC代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef...

2019-04-09 22:02:47 372

原创 Codeforces Global Round 2

A. Ilya and a Colorful Walk#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const l...

2019-04-09 21:51:28 637

原创 2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛)

A Chino with Geometry <计算几何>懒省事直接贴kuangbin大大的模版了。。最后取整加了个精度损失#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long...

2019-04-09 21:24:50 298

原创 地铁 CSU - 1808 dijkstra 拆点

题解每个点有多个线路,不同线路之间切换需要额外代价,直接在队列的节点中记录当前线路编号增加额外代价无法得到最优解。将原有节点拆分,使用map进行标号,如果当前节点有x个线路相连则将当前节点拆分为x个点,原边只在相同线路的点副本之间连接。**每个节点,相邻站点编号的副本节点进行相连,代价为编号差。**不用每个副本都两两之间建立边,会导致极端复杂度M^2。起始节点和终点的副本之间建立0代价边。...

2019-04-09 21:02:36 688

原创 牛客练习赛43 F Tachibana Kanade Loves Game 容斥

题解尽量使用只扣敌方血量的武器进行攻击,也就是在[1, n]范围内不是2~m倍数的武器。使用二进制枚举容斥求,注意只求素数的。题目数据保证没有平局情况,最后判断敌方血量减去不是2~m倍数的数量是否大于自身血量。m=1则所有武器都会让自己掉血(不知道是题面写错了还是我理解有问题)。总复杂度O(T*π(m)*2^π(m))。AC代码#include <stdio.h>#incl...

2019-04-06 12:00:42 221 1

原创 牛客练习赛43 C Tachibana Kanade Loves Review kruskal 卡常

题解使用kruskal求解,创建一个虚拟点0方便处理。将每个点本身的权值作为和虚拟点连接的边权,k个已习得的点和虚拟点建立0权边。普通关系就把两个点建立对应代价的边。由于数据输入量较大使用fread快读,并查集使用路径压缩+启发式合并优化。AC代码#include <stdio.h>#include <bits/stdc++.h>#define fst fir...

2019-04-06 11:53:37 360

原创 牛客练习赛43 B Tachibana Kanade Loves Probability 快速幂

题解题目所说的概率可以直接通过m/n得到,也就是求m/n的第k1~k2位小数。不过因为k1,k2过大无法直接模拟。最开始想的循环节处理,发现随着n的增大循环节也变大,无法直接通过循环节取模输出。在模拟除法的过程中每次将m=m*10,m/n得到当前小数位,m=m%10。即每个小数位都会m=m*10%n。m=m*10^(k1-1)%n在不爆精度的情况下就可以得到第k1位所用的m。根据同余定理可...

2019-04-06 11:47:25 158

原创 Number Sequence HDU - 1005 循环节

题解题目大意,给定一个递推式要求求出递推式的第n项,n <= 1e9。题目是可以用矩阵快速幂直接log复杂度求出,但是麻烦啊。。所以以下代码使用找循环节的方法。递推式由前两项构成,每项都进行%7运算,取模之后范围0~6共7种,前两项最多有7*7=49种组合。所以在49+49个范围内一定能找到循环节(可能是混循环)。递推得到前200项目(少点也行)。枚举循环节开始位置i,循环节终点j,...

2019-04-05 01:29:15 568

原创 Wormholes POJ - 3259 SPFA

题解题目的意思就是问一个带负边的图是否有负环,使用SPFA求解。如果某个节点第n次入队则说明当前图有负环输出YES。AC代码#include <stdio.h>#include <iostream>#include <string.h>#include <queue>#define fst first#define sed secon...

2019-04-05 01:16:31 227

原创 Parenthesis CSU - 1809 括号匹配 ST表

题解题目大意,给你一个括号序列,匹配规则和普通的括号匹配相同。q次询问每次询问独立,选择两个位置进行交换,问交换后是否括号匹配。把左括号看做1右括号看做-1做前缀和s,对于区间[l, r]如果括号匹配则区间最小值大于等于s[l - 1],使用ST表可以log时间内得到区间最值然后判断某个区间是否括号匹配。对于每次操作如果两个位置括号相同则不发生变化直接查询整个区间最小值。如果左操作位置是右...

2019-04-04 20:23:20 438

原创 有向无环图 CSU - 1804 拓扑排序 dp

题解由于是有向无环图,可以使用拓扑排序+dp求解,令f[i]表示通过不同路径到达i节点的a的和。拓扑排序不断的从入度为0的节点处理,如当前节点为i目标节点为j,每次f[j] += a[i] + f[i]。a[i]表示i到j,由于是不同路径所以每条边都加。f[i]表示之前能到达i而i又能到达j所以之前能到达i的都能到达j,也是每条边都加。最后将每个节点的f[i]和b[i]相乘求和即可。AC...

2019-04-04 19:55:26 530

原创 2016 CSU - 1803 同余定理

题解根据公式a*b%2016==(a%2016)*(b%2016)%2016,可以得出如果a%2016的余数乘b%2016的余数是2016的倍数则a和b相乘满足条件。统计1到n和m范围内对2016取模每个余数出现的次数,枚举1到n内余数为i的数量a[i],枚举1到m内余数为j的数量b[j]。如果i*j对2016取模等于0,则余数为i的每个数字都可以和余数为j的每个数字进行配对,即数量为a[i...

2019-04-04 19:45:19 406

原创 L1-046 整除光棍

题解很容易想到枚举"光棍"的1的数量,判断是否能被x整除,但是不能直接用整形或者long long进行存储,部分答案的光棍很长。在枚举光跟长度i后,用y代表光棍的值,最开始y等于0每次将y = y * 10 + 1总共i次没有溢出就可以得到长度为i的光棍。由于a * b % c == a % c * b % c,所以在求y的过程中每次都对x取模,只要到最后结果为0就说明y可以被x整除。得到...

2019-04-03 10:41:56 345

原创 L2-022 重排链表

题解类似于数组模拟链表,开一个1e5大小的数组,存储当前元素节点和下一个节点标号。从链表头开始将链表压缩在一起并保留相对位置关系存入vec,再根据题目要求首尾交替的存入ans数组。最后根据ans的相对位置关系,根据题目要求模拟链表的格式输出。注意遍历ans时不能用n来代表范围,因为有多余节点。AC代码#include <stdio.h>#include <bits/s...

2019-04-03 10:24:43 540

原创 L1-006 连续因子

题解数据量比较小,因子数量不会超过logn,枚举连续因子起点i,连续的因子j。每次检测j是否能整除m累乘的j是否小于等于m。i的枚举只需要到sqrt(n),因为一个数的连续2个以上因子不可能大于sqrt(n)否则乘积比自身还大,总复杂度O(sqrt(n)*logn)AC代码#include <stdio.h>#include <bits/stdc++.h>usi...

2019-04-03 00:29:36 342

原创 L2-013 红色警报 并查集 逆向

题解题目要求在当前城市被攻陷之后,有些城市会导致无法连通时发出红色警报。逆向思考,可以将删除操作改为添加。如果添加当前点并且添加当前点连接的原有边后,导致原来两个不联通的部分连在一起则这个时候就是红色警报。这个连接操作并且检测是否有两个不同的联通分量合并在一起,可以使用并查集压缩路径O(1)完成。标记删除的点,逆向添加每个点,注意连接边时需要注意判断当前点是否存在。可以先和一个已存在的点...

2019-04-03 00:09:59 635

原创 L3-002 特殊堆栈 树状数组 二分 | STL

题解树状数组+二分:使用栈模拟操作。树状数组记录栈内每个数值出现的次数,树状数组用来查询数值1~x的出现次数。二分查找x位置,找到1~x出现次数和为栈内元素数量/2次的位置,则最小的x为当前栈内的中位数。multiset法:维护两个multiset,l和r表示[1, n/2]和[n/2+1, n]大小的元素,保证l内元素<=r内元素,l内元素数量>=r内元素数量,则l最后元素...

2019-04-02 23:35:57 507

原创 L1-064 估值一亿的AI核心代码 模拟

题解直接模拟即可,使用string库的substr可以直接判断某段是否相等,使用replace可以方便的将某段字符改为其它串。独立的"can you",“could you"需要先判断前后是否都不是字符,处理独立的"I”, “me"时需要在转换为"I can”,"I could"后elseif。AC代码#include <stdio.h>#include <bits/s...

2019-04-02 19:29:38 1089

原创 L2-030 冰岛人 LCA 暴力

题解首先说明一下题意,有些题面没说明白。如果A是C的第5代,B是C的第4代则不满足,要求最近公共祖先是两个人的5代及以上。如果查询的是起源人也是输出NA。给出的名称最后表示性别的m和f不算为名称后缀,查询时会带有。题目实际上就是给定一个图,问两个点是否有5代以内的最近公共祖先。由于给的是字符串,需要先用map编号为1~n的点处理。映射编号建图后,从祖先节点0开始DFS求出每个点的深度。找L...

2019-04-02 19:14:28 1468 1

原创 第九届河南理工大学算法程序设计大赛 正式赛 G. Mo的数学 分解质因子 暴力 | 容斥

题解直接暴力将m和区间[1, n]进行求gcd判断会超时,考虑m和[1, n]是否互质可以转换为m的任意一个质因子知否能整除[1, n]。暴力法:区间[1, n]每个数字尝试除以m的每个质因子如果都无法整除则说明与m互质累乘至答案,复杂度O(Tnlogm)。(数据水了非正解)容斥法:答案为 n! / 每个质因子的倍数 * 两两质因子乘积的倍数 / 三个质因子乘积的倍数… 所有质因子乘积的...

2019-04-02 18:03:59 225

原创 第九届河南理工大学算法程序设计大赛 正式赛 C. Asia区域宫 思维

题解题目有一句很关键的条件,给出的障碍物不会是同行同列。所以不能从(1, 1)到达(n, n)只有一种情况也就是斜着一排被封死。只要能到达则需要的次数为n * 2 - 2,因为不同行同列不需要转向只需要上或者右即可到达。判断是否斜着一排被封死可以统计障碍物的坐标(x, y),x + y出现的次数x + y相等表示再斜着的同一排。AC代码#include <stdio.h>#...

2019-04-02 16:12:16 304

原创 Find a way HDU - 261 搜索

题解使用BFS求出两个人到达每个刷新点的最短时间,枚举每个刷新点根据已有记录求最小时间和即可。AC代码#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int...

2019-03-30 23:27:25 439

原创 Oil Deposits HDU - 1241 搜索

题解DFS进行搜索,求不同联通块数量,每次搜索标记搜索到的位置,标记的位置不再搜索。每次开始搜索答案+1上下左右、左上、左下、右上、右下也算是联通。AC代码#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;type...

2019-03-30 23:24:08 337

原创 Fire! UVA - 11624 搜索

题解两次BFS,第一次BFS求出火蔓延到每个位置所需的最小时间。第二次BFS人物尝试上下左右移动,如果移动到当前位置的时间大于等于火蔓延到的时间则当前人会被烧到,方案不可行。AC代码#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namesp...

2019-03-30 23:20:57 399

原创 Fire Game FZU - 2150 搜索 分类讨论

题解两个熊孩子可以选择2个地点进行点火,分三种情况讨论,1个联通块,2个联通块,2个以上联通块。2个以上联通块肯定就没办法烧完了直接-1。2个联通块时由于数据量很小,对于每个联通块,枚举点火点BFS得到当前联通块所有点都着火的所需时间,每个联通块不同点火点的时间取最小,两个联通块的时间取最大。1个联通块时,由于数据很小,先将当前联通块以每个位置为点火点,引燃每个位置的所需时间求出来。枚举...

2019-03-30 23:16:59 471

原创 Pots POJ - 3414 搜索

题解使用BFS搜索,每次尝试将某个桶的水倒掉、装满、倒进另一个。a桶装的水*1000+b桶装的水作为当前状态hash值,利用hash值标记,已经搜索过的状态不再进行入队。可能操作次数很多,为了性能,存储操作时创建path元素,使用nxt记录路径进行拉链。除了AB容量为C时,只有在一个桶倒进另一个桶时才可能出现容量为C。AC代码#include <stdio.h>#incl...

2019-03-30 23:07:27 435

原创 Shuffle'm Up POJ - 3087 模拟

题解先将ab串交叉合并在一起作为一个2n长度的串,并记录下来。每次将串拆分为两半再次进行交叉合并,如果变成目标串则成功,如果回到最开始的记录则失败。直接模拟即可,使用string类可以方便的进行拆分和合并。AC代码#include <stdio.h>#include <iostream>#include <string>#define fst fi...

2019-03-30 22:58:27 460

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除