ACM
Dunyb
坚毅
展开
-
Comet OJ 热身赛
eustia题目描述Novus Aither是一个潜藏着多个势力的城市。每个势力都有一个唯一的领导人,每个领导人有一个属性值。如果两个势力的领导人的属性值分别为a,ba,ba,b,且∣a−b∣≤m|a-b| \le m∣a−b∣≤m,说明这两个领导人的思想有一定的相似之处,这两个势力可以合并,新的领导人可以指定为原来的两个领导人中的任意一个。新产生的势力可以依照相同的规则,继续与其他势力合...原创 2019-01-19 12:21:56 · 942 阅读 · 0 评论 -
HDU 1166 (树状数组入门)
题目链接 :点击进入AC代码:#include<iostream>#include<cstring>#include<math.h>#include<stdio.h>#define lowbit(i) ((i) & (-i)) using namespace std;const int maxn = 100010;i...原创 2019-03-26 19:14:37 · 254 阅读 · 0 评论 -
浮点数比较
#include<math.h>const int INF = (1 << 31) - 1; const double eps = 1e-8;const double Pi = acos(-1.0);#define Equ(a, b) ((fabs((a)-(b))) < (eps))#define More(a, b) (((a) - (b)) >...原创 2019-03-31 11:37:10 · 156 阅读 · 0 评论 -
HDU - 1241 (DFS)(BFS)
题目链接:HDU 1241思路: 用BFS DFS。AC代码:DFS#include<iostream>#include<cstring>#include<string.h>#include<queue>#include<stack>#include<vector>using namespa...原创 2018-08-23 08:48:47 · 271 阅读 · 0 评论 -
HDU 2612
点此进入题目:题目链接思路:开始想用 双向BFS 但是 写着写着不会了,又改用单向BFS。跑两次图,然后找到最小值即可AC代码:#include<iostream>#include<cstring>#include<string.h>#include<queue>#include<stack>#include<...原创 2019-04-10 20:15:09 · 272 阅读 · 0 评论 -
FZU 2150(优化BFS)
题目链接:戳此进入思路:数据范围比较小,每次进两个点BFS,搜完后判断一下,是否还有没有烧的草,如果有就标记。优化思路:纯暴力会有点重复,我们只需要保证这两个点如果搜索过就跳过。优化AC :时间差一半#include<iostream>#include<cstring>#include<string.h>#include<queue...原创 2019-04-11 09:43:52 · 528 阅读 · 4 评论 -
POJ 3278,抓牛问题(BFS)
题目链接:戳此进入这道题如果用DFS就是一路走到头没法向回拐,所以不能用DFS,我们用BFS+队列,广搜一下,第一先确定人的位置,之后确定牛的位置,如果人在牛前,人就只能后退,那差几步就是几分钟。第二种是牛在人前面,然后人开始找牛,三种方法,步数+1,步数-1,步数*2,然后开始遍历,先把人开始的位置压入队列,遍历下面3个地方,判断是否找到,判断是否越界,然后把队列头依次拿出,每次...原创 2018-08-22 10:18:40 · 2007 阅读 · 1 评论 -
随机选择
问题描述:给定一个由整数组成的集合,集合中的整数各不相同,现在要将他们分为两个子集合,使得这两个子集合的并为原集合,交为空集,同时在两个子集元素个数n1 与 n2 之差的绝对值 | n1- n2 | 尽可能小的前提下,要求他们各自元素之和s1 和 s2 的差的绝对值 |s1 - s2 | 尽可能的大,求这个|s1 - s2 | 是多少,第一个思路 sort 排序。第二种思路就是随机选择...原创 2019-04-02 18:55:14 · 1160 阅读 · 0 评论 -
UVA11624 Fire! (BFS)
题目链接:洛谷:或者这里:Vjudge更方便题目大意:火在蔓延,人在走。火会蔓延,不会熄灭,我们可以确定某个点着火的时间(广搜)。对于J来说,要是他走到某点的时间比火蔓延到该点的时间要短,那么他走到该点的时候,火还没蔓延过来,他就可以走到该点,否则,不能进入该点。思路:WA了一页开始是因为 不知道火可以有多把,然后之后的一页就不知道为啥WA,调调竟然过了,1)先把所有的火跑一遍图,然后...原创 2019-04-11 22:50:23 · 254 阅读 · 0 评论 -
HDU 1495(非常可乐)
题目链接:点击进入思路: 要求最短的操作此数当然就往BFS上靠,然后我们需要读懂题,3个杯子互相倒,6种情况,然后如果杯子大小相同 那么只需要一次操作,如果大小不同,那就是当大的那个杯子装满1/2可乐,并且 可乐瓶中还有1/2时退出AC:#include<iostream>#include<cstring>#include<queue>#...原创 2019-04-09 10:54:06 · 385 阅读 · 0 评论 -
POJ 3414 (BFS)
点此进入题目链接:POJ 3414思路 :这题给 给这个 题目一样 HDU - 1495非常可乐一样 只不过需要记录路径AC:代码#include<iostream>#include<cstring>#include<queue>#include<stack>#include<math.h>#include&...原创 2019-04-09 12:57:39 · 307 阅读 · 0 评论 -
图 (Dijkstra)
有向图代码无向图代代码邻接矩阵比较简单就直接开一个二维数组就OK邻接表可以用vector,因为vector是个变长数组嘛,vector<int> Adj[N];可以设置出度邻接表,或者入度邻接表如果需要权值。那就弄个结构体嘛struct Node{ int v; //边的终点编号 int w; //边权 };vector<Node>...原创 2019-03-01 18:50:20 · 720 阅读 · 0 评论 -
并查集 (模板)
附上知识博客:并查集4步走,初始化,查找,合并,路径压缩1)初始化for(int i = 0; i < = N; i++){ father[i] = i; //也可以为-1}2)查找//递推式 int findFather(int x){ while(x != father[x]){ x = father[x]; } return x;}/...原创 2019-03-01 12:38:27 · 220 阅读 · 0 评论 -
Little Sub and Pascal's Triangle (杨辉三角形)
Little Sub and Pascal's TriangleLittle Sub is about to take a math exam at school. As he is very confident, he believes there is no need for a review.Little Sub's father, Mr.Potato, is nervous abo...原创 2019-01-19 16:13:33 · 614 阅读 · 0 评论 -
素数打表(4种方法)
1既不是素数也不是合数打表:是一种典型的用空间换时间的做法,一般指将所有可能需要用到的结果事先计算出来,这样以后后面需要用到时就可以直接查表获得。在什么情况下我们需要打表?(1)在程序中一次性计算出所有需要用到的结果,之后查询直接取这些结果。举个例子,假如我们算Fibonacci数中的F(n)我们假如需要算很多次Q次 比如:(10^6),每次我们都是从头开始算的,对于Q次查询就会产...原创 2019-01-21 12:18:09 · 7201 阅读 · 0 评论 -
区间贪心
题目描述给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些区间两两没有交集。看到这一个题我们需要现在纸上画一画,有3种情况1) 区间相交。2)区间不相交。3)区间包含(其实也算区间相交)。我们会发现,当区间相交时,我们用小区间就行了,能保证我们找出的不相交的区间最多。然后我们将所有区间的左端点也就是 x 从大到小排序,然后每次找出右端点在这个左端点左面的就是一个,然后...原创 2019-02-17 10:08:07 · 1514 阅读 · 0 评论 -
ACMer的算法之路
ACM思维导图原创 2018-11-18 19:16:09 · 402 阅读 · 0 评论 -
树的遍历 (25 分)给中序和后序,写层序遍历
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 ...原创 2019-02-22 16:59:13 · 2386 阅读 · 0 评论 -
快速幂
以前我看快速幂真的看不懂,但是当我慢慢对递归(递归大法好)有一些理解后,对二分又理解一些后,就能够自己写出快速幂的递归写法了。求 a^b % m的值,这个用普通算法我就不说了,时间复杂度O(b)当我知道快速幂之后。才发现 a ^ b还能这样算,太秀了吧,当然你必须带一些二分和递归,不然你看不懂它的递归式。会想(这TM是What ??? )数学之美就是你在能不断刷新你的认知,还TM能这样,太...原创 2019-02-18 11:24:54 · 31035 阅读 · 13 评论 -
two pointers
两个指针,想一想,能根什么联系上呢?好像是这样,遍历数组时,我们在脑袋中模拟是不是用一个小指针,一次一次往后挪动。用一个例子引入:给定一个递增的正整数序列和一个正整数M,求序列中的两个不同位置的数a 和 b,使得它们的和恰好为 M,输出所有满足条件的方案,例如给定序列{1, 2, 3, 4, 5, 6}和正整数M = 8 就存在 2 + 6 = 8,3 + 5 = 8;以我们正常的思路...原创 2019-02-18 14:24:41 · 148 阅读 · 0 评论 -
入门数学(一)最大公约数,最小公倍数,分数
1,最大公约数我们求 a 和 b的最大公约数(最大的因数),一般使用gcd(a,b)来表示a 和 b 的最大公约数,而求解最大公约数常用欧几里得算法来求,(辗转相除法)。我们先来推演一下过程设a , b均为正整数,则gcd(a,b) = gcd(a, a%b)证明原理: a = kb + r; r = a- kb;设 d 是 a 和b 的公约数,所以 r = a- ...原创 2019-02-19 11:57:11 · 1047 阅读 · 0 评论 -
入门数学(二)素数,质因数分解
素数筛选“埃式筛法”具体步骤:引用百度百科求25以内的所有素数 列出2以后的所有序列: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 标出序列中的第一个素数,也就是2,序列变成: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...原创 2019-02-19 14:43:53 · 936 阅读 · 0 评论 -
入门数学(三)大整数运算
一, 大数的储存A+B的题目如果A和B在long long 范围内,那就太简单了,一般怎么会有这么简单的题呢?如果出A+B那肯定有个坑等着你里,A和B如果是 1000位的数。那么我们可以定义一个Int 型的整型数组,d[1000]那么这个数组中的每一位就代表了存放的整数的每一位,我们动手试一试咦发现,这样存可以但是,算+ - 乘除的时候怎么算啊,对了,那我们就倒着存试试?动动试...原创 2019-02-19 19:01:50 · 245 阅读 · 0 评论 -
C++ 读入优化(关闭输入输出流),从文件读数据,把数据输出到文件中
std::ios::sync_with_stdio(false);cin.tie(0), cout.tie(0); freopen("in.txt", "r", stdin); //输入重定向,从文件 in.txt 中读入数据freopen("out.txt", "w", stdout); //输出重定向,输出数据将保存在out.txt文件中 inline int ...原创 2019-09-03 22:04:03 · 1490 阅读 · 0 评论