自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 河南省第九届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 1180

原创 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 1029 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 817 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 944 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 492

原创 小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 567

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

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

2019-04-18 21:50:59 386

原创 “卓见杯”第五届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 476

原创 郑州轻工业大学“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 897

原创 河南省第十一届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 950

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

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

2019-04-13 18:41:12 838 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 324

原创 牛客寒假算法基础集训营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 374

原创 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 299

原创 地铁 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 222 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 361

原创 牛客练习赛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 159

原创 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 569

原创 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 229

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

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

2019-04-04 20:23:20 439

原创 有向无环图 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 533

原创 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 407

原创 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 347

原创 L2-022 重排链表

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

2019-04-03 10:24:43 543

原创 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 345

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

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

2019-04-03 00:09:59 637

原创 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 508

原创 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 1091

原创 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 1470 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 227

原创 第九届河南理工大学算法程序设计大赛 正式赛 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

空空如也

空空如也

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

TA关注的人

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