自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

箜瑟_qi的博客

同步于http://www.cnblogs.com/kongse-qi/

  • 博客(47)
  • 收藏
  • 关注

原创 Codeforces Round #600 (Div. 2) 解题报告

相关链接比赛链接:Dashboard官方题解:EditorialA. Single Pushttt 组数据。每组数据给定两个长为 nnn 的数组 AAA 和 BBB,可以选择 AAA 的一个子序列 A[l,r]A[l,r]A[l,r],将其中的每个数增加 x(x>0)x(x > 0)x(x>0),该操作至多进行一次。判断 AAA 能否转化成 BBB。t≤20,n≤100000t\leq 20,n\leq 100000t≤20,n≤100000签到题。初始化 Ci=A

2020-07-28 17:20:30 175

原创 求[1,n]中所有素数之和

问题描述给定整数 nnn,求[1,n][1,n][1,n]中所有素数的和,答案对998244353取模。数据范围1s,512M对于 100%100\%100% 的数据,n≤1010n\leq 10^{10}n≤1010解题思路回忆素数的欧拉筛法(Euler’s_sieve)。对于当前数 xxx,若未被判定为合数,即为素数,将其插入素数列表末尾。将 xxx 与素数列表中的所有数从小到大相乘,并将乘积判定为合数。若 xxx 为当前素数的倍数,则不再与下一个素数相乘。因此当一个数被判

2020-07-19 19:54:48 2431

原创 【题解】2018.03.26测试 - FJWC2018正式赛

Source:FJWC2018正式赛ProblemT1 三元组题意求多少个三元组 (a,b,c)(a,b,c)(a, b, c) 满足 a+b2≡c3(modk)a+b2≡c3(modk)a + b^2 \equiv c^3(\bmod k), TTT 组数据。数据范围1≤n,k≤105,1≤T≤4001≤n,k≤105,1≤T≤4001 \leq n,...

2018-04-05 11:57:25 593

原创 【题解】【未完成】2017.04.01测验 BJOI2018练习赛

SourceBJOI2018练习赛Day1ProblemT1 面试题意给定长为 NNN 序列 AAA 和 M,KM,KM,K。求最小的 ppp 满足 A[1..p]A[1..p]A[1..p] 中存在至少 MMM 个数,使得其中任意两个数的差小于等于 KKK 。如果不存在输出impossible。数据范围1≤M≤N≤105;0≤k≤105;1≤A...

2018-04-05 11:56:44 269

原创 【网络流24题】餐巾计划问题

题意共 nnn 天,每天需要 RiRiR_i 块干净的纸巾。纸巾用完一次就脏了,可以选择清洗后使用或不再使用。已知新买纸巾的价格为 ppp ,花 mmm 天快洗纸巾的价格为 fff ,花 nnn 天慢洗纸巾的价格为 sss 。求最小花费。数据范围n≤2000n≤2000n \leq 2000,Ri≤107Ri≤107R_i \leq 10^7,p,f,s≤104p,f,s≤...

2018-04-05 11:55:31 221

原创 【网络流24题】飞行员配对方案问题

题意有NNN 个点,其中编号为1−M1−M1-M 的点可以和编号为 M+1−NM+1−NM+1-N 的点匹配。已知所有允许的匹配点对 (a,b)(a,b)(a,b) ,求最大匹配数,并输出配对方案。如果不存在,输出No Solution! 。数据范围1≤M≤N≤1001≤M≤N≤1001\leq M\leq N\leq 100题解裸的二分图最大匹配。考虑匈牙...

2018-04-05 11:54:59 158

原创 【网络流24题】[CTSC1999]家园

题意地球和月球中间有 nnn 个太空站,有 mmm 艘太空船, kkk 个人要从地球前往月球。已知每个太空站可以容纳无限多的人,每艘太空船的承载人数为 HiHiH_i ,以及它们的行驶路线(经过的每一个太空站编号)。任意两个太空站之间的行驶时间均为 111,太空船周期行驶(终点站再回到初始站)乘客可以选择在任意整数时刻下车或上车,这个操作不消耗时间。假设所有太空船0时刻都在初始...

2018-04-05 11:53:35 157

原创 USACO 2.3 Controlling Companies 题解

Controlling CompaniesDESCRIPTION Some companies are partial owners of other companies because they have acquired part of their total shares of stock. For example, Ford at one point owned 12% of Mazd

2017-07-11 21:50:02 451

原创 USACO 2.3 Money Systems 题解

