
OJ题解
文章平均质量分 63
Exchan
A AC a day,keep the doctor away!
展开
-
搜索+枚举字符串子串问题
求字符串的子串问题有两类,一种是不连续,一种是连续。然而这两种都可以用暴力求解,不过容易 time limited exceed;那可以只用两个for循环就get全部子串吗? 求不连续的子串:用DFS(深度优先搜索)这里看一个题 HD 1015 Safecracker 这个题大意就是 在给出的5-12个字符里面找到字典序最大的子串(不连续),子串字符数目是5个,且子串满...原创 2016-08-04 16:33:59 · 1117 阅读 · 0 评论 -
C++ map的基本操作和使用
map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 map能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。map中的元素是自动按key升序排序,所以不用对map进行排序,也无法排序(如果要按降序输出,可以用map.sizeof( ) 获得...原创 2016-07-26 11:36:06 · 842 阅读 · 1 评论 -
C++ map的基本操作和使用
map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 map能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。map中的元素是自动按key升序排序,所以不用对map进行排序,也无法排序(如果要按降序输出,可以用map.sizeof( ) 获得...原创 2016-12-07 21:56:17 · 401 阅读 · 0 评论 -
STL的vector和pair
pair的类型: pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。。 pair<string,int> p; pair<int ,int > p; pair<double,int> p; 应用:如果一个函数有两个返回值 的话,如果是相同类型,就可以用...原创 2016-12-12 15:53:28 · 827 阅读 · 0 评论 -
计算几何中的精确度
转自: L&King计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模板一般就不成问题了。精度问题则不好说,有时候一个精度问题就可能成为一道题的瓶颈,简直“画龙点睛”。这些年的题目基本是朝着越来越不卡精度的方向发展了,但是也不乏一些%^&%题#$%$^,另外有些常识不管题目卡不卡,都是应该知道的。今天我就开膛回顾下见过且还有印象的精度问题,由于本人见识...转载 2016-07-22 20:00:38 · 494 阅读 · 0 评论 -
判断两条线段是否相交 计算几何
对于线段A,B,如果 线段A与直线B相交 ,线段B与直线A相交 ,那么就可以认为线段A 和线段B相交。关键问题是:如何判断直线AB是否与线段CD相交呢?设直线AB的方程为:f(x,y) = 0,直线方程可以通过两点式求得。当C和D点不在直线的同侧时,直线AB必然与线段CD相交,也就是说直线AB与线段CD相交的条件为:f(C) * f(D) <= 0。代码如下: t...原创 2016-12-08 21:31:14 · 10656 阅读 · 2 评论 -
圆的反演+计算几何 - hdu6097
Mindis题意:圆心 O 坐标(0, 0), 给定两点 P, Q(不在圆外),满足 PO = QO,要在圆上找一点 D,使得 PD + QD 取到最小值。 数据范围:T≤500000−100≤x,y≤1001≤r≤100 思路:根据圆的反演,构造一个相似三角形,可以转换问题。如果求得的距离小于eps,说明近似于原点,距离为2*r;然后就...原创 2017-08-11 20:05:29 · 784 阅读 · 0 评论 -
位运算
位运算 === 1. and运算 ===and运算通常用于二进制取位操作,例如一个数and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。 //判奇偶 if((a&1)==0 ) 偶数,else 奇数相同位的两个数字都为1,则为1;若有一个不为1,则为0。(&;或者and) ...转载 2016-06-09 12:07:45 · 274 阅读 · 0 评论 -
蔡勒公式计算星期+枚举 - hdu6112 今夕何夕
今夕何夕 题意:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。 数据范围:第一行为T,表示输入数据组数。每组数据包含一个日期,格式为YYYY-MM-DD。1 ≤ T ≤ 10000YYYY ≥ 2017日期一定是个合法的日期,对每组数据输出答案年份,题目保证答案不会超过四位数。 ...原创 2017-08-12 19:41:43 · 1141 阅读 · 0 评论 -
51node 1001 数组中和等于K的数对
题意:给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5)。Input第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 <= N <= 50000,-10^9 <= K <...原创 2016-12-18 13:31:47 · 567 阅读 · 0 评论 -
51nod 1003 阶乘后面0的数量
题意n的阶乘后面有多少个0?6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。Input一个数N(1 <= N <= 10^9)Output输出0的数量Input示例5Output示例1 编程之美有讲:一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数, ...转载 2016-12-18 14:39:10 · 365 阅读 · 0 评论 -
priority_queue的用法
转自: http://www.cnblogs.com/flyoung2008/articles/2136485.htmlpriority_queue的用法 priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_...转载 2016-07-23 16:59:14 · 288 阅读 · 0 评论 -
vector用法详解
转自 金河 http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include<vector>.(2)创建vector对象,vector<int> vec;(3)尾部插入数字:vec.pus...转载 2016-07-22 10:06:08 · 510 阅读 · 0 评论 -
处理技巧+DFS | 计算字符串种类
336. Equivalent Passwords 题目大意:给你n个仅由0~9组成的字符串作为密码(1 ≤ N ≤ 100,000),每个字符串长度<=5,两个字符串A,B如果长度相同且对于每个位置i ,|A[i] - B[i]|(注意绝对值)都相同,那么这两个字符串就是等价的,问你至多多少次 能找到正确密码。简单说就是n个字符串有多少种? 分析:如果暴力匹配,最坏的情况是...原创 2017-07-30 17:39:16 · 488 阅读 · 0 评论 -
DFS - hihoCoder#159 - 区域周长
#1319 : 区域周长 题意:给定一个N*M的矩阵,给定一个起始坐标x,y,求与(x,y)相邻且值相同的联通快的周长。每个格子边长为1。 数据范围:第一行包含4个整数 N , M ,x 和 y , N 和 M 是矩阵的大小, x 和 y 是给定的单位正方形 s 的坐标。(1 ≤ N , M ≤ 100, 0 ≤ x < N , 0 ≤ y < M )以下是一个...原创 2017-08-13 23:19:33 · 453 阅读 · 0 评论 -
蓝桥杯-发现环 | 找环+打印路径
标题:发现环小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑,你能...原创 2018-05-15 19:03:56 · 739 阅读 · 1 评论 -
蓝桥杯-磁砖样式 | dfs+hash
标题:磁砖样式小明家的一面装饰墙原来是 3*10 的小方格。现在手头有一批刚好能盖住2个小方格的长方形瓷砖。瓷砖只有两种颜色:黄色和橙色。小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。(瓷砖不能切割,不能重叠,也不能只铺一部分。另外,只考虑组合图案,请忽略瓷砖的拼缝)显然,对于 2*3 个小格子来说,口算都...原创 2018-05-15 22:03:30 · 717 阅读 · 0 评论 -
同余+最短路 做完全背包
POI X Sums 一个集合 SSS 内有 nnn 个正整数 {a1,a2,…,an}\{a_1, a_2, \ldots, a_n\}{a1,a2,…,an} ,S′S'S′ 表示由集合 SSS 中的数相加所得的集合,每个数都可以用无数次。有 qqq 次询问,询问一个 xxx 是否在 S′S'S′ 内。存在输出 y 否则输出 n。n≤5000...原创 2017-08-07 20:04:28 · 846 阅读 · 0 评论 -
贪心 - 端点变化的连续区间求最值
Maximum Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 题意:给两个长度为n的序列a, b,现要求max(sum(a[n + 1] + … + a[2n])),其中a[i] = max(a[b[k]] … a[i ...原创 2017-07-28 16:03:03 · 594 阅读 · 0 评论 -
动态规划 - HDU6092 Rikka with Subset
Rikka with Subset 题意:有一个正整数数列 a[ ] ,长度(n<=50)。b[i] 表示元素和为 i 的集合个数。给你一个数列 b[ ] ,长度(m<=10000),让你求 a[ ],并按照其字典序最小输出。 容易想到,0的个数就是log2(b[0]),一的个数就是b[1]/b[0].但是题目明确是正整数,所以1的个数其实就是b[1].广义的讲,...原创 2017-08-08 20:34:06 · 718 阅读 · 0 评论 -
字符串+尺取法 - HDU6103
Kirinriki 题意:定义两个字符串之间的距离为: disA,B=∑i=0n−1|Ai−Bn−1−i| , 给定一个字符串,选取两个不想交的子串,使得两个子串的距离为小于给定的m的最大值。 数据范围:0≤m≤5000Each character in the string is lowercase letter, 2≤|S|≤5000∑|S|≤2...原创 2017-08-11 14:33:45 · 245 阅读 · 0 评论 -
树形结构+博弈论 - hdu6105
Gameia 题意:给定一棵树,Alice先涂色,图的点变成白色,Bob在Alice后涂色,所涂点以及相邻的点都变成黑色.Bob能在任意时刻剪断一条边,但是只能k次。如果所有点都被着色,有白色就是Alice赢,否则Bob赢。 数据范围:T≤1001≤N≤5000≤K≤5001≤Pi≤i 思路:博弈论。因为相邻的点能都会变成黑色,可以在之前就...原创 2017-08-11 22:53:51 · 2665 阅读 · 0 评论 -
找规律+菊花图 - hdu6090
Rikka with Graph 题意:有n个点,你可以选择连接m条边,两个连接的点距离为1,不连接的距离为n,求这个无向图的所有边权和的最小值。 数据范围:0<=t<=101<=n<=10^6, 1<=m<=10^12 分析:用m条边进行构图,可以构建菊花图,中间一个点,其他都是绕这个点围城圈的图,有最小边权和。...原创 2017-08-12 11:57:41 · 2549 阅读 · 0 评论 -
51nod 1009 数字1的数量
1009 数字1的数量 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。Input输入N(1 <= N <= 10^9)Output输出包含1的个数Input示例12Output示例5 思路...原创 2016-12-20 17:15:49 · 255 阅读 · 0 评论 -
51nod 1305 Pairwise Sum and Divide
有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整: fun(A) sum = 0 for i = 1 to A.length for j = i+1 to A.length sum = sum + Floor((A[i]+A[j])/(A[i]*A[j])) return sum 给...原创 2016-12-21 19:54:50 · 207 阅读 · 0 评论 -
51nod 1091 线段的重叠
1091 线段的重叠 X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。Input第1行:线段的数量N(2 <= N <= 50000)。第2 - N + 1行:每行2个...原创 2016-12-22 11:24:09 · 378 阅读 · 0 评论 -
并查集+DFS - hihoCoder #161 树结构判定
树结构判定 描述给定一个包含 N 个顶点 M 条边的无向图 G ,判断 G 是不是一棵树。输入第一个是一个整数 T ,代表测试数据的组数。 (1 ≤ T ≤ 10)每组测试数据第一行包含两个整数 N 和 M 。(2 ≤ N ≤ 500, 1 ≤ M ≤ 100000)以下 M 行每行包含两个整数 a 和 b ,表示顶点 a 和顶点 b 之间有一条边。(1 ≤ a,...原创 2017-08-12 10:03:06 · 342 阅读 · 0 评论 -
POJ-Bound Found | 尺取法+绝对值特性
POJ2566-Bound Found题意给定长为n的数组,以及k次询问,每次询问给出一个t,在数组中找一段连续的区间[l,r]使得 |∑jiai∑ijai\sum_{i}^j a_i| - t 有最小值,在一行中输出 |∑jiai∑ijai\sum_{i}^j a_i|,区间开始位置和结束位置,区间不为空。(一定要注意区间不为空)数据范围1&amp;lt;=n&amp;lt;=100000 ...原创 2018-05-17 20:55:14 · 415 阅读 · 0 评论 -
NYOJ571-整数划分(三) | 划分数+DP
NYOJ571-整数划分(三)描述整数划分是一个经典的问题。请写一个程序,完成以下要求。输入 多组输入数据。 每组输入是两个整数n和k。(1 &amp;lt;= n &amp;lt;= 50, 1 &amp;lt;= k &amp;lt;= n) 输出 对于输入的 n,k; 第一行: 将n划分成若干正整数之和的划分数。 第二行: 将n划分成k个正整数之和的划分数。...原创 2018-05-18 20:30:22 · 297 阅读 · 0 评论 -
2018计蒜之道-贝壳找房性价比 | 斜率最大
关于这道题,网上已经给出了解答要点:3个点A,B,C,把它们的按x坐标排序。假设排序后的顺序是ABC,那么有两种情况: 1.ABC共线,则k(AB)=k(BC)=k(AC); 2.ABC不共线,则ABC将形成一个三角形,那么k(AC)<max(k(AB), k(BC));其中k()表示求斜率。原创 2018-05-19 18:58:11 · 418 阅读 · 0 评论 -
2018山东省赛F-Four-tuples | 容斥定理
F-Four-tuples题目描述Given l1l1l_1,r1r1r_1,l2l2l_2,r2r2r_2,l3l3l_3,r3r3r_3,l4l4l_4,r4r4r_4,please count the number of four-tuples (x1x1x_1,x2x2x_2,x3x3x_3,x4x4x_4) such that lilil_i≤≤≤xixix_i≤≤≤ririr...原创 2018-05-20 12:59:14 · 286 阅读 · 0 评论 -
HDU2524-矩形A + B | 计算几何初步
HDU2524-矩形A + BProblem Description给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形Input第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n &amp;lt; 100 , m &amp;lt; 100).Output每行输出网格中有多少个矩形.Sample Input2 1 2 ...原创 2018-05-20 13:49:40 · 535 阅读 · 0 评论 -
数论 | 容斥定理
容斥定理参考文章:容斥定理详解摘要:原理描述:计算几个集合并集的大小,先计算出所有单个集合的大小,减去所有两个集合相交的部分,加上三个集合相交的部分,再减去四个集合相交的部分,以此类推,一直计算到所有集合相交的部分 。具体如图: 维恩图:概率论:事件Ai(i=1,…,n),P(Ai)为对应事件发生的概率。至少一个事件发生的概率: 例题co...原创 2018-05-21 09:03:07 · 792 阅读 · 0 评论 -
奇葩的数据处理
今天在刷牛客网的PTA试题,发现很奇葩的数据处理(对我这种渣渣来说 是异常的兴奋)题目描述nowcoder利用业余时间养了一窝蜜蜂,因为空间比较小,蜂房只有两排,如下图所示:如你所见,蜜蜂的蜂房是正六边形,假设蜜蜂只会从左往右爬,即从1号蜂房能爬到2号和3号;从6号蜂房能爬到7号和8号……现给出两个蜂房的编号a和b,要求计算蜂房a的蜜蜂爬到蜂房b有几条不同路线。原创 2016-08-30 21:14:37 · 427 阅读 · 0 评论 -
codeforce #420
C. Okabe and Boxestime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputOkabe and Super Hacker Daru are stacking and remov原创 2017-06-26 02:04:29 · 644 阅读 · 0 评论 -
最小内积 北航第十二届程序设计竞赛网络预赛
题目描述给定两个 n维向量 A⃗ =(x1,x2,⋯,xn) 和 B⃗ =(y1,y2,⋯,yn) ,定义它们的点积为A⃗ ⋅B⃗ =∑1≤i≤nxi⋅yi对于每个向量,它的每个分量互不相同,而且任意两个分量均可交换位置。求一种交换策略使得 A⃗ 与 B⃗ 的内积最小,如果有多种满足条件的交换策略,那么还要使得交换总次数最少。请你给出最少原创 2016-12-12 22:01:53 · 707 阅读 · 0 评论 -
并查集详解
并查集详解转自 Time files 并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的...转载 2016-07-24 19:06:02 · 271 阅读 · 0 评论 -
2017湘潭邀请赛E-Partical Sum | 绝对值的特性
Partical Sum题意给定一个长为n的数组,找到m组(L,R),L表示区间的起点,R表示区间的终点,使得|∑RLai∑LRai\sum_{L}^R a_i| - C的和最大,其中C为给出的常数 。每个(L,R)只能使用一次。输入多组样例,第一行输入n,m,C表示数组长度为n,找到m组区间开始和结束下标。第二行输入m个数组元素。输出输出一行表示最大的和数...原创 2018-05-17 21:16:54 · 328 阅读 · 0 评论 -
DP+字符串 - hihoCoder#162 回文字符串
回文字符串描述给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串?一次操作可以在任意位置插入一个字符,或者删除任意一个字符,或者把任意一个字符修改成任意其他字符。输入字符串 S。S 的长度不超过100, 只包含'A'-'Z'。输出最少的修改次数。 分析:这个首先一看就是DP题,所以先设计一个动规方程 dp[i][j]表示从字符串i到j...原创 2017-08-09 10:20:09 · 337 阅读 · 0 评论 -
DP+字符串 - hihoCoder #160
#1320 : 压缩字符串 描述 小Hi希望压缩一个只包含大写字母'A'-'Z'的字符串。他使用的方法是:如果某个子串 S 连续出现了 X 次,就用'X(S)'来表示。例如AAAAAAAAAABABABCCD可以用10(A)2(BA)B2(C)D表示。此外,这种压缩方法是可以嵌套的,例如HIHOHIHOCODERHIHOHIHOCODER可以表示成2(2(HIHO)COD...原创 2017-08-11 13:11:31 · 329 阅读 · 0 评论