自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SDKD 2019 Spring Training Series C2 10th Round 题解

POJ 2689 Prime DistanceTAG:筛法、思维 = 大素数区间筛难度:★★★题意:给定两个整数L,R(1&lt;=L&lt;=R&lt;=231,R−L&lt;=1061&lt;=L&lt;=R&lt;=2^{31}, R-L &lt;= 10^{6}1<=L<=R<=231,R−L&l...

2019-05-01 16:38:48 483

原创 HDU 2108 Shape of HDU 计算几何 判断多边形凹凸性

题目:https://cn.vjudge.net/problem/HDU-2108题意:给一个多边形点的坐标,输入按逆时针排序,判断多边形的凹凸性。思路:方法一:求凸包,比较顶点数是否相等。方法二:根据凸多边形定义:(1)对于每一条边,其余的边都在该边同一侧。(2)多边形内角都小于180度。也就是说对于逆时针排序的边,下一条边必定在上一条边左侧。实现上可以用叉积判断,向量v1和v2...

2019-03-11 20:47:13 382

原创 HDU 1107 武林 大模拟

题目:https://cn.vjudge.net/problem/HDU-1107题意:中文题干不再赘述,仅强调两处细节(1)仅当一个各自里有两名弟子,且二者分属不同门派时才会发生战斗。(2)每次战斗+移动称作一步,最后一次移动后的战斗不需处理。思路:模拟题怎么写都能写出来,我提供几处的实现方法供参考。(1)存储结构:滚动二维结构体数组,相当于两个二维数组,从一步走向另一步时将属性改变后...

2019-03-11 19:47:21 462

原创 HDU 1595 find the longest of the shortest 最短路变形

题目:https://cn.vjudge.net/problem/HDU-1595题意:给出一个不超过1000个点的带权无向图,求删掉其中一条边后最短路的最大值。思路:先Dijkstra或SPFA求出原图最短路,显然,当删掉的边不在最短路内时,最短路不变。因此只需枚举原图最短路上的每一条边,将其删掉求最短路求最大值即为答案。代码:C++11#include &lt;cstdio&gt;...

2019-03-11 19:19:04 203

原创 HDU 1237 简单计算器 表达式求值

题目:https://cn.vjudge.net/problem/HDU-1237题意:中文题干不再赘述思路:由于表达式中不含括号,可以简单处理。具体方法如下:开一个符号栈,一个数值栈先读入一个数放到数值栈中之后每次分别读一个符号一个数值,若符号为乘除,直接将数值栈栈顶的元素与本次读入的数值进行乘除运算,再放回数值栈中。若符号为加减,则先将符号栈中留存的加减号与数值栈栈顶的两个数进行运...

2019-03-11 17:40:45 263

原创 HDU 3791 二叉搜索树 二叉搜索树的建树和遍历

题目:https://cn.vjudge.net/problem/HDU-3791题意:中文题干不再赘述思路:根据输入建二叉搜索树,若前序和中序遍历的结果相同则必定是同一棵二叉树。代码:C++#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;cmath&gt;#include &lt;iostream&gt;#i...

2019-03-11 17:08:41 280

原创 HDU 1503 Advanced Fruits 最长公共子序列(LCS)

题目:https://cn.vjudge.net/problem/HDU-1503题意:输入两个长度不超过一百的非空字符串,求一个字符串,使该字符串存在子序列分别是输入的两字符串,要求所求字符串最短。有多个答案时,输出任意一个。思路:要找最短的包含两字符串的字符串,把输入的两字符串,公共部分输出一次,其他部分按照一定顺序各自输出。具体做法:找出最长公共子序列,标记好LCS的每个字符在原字符串中...

2019-03-11 17:02:05 221

原创 HDU 1875 畅通工程再续 最小生成树

题目:https://cn.vjudge.net/problem/HDU-1875题意:平面坐标系上,C个点,坐标[0, 1000]整数,要求修路使之变成连通图,一条边费用等于长度*100,长度不在[10, 1000]范围内的边不能选择。求最小费用。思路:二重循环计算两点距离建边,边长不符合[10, 1000]的边忽略,之后求最小生成树即可。代码:C++#include &lt;cstdi...

2019-03-11 11:53:53 155

原创 UVA10827 Maximum sum on a torus 枚举 + 二维前缀和

题目:https://cn.vjudge.net/problem/UVA-10827题意:给一个大小不超过75*75的方阵,里面是-100到100的整数,让你求子矩阵里的元素和最大值。这个矩阵有一个特点,矩阵上下、左右是认为是相邻的,所以取可以取类似下图的子矩阵。 思路:这个球面矩阵的特殊性可以用一个简单的技巧的解决,将四个相同的方阵拼在一起就可以忽略它的特殊性。直接枚举复杂度高达O(n...

2018-08-04 20:04:23 264

原创 HDU 1496 Equations 简单折半枚举 + 简单哈希

题目:https://cn.vjudge.net/problem/HDU-1496题意:求方程a*x1^2+b*x2^2+c*x3^2+d*x4^2=0整数解的个数 注:(1) a、b、c、d为整数常数,属于闭区间[-50,50] (2)x属于闭区间[-100,100]的非零整数思路:分别枚举a*x1^2+b*x2^2和c*x3^2+d*x4^2,将前者结果保存,枚举后者使c*x3^2...

2018-08-04 19:46:03 411 2

原创 CodeForces 485D Maximum Value 技巧枚举 + 二分

题目:https://cn.vjudge.net/problem/CodeForces-485D题意:给出n个整数,求这里面任取两个数取模的最大值 注:(1)最多2e5个数,数字大小1到1e6 (2)大数膜小数思路:对于一个数a,要使b%a最大,自然要找大于等于a的倍数且最接近的数作为b。由此,我们先将数排序、去重,然后枚举每一个a和它的倍数,二分找到大于等于比这个数的最小的数b,计算...

2018-08-04 19:24:36 340

原创 HDU 5968 异或密码 预处理异或前缀和+枚举 or 预处理+二分

题目:https://cn.vjudge.net/problem/HDU-5968思路: 思路一:利用异或运算 a^b^b = a的性质,O(n)预处理出异或的前缀,即可O(1)查询区间连续异或值。之后对于给出的x只需枚举所有子区间即可得到答案。总复杂度O(n + m*n^2)思路二:直接预处理求出所有区间的异或值和区间长度,将其排序,对于输入的x,二分查找到与x作差绝对值最小的值,其对...

2018-08-04 18:30:20 337

原创 Gym 101612C Consonant Fencity 建图预处理 + 二进制枚举

题目:https://cn.vjudge.net/problem/Gym-101612C题意:给出一个字符串(长度不超过1e6),仅由小写字母组成。定义一个叫consonant fencity的东西,含义是如果两个连续字母是辅音(本题中辅音指除aeiouwy以外的字母),且大小写不相同,就有一对consonant fencity。题目要求指定每个字母的大小写形式(要求相同字母的大小写形式相同)...

2018-08-04 17:59:52 579 1

原创 CodeForces 124B Permutations 枚举全排列

题目:https://cn.vjudge.net/problem/CodeForces-124B题意:给出n个k位数,将每个数字的各个位置上的数重新排列,让重排后的数字极差最小,求极差。 注:(1)数字可以有前导零。 (2)重排时,所有数字按照相同规则重新排列。 (3)1 ≤ n, k ≤ 8思路:既然重排时所有数字规则都相同,那么我们只需要枚举全排列作为重排的规则,在计算出每种重排...

2018-08-04 16:44:26 357

原创 CodeForces 427D Match & Catch 后缀数组

题目:https://cn.vjudge.net/problem/CodeForces-427D题意:给出两个字符串,求最小公共子串长度,使这个子串仅在两个串均出现一次。思路:将这两个字符串拼成一个串,中间用一个没出现过的字符隔开(我用的空格),对合成的串求后缀数组,这样两个数组的公共子串所在的后缀在sa中应该是相邻的。通过观察,只有当这两个sa中相邻的后缀sa[i]和sa[i-1]左右的后缀都不含

2017-12-04 11:06:06 455

原创 Uvalive 6471 Triangle Count Sequences of Polygon Triangulations 多边形三角剖分 递归思想

题目:https://cn.vjudge.net/problem/UVALive-6471题意:一个n边形的三角剖分是指用n-3条不相交的内对角线,把一个n边形分成n-2个三角形。三角剖分的三角数目序列指的是,依次列出与每个顶点相连的三角形数目组成的序列。 给出一份长度为n的三角数目序列,判断这个序列是否符合是一个n边形的三角数目序列。如果符合,输出所有三角形的顶点编号,并按字典序排列。思路:可以

2017-12-03 22:05:58 317

原创 ZOJ 3987 Numbers 2017CCPC秦皇岛站G题 大整数 二进制 贪心

题目:https://cn.vjudge.net/problem/ZOJ-3987题意:给出一个数n(不超过4000个十进制数字),将其分成m(不超过10的100次方)个数,要求这m个数的和等于n。求这m个数最小可能的按位或的值。思路:按位或的特点是这m个数如果在某一个二进制位上有一个为1的,那么最终结果在那一位就会是1,所以我们想要尽可能的让高位上没有1,而且只要有一位上确定必须是1,就尽可能利用

2017-11-25 17:20:41 694 1

原创 Puzzles CodeForces 696B 树形DP 期望计算

题目:https://cn.vjudge.net/problem/CodeForces-696B题意:给出一棵n个点的有根树,节点编号从1到n,编号为1的节点为树根。 从1号节点开始dfs,从父节点访问子节点时对子节点的选择是随机的,每访问一个节点需要1秒的时间。问访问到每个节点的时间期望是多少秒。思路:从树根向下递推。 dp(i)表示节点的时间期望,dp(fa)表示父亲节点的期望,dp(chi

2017-11-13 17:45:54 557

原创 An Easy Problem?! POJ 2826 计算几何

题目:https://cn.vjudge.net/problem/POJ-2826题意:二维平面上,给出两条线段,雨水竖直下落,问由这两条线段组成的容器能盛多少水(面积)。思路:一句话就描述完的题意,看似简单,却情况繁多,想AC一点不容易。 这题的具体做法很灵活,以下是我的方法,未必是最佳做法。先说一下有解情况下的面积计算方法: 如图: AB CD两线段交点为O,从过C点引平行线交AB与E

2017-11-13 17:25:14 343

原创 The Same Game UVA 758/Uvalive 5423 大模拟 求最大联通块并清除

题目:https://cn.vjudge.net/problem/UVA-758题意:模拟一个游戏,棋盘大小10行15列,取左下角为原点建立坐标系,有三种棋子,题目给出一个初始状态。游戏初始得分为0。 要求进行以下三个阶段的操作: (1)找到最大联通块,(若有多个优先选择最左的,若还有多个优先选择最下的),若联通块中棋子数>=2则清除,此时会得到(删除的棋子数 - 2)的平方的分数,依照要求输出

2017-11-13 12:02:27 389

原创 Maximum Value Problem FZU 2037 找规律 递推

题目:https://cn.vjudge.net/problem/FZU-2037题意:给出一个序列,由1~n这n个数组成,给出一个最大值Max,初始化为零。问按照题目给出的代码求这个序列的最大值需要更新多少次Max,将这个值暂记为m。题目所求该序列的所有排列的m的总和summ,以及summ/该序列总排列个数。举个例子: n = 3时 序列{1, 2, 3} —— m = 3 序列{1, 3,

2017-11-13 11:32:16 281

原创 Trash Removal uva1111/uvalive5138 World Final 2011 K 计算几何

2011年World Final签到题

2017-11-13 10:31:51 472

原创 算法竞赛入门经典 第二版 习题9-1最长滑雪路径 Longest Run on a Snowboard uva10285

题目:https://vjudge.net/problem/UVA-10285思路:简单的DP题 dp(r, c)表示以r行c列的点为起点的最长距离,上下左右如果能走就是下一个状态+1,没有一个方向能走边界条件就是1,取最大值。把这道题当作了一个JAVA练手题,不要在意这别扭的代码代码:JAVAimport java.util.Scanner;public class Main { publ

2017-08-29 10:03:00 748

原创 算法竞赛入门经典 第二版 习题9-2 免费糖果 Free Candies uva10118

题目:https://vjudge.net/problem/UVA-10118思路:DP题 dp(p1, p2, p3, p4, st) 表示四堆糖果分别拿到p1, p2, p3, p4个的时候,剩余的糖果能被拿走几个,st表示当前篮子里的状态,可以用set< int >记录或者用二进制集合记录,那么状态转移方程就是dp(分别把每堆顶上的糖果放到篮子里的状态),如果篮子里有相同颜色就+1, 没有就

2017-08-29 09:53:37 531

原创 CCF CSP认证 201703-4 地铁修建 Dijkstra最短路 或 Kruskal最小生成树

题目: 试题编号: 201703-4 试题名称: 地铁修建 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   A市有n个交通枢纽,其中1号和n号非常重要,为了加强运输能力,A市决定在1号到n号枢纽间修建一条地铁。   地铁由很多段隧道组成,每段隧道连接两个交通枢纽。经过勘探,有m段隧道作为候选,两个交通枢纽之间最多只有一条候选的隧道,没有隧道

2017-08-18 20:57:40 3581 4

原创 算法竞赛入门经典训练指南 例题1-15 网络 Network UVALive 3902

题目:https://vjudge.net/problem/UVALive-3902思路:贪心 + 无根树转有根树 + 搜索(我用的BFS) 以初始服务器为根节点算出各个叶节点的深度排好序,从深度最大的节点开始装服务,服务放在叶节点的k级祖先处,这样每个服务都能最大限度的覆盖叶节点,不断染色至所有叶节点都被染色。具体实现上我先用邻接表存的图,然后遍历节点度数为1的节点记为叶节点。然后从初始服务器B

2017-08-04 17:20:22 508

原创 算法竞赛入门经典训练指南 例题1-19 计算器谜题 Calculator Conundrum uva11549

题目:https://vjudge.net/problem/UVA-11549思路:利用Floyd判圈法退出周期。 Floyd判圈法(很像快慢指针的思路)——一个人速度是另一个人的两倍,那么如果道路是直的,则两人始终不相遇;如果道路上有环,那么跑的快的一定会追上跑的慢的(也就是套圈)。 注意只有跑的快的经历了周期中的所有情况。代码:c++#include <cstdio>#include <i

2017-08-04 10:21:51 472

原创 Cycling Roads URAL 1966 线段相交 + 并查集

题目:https://vjudge.net/problem/URAL-1966题意:给出n个点的坐标,并标号为1~n,给出m条线段,线段端点即为标号为1~n的点。判断是否所有点连通,两线段只要有公共点即互相连通。思路:用叉积判断线段相交,把所有直接连通的点所在集合合并,顺便统计集合数量,最终只剩一个集合就连通。 注意有种情况,把我坑的不轻。数据里有孤立点位于一条线段上的情况,我本以为只要把各种线段

2017-08-03 17:33:48 377

原创 算法竞赛入门经典 第二版 例题11-4 电话圈 Calling Circles uva247

题目: https://vjudge.net/problem/UVA-247思路:用Floyd算法求出闭包传递,即在有向图中,两点间是否连通。 然后用BFS也好DFS也好并查集也好把同一连通分支的点都输出即可,我用的BFS。Floyd算法核心代码只有几行,实质就是枚举中转点K,看是否有点I经过K点到J比直接从I到J路程要短,不断更新。 Floyd核心代码:for (int k = 1; k <=

2017-07-27 19:19:04 420

原创 算法竞赛入门经典 第二版 习题5-15 Fibonacci的复仇 Revenge of Fibonacci uva12333

题目:https://vjudge.net/problem/UVA-12333思路: 大整数类+字典树 一开始套刘汝佳大整数类的板子套出好多问题,之后自己用string重新封装了一个。 用大整数类求出斐波那契数列然后将前42位插入字典树,便于之后查找前缀。这题做出了灵异事件,在自己机器上预处理好几分钟都跑不完结果交上去竟然AC了。。。。。代码:c++#include <cstdio>#incl

2017-07-27 14:30:06 1086

原创 Fermat Point in Quadrangle POJ 3990 四边形的费马点 数学

题目:https://vjudge.net/problem/POJ-3990题意:输入四边形四个顶点的坐标(浮点数, 0<=x, y <=1000),求一个点到这四个顶点的距离和最小,输出这个最小的距离和。关于数据:这题数据可以极其之坑,我现在AC的代码能A掉POJ3990和UVALive5102却A不掉HDU3694,看样还有坑没补上。 说是四边形,实际样例就给了一种四个点都重合的情况,那么还有

2017-07-25 21:44:21 5670 1

原创 Til the Cows Come Home POJ - 2387 单源最短路 SPFA实现

题目:https://vjudge.net/problem/POJ-2387好久没写博客了,算自己懒吧。最短路入门题,自己练习用SPFA实现了下,不需要判负环也写上了。WA了好几次,忘记判断重边了。代码:C++//SPFA#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algor

2017-07-23 20:48:03 465

原创 Codeforces Round #418 (Div. 2) B. An express train to reveries

题目链接:http://codeforces.com/contest/814/problem/B题意:给出a、b两个数字序列和长度n,求一个序列,要求1到n每个数字都出现一次且与a、b序列分别有且仅有一处数字不同,若有多解,输出任意一个答案。思路:读题读的我好辛苦Orz。。。 可以看出,a、b两序列相同的部分就是答案序列,不同的部分可能有两种情况: (1)只有一个位置不同 统计相同的那部分1到

2017-06-08 11:12:20 401

原创 POJ 3126 Prime Path bfs求最短路

题目:http://poj.org/problem?id=3126题意:给出两个四位数(无前导零)a和b,都是素数,规定以下变换规则: 每次只能改变数的一位,变换完的数仍要求是质数,且仍为四位数。 求最少经过几次变换,能使a变换成b,如果不能从a变成b,则输出“Impossible”。思路:考虑将素数看作点,将能够经过变换得到的两点看作两点之间有边,建立无向图,利用邻接表存储。最后用bfs求出最

2017-05-20 15:12:27 403

原创 POJ 1064 Cable master 二分的应用

题目:http://poj.org/problem?id=1064题意:输入n根已有的电缆的长度(单位米),要求最终得到分成等长的k根,求分成的电缆长度的最大值(精确到厘米)。思路:从最长的电缆开始二分,当分成mid长的电缆的段数比k大时,说明取小了,反之说明取大了。精度控制问题十分的坑,所以干脆二分100次足够细为止。另外,由于这是实际问题,不能四舍五入,需要向下精确。代码:javaimport

2017-05-20 14:54:44 335

原创 算法竞赛入门经典 例题8-12 奇怪的气球膨胀 Erratic Expansion uva12627

题目:https://vjudge.net/problem/UVA-12627思路:图形的变化很有规律,可以看出下一个图形是由3个上一个图形和右下方蓝色的的正方形组成。我定义了一个函数bottum用于求k小时时倒数u行红气球总数,那么作差就可以求出A到B行之间红气球的数量。可以看出满足以下规律。(1)当u=0时个数为0。(2)当u属于图形下半部分时,k小时的个数

2017-05-17 10:54:11 754

原创 水题引发的对数学的感想

这是应用数学专业的一道C语言题,挺水的一道题倒是引发了我不少感慨。一开始用递归做,考虑暴力穷举,就像这样:#include long long cnt;int n;void solve(int u){ int i; if (u == 0) { cnt++; return; } for (i = 1; i <= u; i++) { solve(u

2017-05-16 18:23:45 340

原创 算法竞赛入门经典 第二版 习题6-5 巡逻机器人 Patrol Robot uva1600

题目:https://vjudge.net/problem/UVA-1600思路:BFS求最短路径问题,需要注意对于穿过障碍时的处理,具体见代码及注释。代码:C++#include #include #include #include using namespace std;const int movex[] = {0, 0, -1, 1};con

2017-04-18 20:43:01 1125

原创 算法竞赛入门经典 第二版 习题6-2 S树 S-Trees uva712

题目:https://vjudge.net/problem/UVA-712二叉树相关,只要题意能理解清楚就不难。大致题意:给出一棵满二叉树,每层的(包括根节点)按顺序被编号为“x+数字”,之后的01字符串输入末端节点(叶子)从左到右权值。给出一些查询,0表示遇到节点向求左走,1表示遇到节点向右走,每个查询到达的叶子的值。如查询001表示遇到编号为x1节点向左走,遇到编号为x2的节点

2017-04-10 19:37:20 476

原创 算法竞赛入门经典 第二版 习题6-3 二叉树重建 Tree Recovery uva536

题目:https://vjudge.net/problem/UVA-673思路:算是经典而基础的二叉树的题了,然而对我而言难度仍旧不小。数组建树我还是很不熟练,于是用的指针。我利用string的find函数返回的下标在中序遍历中确定当前节点是否有左右子数,注意返回的是size_t类型,是种无符号整型。顺便后序遍历时可以顺便将动态申请的空间释放,这样就不用单独释放空间了。

2017-04-08 20:50:02 665

空空如也

空空如也

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

TA关注的人

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