- 博客(17)
- 收藏
- 关注
原创 硬币游戏
来源:USACO 2009年11月农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为“Xoinc”的两人硬币游戏。初始时,一个有N(5 <= N <= 2,000)枚硬币的堆栈放在地上,从堆顶数起的第I枚硬币的币值为C_i (1 <= C_i <= 100,000)。开始玩游戏时,第一个玩家可以从堆顶拿走一枚或两枚硬币。如果第一个玩家只拿走堆顶的一枚硬币,那么第...
2019-10-18 13:31:08
999
原创 尼克的任务题解
题目大意:在N个时间段中有M个任务,每个任务有一个开始时间和持续时间,当一个有任务的时间段尼克为空闲状态时,他必须进行当前的任务,如果有多个任务,他可以选择任意一个。求他能空闲的最大值。N,M<=1e4luogu:https://www.luogu.org/problemnew/show/P1280codevs:http://codevs.cn/problem/1158/...
2018-08-19 10:08:48
497
原创 一道普通的hash
题目大意:有N个点,每加一个点,能组成多少个矩形。4<=N<=1000,每个点横纵坐标的绝对值不会超过16000大致思路:由矩阵的性质得,当一个四边形为矩形时,它的两条对角线相等且平分。那么不妨设有两条线段,端点坐标分别为(x1,y1)、(x2,y2) 和 (x3,y3)、(x4,y4),那么需要满足:// 保证平分1.x1+x2=x3+x4 2.y1+...
2018-08-18 11:13:57
345
原创 LCA
概念:两个点最近的共有的祖先节点。求法:1.向上标记法这种算法,emmmmm....可以把它理解为是暴力,即:假设树上有两个点x,y,那么从x走到根节点,将路过的点都进行标记,再从y向上走到根节点,第一次遇到已经标记过的节点时,就找到了LCA(x,y)。2.Tarjan求LCA该算法是一种离线算法,即在一次操作中将问题全部解决。具体过程如下:1.枚举与当前节点有边相...
2018-07-21 13:44:57
679
原创 NOI2002银河英雄传说
题目大意:有一个划分为N列的星际战场,各列依次编号为1,2,……,N。有N艘战舰,也依次编号为1,2,……,N,其中第i号战舰处于第i列。有M条指令,每条指令格式为以下两种之一:1.M i j,表示让第i号战舰所在列的全部战舰保持原有顺序,接在第j号战舰的尾部。2.C i j,表示询问第i号战舰与第j号战舰当前是否处于同一列中,如果在同一列中,它们之间间隔了多少艘战舰。其中N&...
2018-07-17 20:07:38
823
原创 线段树(一)
概念:线段树(Segment Tree)由n个包含了1段区间(线段)的完全二叉树组成的树形数据结构。思想:利用它的树形结构,将其包含的数据进行快速的修改和查询。(可用于维护dp)基本操作:存储方式:struct Tree{ int left,right,value; //left表示左端点,right表示右端点,value表示存储的值 }tree[MAXN*4+1];...
2018-07-17 07:52:13
134
原创 贪心专题
概念:通过正确的贪心策略来实现程序的最优解。常用方法:1.微扰2.范围缩放3.决策包容性4.反证法5.数学归纳法各类例题:一.智力大冲浪大致题意:刚开始有m元钱,有n个小游戏,且每个小游戏有一个对应的时间段,每没有完成一个小游戏会扣去相应的钱数。求最多能获得多少钱。其中∑ 扣去的钱数<m.做法:将每个游戏的时间段和钱数用结构体存储,以扣去的钱数为第一关键字进行从大到小排序; 把i从1-n进行...
2018-07-02 18:29:58
340
原创 二叉堆与优先队列
概念:二叉堆:是一种支持插入、删除、查询最值的数据结构。它其实是一棵满足堆性质的完全二叉树。若树中的任意一个节点的权值都小于等于其父节点的权值,则称该二叉树满足“大根堆性质”(反之则是小根堆)。优先队列:可以理解为一个大根二叉堆。存储方式:根据完全二叉树的性质,我们直接按层存储,将二叉堆用一个数组保存。在这种存储方式中,父节点的编号等于子节点的编号除以二,左子节点的编号等于父节点的编号*2,右子节...
2018-06-07 09:36:53
569
原创 并查集初步
并查集是什么?并查集是一种树形的存储结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。——百度百科并查集的思想将n个元素进行合并或查询该集合的根节点,来判断两个元素是否属于同一个集合。代码实现初始化for(int i=1;i<=n;i++) father[i]=i; //最开始每个元素都是自己的父亲,下文father简称为fa查询...
2018-05-13 14:41:24
248
原创 图论——最短路之Floyd&Dijkstra
概念: 求图上一点到另一点的最短距离。算法: 一:Floyd(弗洛伊德) Floyd算法可以求出图上任意一点到另一点的最短距离。 思想:通过三重循环,用两重循环来枚举任意两点,一重循环枚举中节点,如果第一个点到中点+另一点到中点的距离<这两点先前的距离,则这两点的距离=第一个点到中点+另一点到中点的距离。 代码如...
2018-04-30 13:21:30
353
原创 洛谷P1353 跑步
题目链接:点击打开链接分析: 首先,这道题有几个必须要知道的条件: 1.当贝茜开始休息时,她必须要休息到0才能继续跑步; 2.贝茜在时间过完时的疲劳度必须是0; 3.贝茜的疲劳度不能超过m 那么我们就求什么设什么,则dp[i][j]方程表示第i分钟为j的疲劳度时可以跑的最大距离。题目所求的就可以转化为在n分钟为0的疲劳度时可以跑的最大距离,即d...
2018-04-17 18:54:32
286
原创 搜索专题(二)
广搜:广搜和深搜有明显的不同(虽然都是搜索,名字也差不多),不过我觉得最大的不同就是它们的实现方式。深搜是通过栈来实现的,虽然表面上看不到,其实它的递归过程就是一个栈的模拟,因此才能做到“一条道走到黑”。广搜是通过队列来实现的,因此它就可以四面八方地进行扩展,直到搜索到正解。和深搜相比,广搜的效率较快,但是空间较大,容易爆内存。因此两种搜索算法各有所长,在不同的题目应使用有优势的算法。思想
2018-02-06 22:06:25
193
原创 搜索专题(一)
搜索的种类:搜索用很多实用和高效的算法。举个栗子:广度优先搜索(bfs),深度优先搜索(dfs),枚举大法,蒙特卡洛树等等——详见百度百科《搜索算法》。 常用搜索简介:广度优先搜索:广度优先搜索,又称宽度优先搜索,简称广搜或宽搜。从当前位置开始进行四面八方搜索。深度优先搜索:深度优先搜索,简称深搜。与广度优先搜索相反,从当前位置一直向前搜索,知道不能搜索再改变...
2018-02-06 21:40:13
840
原创 数据结构之栈、队列(入门)
在STL里就有栈(头文件:stack)和队列(头文件:queue)的容器,但是我们通常手写来实现。因为STL里的栈和队列不能进行遍历,并且运行速度较慢。一、栈栈的概念: 栈(stack)是一个后进先出或先进后出的一个特殊线性表(它只能在栈顶进行入栈或出栈)。 如图所示: 栈的基本操作: 定义:int Stack[maxn],t...
2018-01-15 11:11:51
235
原创 高精
(高精是什么东西我相信大家都知道,我就不详细说了(不知道的百度))高精其实可以相当于是一个强模拟,它模拟的是一个列竖式计算,总体思想如下:先读入两个字符串,再把它一个一个分解,分别存入两个数组中,如:字符串1:123456789123456789字符串2:987654321987654321 1 2 3 4 5 6 7 8 9 10 11 ...
2017-12-06 10:38:25
417
原创 我的第一篇学术类blog——判断三角形
题目描述: 思路:先排序,再进行各种判断,最主要的一点,输出yse!详细如下://我也没有验证过对不对#include<iostream>using namespace std;int main(){ int a,b,c,t; cin>>a>>b>>c; if(a==0||b==0||c=...
2017-11-01 21:58:52
247
原创 初赛总结
//回头再看之前写的总结,发现有些过于幼稚,也对之前的无知感到懊悔。一些高阶数据结构和高级算法其实并没有想象中的那么困难,对于一个初学者来说,也不应该对一个听上去很难的算法而就此止步。我们应该勇于去尝试,才能有所收获,否则你只会在整天浑浑噩噩地在机房中水过,而没有任何收获。——致初学者 2018.11.06//我好菜啊——20180819 经历了这次初赛,我不仅懂得了不少知识与经...
2017-11-01 20:42:01
358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人