Money SystemsDESCRIPTION The cows have not only created their own government but they have chosen to create their own money system. In their own rebellious way, they are curious about values of coin

2017-07-11 10:12:01 294

原创 USACO 2.3 Zero Sum 题解

Zero SumDESCRIPTION Consider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... N. Now insert either a `+' for addition or a `-' for subtraction or a ` ' [blank]

2017-07-11 09:41:50 395

原创 USACO 2.3 Cow Pedigrees 题解

Cow PedigreesFROM: Silviu Ganceanu – 2003DESCRIPTION: Farmer John is considering purchasing a new herd of cows. In this new herd, each mother cow gives birth to two children. The relationships among

2017-07-11 08:57:38 466

原创 USACO 2.3 Longest Prefix 题解

Longest PrefixFROM: IOI’96PROBLEM DESCRIPTION: The structure of some biological objects is represented by the sequence of their constituents, where each part is denoted by an uppercase letter. Biolo

2017-07-10 20:26:30 419

原创 奇怪的函数 题解

Description: 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少?Input: 一个正整数 nOutput: 使得 x^x 达到 n 位数字的最小正整数 xExample Input: 11Example Output 10Data Range: n <= 2000000000 (2e9)Difficulty: ★★☆☆☆Thoughts:

2017-06-29 18:08:09 522

原创 双倍数 题解

双倍数 题解

2017-06-25 10:16:38 492

原创 SPFA求单源最短路径

序求最短路径的算法有很多,各有优劣。 比如Dijkstra(及其堆(STL-priority_queue)优化),但是无法处理负环的情况; 比如O(n^3)的Floyd算法;比如Bellman-Ford算法,可以处理负环的情况。SPFA算法就是基于Bellman-Ford算法的改进。 SPFA,全称为Shortest Path Faster Algorithm,也被很多Oler笑称为Supe

2017-05-25 10:13:25 327

原创 矩阵乘法优化递归式

序:在OI比赛中,很多情况下我们可以能通过打表(找规律)或者某些方式发现一个递归式。 例如:f(n) = f(n - 1)+f(n - 2),(斐波那契数列)。通常情况下,我们计算f(n)的时间复杂度就是O(n)(分别计算f(1), f(2) … f(n - 1)). 但是当n很大又或者还有其他处理的复杂度一叠加便会超时。如果不学习矩阵乘法优化的话,我们恐怕永远不会想到计算递推式还可以进行优化。

2017-05-24 22:31:18 886

原创 map中结构体做关键字的注意事项

序: 今天做一道题,由于递归函数比较恶心,如果用记忆话搜索,数据范围极大却又用不全(二维数组存的话直接炸)。所以决定干脆使用stl::map存储(反正有O2优化),但是执行insert的时候,编译器却莫名其妙的报错,跳到stl的某个库之中。一脸懵逼,弄了半天才搞明白原因。结构体像这样:struct qi{ int x, y; qi(){} qi(int a, int b):

2017-05-07 19:39:54 1400

原创 暴力求解数独

序: 早上做了一个”高级“难度的数独发现真是难到爆炸,于是乎决定写一个暴力程序枚举一下,于是出现此文。 思路很简单,深搜即可,每次check一下,不行就回溯。 话不多说,很简单,直接上代码。/*About: sudoku Auther: kongse_qiDate:2017/05/03*/#include <iostream>#include <cstdio>#include <

2017-05-05 15:42:10 519

原创 最大流算法之ISAP

序: 在之前的博文中,我解释了关于最大流的EK与Dinic算法,以及它们的STL/非STL的实现(其实没什么区别)。本次讲解的是ISAP算法。‘I’,指 inproved,也就是说ISAP其实是SAP算法的改进。目前没有官方名称。经过测试,ISAP的效率在洛谷的板子题中远胜于EK和Dinic的,速度大概是它们的2-3倍。代码量实际上并没有多大变化,在20行读入优化与不压行的情况下(即下文代码),2

2017-04-30 23:22:37 672 2

原创 二分推进算法

序: 二分搜索是很常见的一种算法,用来在有序序列中寻找某数(或者小于大于它的最*值的某数)。 二分答案也比较常见,估算出答案范围后二分缩小范围逼近答案。 二分推进与二分答案很像,不同之处是二分推进并非得到答案的范围,而是通过缩小答案对应的数据的范围,逼近答案对应的数据(通常求最值)…举个例子: 平面上有n个点,已知每个点的坐标。求一个点m(x,y),使得m与其他所有点的距离和最短。(x,y的

2017-04-29 23:48:38 442

原创 最长相同不重叠子串

序: 关于最长相同不重叠子串,本文提供的是一个DP做法。 算法时间复杂度O(n^2),空间复杂度O(n)(滚动数组)。举个例子: string x = “**abcabc**abcabcabc” 最长相同不重叠子串长度为6。由于要求不重叠,所以边界除首尾外需要增加一条。 即字串长度小于|j-i|(j,i分别为一前一后两子串的尾下标)。状态转移方程: -> if(a[i] == a[j])

2017-04-29 22:34:33 983

原创 luogu 1521-求逆序对

题意: 逆序对指在一个序列中ai>aj && i < j,也就是一前一后两个数,当大的在前面的时候即算一对。题目求在一个由1…n组成的序列中逆序对为k的序列的个数。 出题人很良心,不需要写高精度,答案对10000取模即可。思路: 这道题的前面其实还有一道很类似的题,也是求逆序对。不同的是那道题给定了序列求逆序对的个数,而这道题则相反。那道题的方法即merge sort。尽管两题很类似,但是方法

2017-04-27 12:34:02 499

原创 O(mn)实现LCIS

序: LCIS即求两序列的最长公共不下降子序列。思路于LCS基本一致。用dp[i][j]记录当前最大值。代码实现:/*About: LCIS O(mn)Auther: kongse_qiDate:2017/04/26*/#include <bits/stdc++.h>#define maxn 505using namespace std;int n, m, a[maxn], b[ma

2017-04-26 09:37:53 363

原创 O(nlogn)实现LCS与LIS

序: LIS与LCS分别是求一个序列的最长不下降序列序列与两个序列的最长公共子序列。 朴素法都可以以O(n^2)实现。 LCS借助LIS实现O(nlogn)的复杂度,而LIS则是通过二分搜索将复杂度从n^2中的朴素查找导致的n降至logn使之整体达到O(nlogn)的复杂度。 具体解析: http://www.cnblogs.com/waytofall/archive/2012/09/10

2017-04-26 09:00:24 663

原创 最长公共子序列(LCS)

问题: 给两串序列,求其中最长的公共自序列的长度。 如: A:1232193 B:482914132 最长公共子序列:232/213/293…总之长度为3。如何计算? 我们发现这个问题是一个明显的动态规划。 通过求子序列的最长公共子序列来得到更长的序列的最长公共子序列。那么如何构造转移方程? 用dp[i][j]表示第一序列到第i个,第二序列到第j个的最长子序列长度。那么转移方程式如下

2017-04-25 17:59:24 261

原创 vector实现最大流EK算法

序: 在之前的文章中实现了不利用STL实现EK算法,效率也较高。这次我们企图简化代码,减少变量的使用与手写模拟的代码。注意:vector等STL的container在不开O2优化的时候实现同一个效果普遍比手写要慢。源代码如下:/*About: Max_flow_EK_vector Auther: kongse_qiDate:2017/04/22*/#include <bits/stdc+

2017-04-22 22:15:22 338

原创 二分图的最大匹配——最大流EK算法

序: 既然是个图,并且求边数的最大值。那么这就可以转化为网络流的求最大流问题。 只需要将源点与其中一子集的所有节点相连,汇点与另一子集的所有节点相连,将所有弧的流量限制置为1,那么最大流 == 最大匹配。(感谢yulemao大神的指点)只需要在初始化的时候修改一下,就可以直接用求最大流的算法模板了。 本文代码使用EK算法, 为POJ 1469的AC代码。 EK算法解析源代码:/*About

2017-04-22 16:05:03 842

原创 二分图的最大匹配——匈牙利算法

背景知识: 什么是二分图? 二分图就是一种特殊的图。这个图可以将整个集合分成了两个子集,满足所有弧都是从其中一子集的顶点射向另一个子集的顶点。同一个子集中的点没有弧相连。二分图的最大匹配: 二分图的最大匹配就是使两个集合的点尽可能多的一一对应。本次介绍的是匈牙利算法。匈牙利算法的原理就是寻找增广路径以扩大匹配数量。与最大流增广算法原理基本一致。增广路径: 若P是图G中一条连通两个未匹配顶点的

2017-04-22 15:50:27 250

原创 结构体的vector resize()与初始化

序: 我们在使用vector的时候可以自定义里面的数据类型。例如这样:struct Edge{ int from; int to; int weight;};vector<Edge> edge;使用vector的使用我们有时会用到resize和reserve函数进行内存的分配。在之前的测试中我们发现先使用resize再用下标访问读取数据的效率要远远高于push_back

2017-04-22 11:36:24 2093 1

原创 luogu P1015 回文数

题目描述: 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指

2017-04-21 12:18:29 377

原创 luogu P1007 独木桥

序:难度标签是普及-,便觉得应该非常简单,结果发现有一个弯半天没绕过来,所以认为这道题对于第一次做的人来讲还是很是比较有意义的。题目描述: 长度为len的桥上有n个士兵,你不知道他们的初始方向。已知每单位时间每个士兵能走距离1,如果两个士兵碰面则立刻转身往回走,转身不花费时间。问所有士兵离开桥(左右皆可离开)的最短与最长时间。思路: 最短时间自然很简单,每个士兵的速度相同,那么往同一个方向走的时

2017-04-21 10:41:52 399

原创 求两数的最大公因数

序: 很多时候我们要处理两个数的最大公因数,比如分数化简。因此需要一种高效率的方法找到最大公因数。朴素法:void Gcd(int &a, int &b){ int i, j, curr = min(a,b);//从两数最小值开始 for(unsigned j = 1; j != 21; ++j)//先判断curr/1——curr/20是不是,会优化一些时间 {

2017-04-20 11:08:56 656

原创 fread读入优化,寻找速度极限

序: 在之前的测试中,我们比较了四种读入方式,发现使用读入优化是最快的选择,但是我们知道fread()是比它更快的方法。这一次,我们对比四种读入优化,探寻C++读取速度的极限。 分别是getchar()两种方式以及fread()两种方式。测试数据为1e5,1e6,1e7的大小,每次测试循环5次或7次,力求测试结果的稳定性。(共测试6次)首先是两种getchar()读入,由于在之前的测试中出现过,

2017-04-17 20:39:12 5663 3

原创 比“读入优化”更优的读入方式

序: 相信很多OIer在读取大量数据的时候普遍采取读入优化的方式读入(代码如下,基本类似):inline void read()//无符号型{ static char c; input = 0; c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <=

2017-04-15 17:23:36 423

原创 三种输出方式的效率对比

序: 在上文中对比了四种读入方式的效率,这次将对比三种输出方式的效率。 三种方式分别是:printf(),cout,输出优化(字符输出)。 测试时间依然适用time.h的库函数。输出代码:inline void print(int curr)//输出优化,递归到最高位,依次输出{ if(curr > 9) print(curr/10); putchar(curr%10+

2017-04-15 17:10:13 752

原创 四种读入方式的效率对比

序: 之前在一篇关于vector的push_back和resize()等方式读取数据的效率对比中,我们发现最快的是通过读入优化。这次将测试四种读入方式的效率对比: 两种读入优化,scanf与fscanf。 测试数据采用随机生成的10000000个int型整数,在windows环境下运行。 测试时间由time.h中的函数计算。四种读取方式:int input;inline void read

2017-04-15 14:21:32 1203

原创 后序拓展序列与相关(基于数组实现)

上一次是通过指针进行链表的构建与维护。这一次不使用链表,将原本的指针通过l(left)[]和r(right)[]来实现。 建树的过程中有两种方式,一是朴素数组的方式,而是STL-stack的方式。分别探究三者(还有链表)的效率。 如果不明白具体原理,请看上一节。朴素数组:/*About: binary tree-postorder Auther: kongse_qiDate:2017/04

2017-04-15 10:57:36 416

原创 后序拓展序列与相关(基于链表实现)

构造出一棵二叉树的方法有很多,基于*序拓展序列也可以构造出亦可唯一的一棵二叉树,本文给出基于后序拓展序列生成二叉树(基于链表实现)。

2017-04-13 21:22:49 534

转载 Python批量修改文件名与后缀

引言: 有时因为文件版本的更新,后缀名会发生变化,例如Word13的docx到Word16的doc,又例如我们想修改音频文件的后缀。一个一个修改后缀名往往很麻烦,于是我们便可以写一个Python的脚本来批量处理。代码:import osfiles = os.listdir(".")//获取当前目录下的文件for filename in files: portion = os.path.

2017-04-11 10:48:02 1473

原创 欧拉筛法实现素数表的快速筛取

欧拉筛法快速筛出素数表。

2017-04-10 00:49:23 702

空空如也

空空如也

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

TA关注的人

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