ACM
一条菜狗
Because we don't know how to quit.
展开
-
CSU2059(递推,找规律)
题解:每个Z有3条边,每条边可以有3个交点,也就是每个Z可以有9个交点,(类似于直线相交);得到ans(Z)=ans(Z-1)+9*(Z-1)+1;如果这样直接递推,可能会超时。。。所以采用初中学过的数列知识,继续化简。#include<stdio.h>int main(){ int T; long long m; while (~scanf("%d"...原创 2018-09-05 22:32:50 · 554 阅读 · 0 评论 -
POJ - 3126
典型的bfs,直接暴力枚举四位上的数字。#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<map>#include<set>#include<cmath> using namespace std原创 2018-10-28 15:46:12 · 372 阅读 · 0 评论 -
ZOJ - 1709 bfs
经典挖油的BFS,发现一个油田如果它合规,就把它放入队列中,然后继续搜寻下去。最后需要进行几次BFS(换句话说,中断过几次bfs)就说明有几个大油矿。#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<map>#include...原创 2018-10-28 15:50:41 · 218 阅读 · 0 评论 -
POJ1066向量叉乘法解题报告
首先你要知道如何判断两条线段相交:https://blog.csdn.net/qq826309057/article/details/70942061 思路:枚举外墙上每道内墙的两个端点和p(宝物)的连线这条线段和内墙的交点的次数最小值即为需要炸墙的最小次数#include<iostream>#include<cstdio>#include<cmat...原创 2018-10-27 16:57:37 · 387 阅读 · 0 评论 -
POJ1269解题报告
利用叉乘:https://blog.csdn.net/zxy_snow/article/details/6341282#include<cstdio>#include<cstring>#include<cmath>#include<iostream> using namespace std;#define abs(x) ((x)&g...原创 2018-10-27 19:34:58 · 215 阅读 · 0 评论 -
UVA 10652 Board Wrapping 凸包
题意:求闭包的Andrew算法,在刘汝佳的 算法竞赛训练指南的272页有讲。#include<iostream>#include<cstring>#include<cmath>#include<vector>#include<algorithm>using namespace std;const double PI...原创 2018-10-27 20:51:50 · 164 阅读 · 0 评论 -
HDU - 2717
#include<iostream>#include<cstdlib>#include<cstdio>#include<cmath>#include<cstring>#include<fstream>#include<queue>#define MAX 100010#define next原创 2018-11-04 11:05:25 · 273 阅读 · 0 评论 -
HDU - 1429胜利大逃亡(续)bfs与二进制按位操作
思路:有点像我们以前玩的魔塔,拿小写字母表示钥匙,去开大写字母的门,如果用模板的bfs去写,将vis设为二维数组,记录地图上的二维坐标,来标记走过的点,那么这样很明显会失败,因为勇士是可能要拿钥匙后,走之前标记过的回头路,所以我们要用vis三维数组存状态。第三维存钥匙的种类。那么问题来了,钥匙是个字符,而vis是三维整型数组,怎么转化呢?可以用二进制的按位与,按位或操作来实现钥匙的获...原创 2018-11-04 15:53:54 · 163 阅读 · 0 评论 -
POJ - 1328(贪心)
#include<cmath>#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;struct Interval{ double left; double right;};bool comp...原创 2018-11-09 23:45:00 · 131 阅读 · 0 评论 -
CSU - 1726 优先队列bfs
#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<queue> using namespace std;int sx,sy,n,m;const int maxn = 105;struct node{ int x,y,st...原创 2018-11-04 16:54:37 · 195 阅读 · 0 评论 -
POJ1654
思路:凸包算法,Andrew,坑的一点是int会爆,要用longlong,而且注意没有小数时输出整数。ps:这个题目其实有点问题,因为没有说明它是凸多边形,如果是凹多边形这么做是无意义的(开始我以为要考虑凹多边形,把算法弄得超级复杂调试了半天也不行)。#include <iostream>#include <cstdio>#include <cst...原创 2018-10-28 12:21:07 · 267 阅读 · 0 评论 -
POJ-3620连通分量
题意:如果两个区域点是被淹没的并且是相邻的(上下相邻或者左右相邻),那么他就是被某个水池覆盖的区域,问你最大的水池能覆盖多少个区域。思路:找一个被淹没的区域,然后上下左右搜索相邻的被淹没区域,然后在此基础上深搜。用一个mmax维护最大水池。#include<iostream>#include<cstring>#include<cmath>usi...原创 2018-09-26 17:19:36 · 209 阅读 · 0 评论 -
单源最大权路径 CSU - 1960(DFS)
思路:由于n的数据上限为1e5,不能直接用二维数组存边的权值(x,y分别做第一维和第二维)。所以把子节点写入node里,用vector存。#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<queue>#include...原创 2018-09-09 10:09:51 · 242 阅读 · 0 评论 -
ZOJ1633 Big String
题解:虽然题目叫大串串,但很显然,这个题不能直接暴力递推写,会报MLE(内存超出限制)。。。所以逆推:用数组记录big string的长度,找到最小的大于等于n的len[i],那么可以想象,n必定>len[i-1],因为len[i]是len[i-1]加上len[i-2]构成的,那么用n减去len[i-1]后,再继续找最小的大于等于n的len[i],知道n<7,结束循环,输...原创 2018-09-06 12:36:00 · 765 阅读 · 0 评论 -
hdu2553-N皇后问题
全排列问题。#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<queue>#include<algorithm>#include<vector>#include<stack&am原创 2018-09-09 19:47:09 · 171 阅读 · 0 评论 -
Prime Ring Problem HDU - 1016
经典回溯法。。。#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;int n;int a[25];bool v...原创 2018-09-09 21:33:53 · 123 阅读 · 0 评论 -
CodeForces-598A
思路:给定一个n,输出-1-2+3-4+5+6+7-8.....,等价于1+2+3+.....+n-2*(1+2+4+8+...)。前面可以由求和公式,括号里是一个等比数列。代码:#include<iostream>#include<cstring>#include<string>#include<cmath>#include&...原创 2018-09-06 16:56:12 · 772 阅读 · 0 评论 -
CodeForces - 600B (STL基础题)
You are given two arrays of integers a and b. For each element of the second array bj you should find the number of elements in array athat are less than or equal to the value bj.InputThe first li...原创 2018-09-06 18:50:00 · 389 阅读 · 0 评论 -
CodeForces-598C-Nearest vectors【高精度几何】
题解:用atan2(long double y,long double x)返回点(x,y)与x正半轴的夹角,取值从(-PI,PI]。得到所有的单点偏转角排序后,用相邻数组元素相减得到两点与原点连线的夹角,然后维护它的最小值就行了,注意最后还要用第一个减最后一个(构成整个循环),并且如果其若为负数还要加2*PI.#include<iostream>#include<c...原创 2018-09-06 21:02:18 · 241 阅读 · 0 评论 -
CodeForces - 348A 黑手党(二分)
题意:玩黑手党游戏,每局游戏需要一个管理者,第i个玩家想玩a[i]局,请问最少一共要玩多少局?思路:设mid为玩的局数,每个玩家最多能当mid-a[i]局管理,就是他玩够了就可以在剩下的比赛中当管理,那么mid-a[i]加起来只要能大于mid就说明满足要求。然后二分mid.#include<iostream>#include<cstring>#inc...原创 2018-09-07 12:19:10 · 318 阅读 · 0 评论 -
判环 HDU - 1035
难点应该在如何判断机器人进入了一个loop,和loop的长度。思路:dfs机器人的坐标,(i,j),将它走的每个坐标标记,然后用step记录到达此处的步数,用map将两者联系起来,当机器人走到被标记的坐标时,说明进入了loop,然后用现在的step减此处坐标对应的step就是loop长度。#include<iostream>#include<cstring>...原创 2018-09-14 22:48:56 · 174 阅读 · 0 评论 -
CSU1232懒汉的旅行
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <string>#include <stack>#include <queue>#include <sstream&am原创 2018-11-04 21:19:41 · 181 阅读 · 0 评论 -
CodeForces - 616C详解(很有意思的bfs)
思路:很有意思的一道题,首先如果暴力遍历"*",bfs(),运行到第11个测试点就超时了,因为点比较多,是1000*1000的格子,每次bfs一个点要进行4*10^6次运算(4是因为要上下左右找一次)。也就是最大运算是10^6*4*10^6等于4*10^12,远超出计算机一次能运算的10^8.正确思路:遍历" . ",把"."的连通区域bfs出来,给它赋上标记,表明这些点是一个连通区...原创 2018-11-07 15:54:32 · 711 阅读 · 0 评论 -
CSU1224古怪的象棋(典型bfs)
思路:经典bfs,无脑让马走八个方向就行,注意别出边界。#include<stdio.h>#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<math.h>#include<cstdlib&g原创 2018-11-07 16:29:24 · 247 阅读 · 0 评论 -
HDU1.2.6Just A Triangle
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#define maxn 1050using namespace std;int a[maxn];struct Node{ int x; int y...原创 2019-01-13 14:45:39 · 226 阅读 · 0 评论 -
The Seven Percent Solution
#include <iostream>#include "stdio.h"#include "string.h"using namespace std;int main(){ char c[1000]; while(gets(c)) { if(c[0]=='#')break; for(int i = 0 ; i &l...原创 2019-01-13 14:48:13 · 398 阅读 · 0 评论 -
HDU2.1.1 最小公倍数
最小公倍数就是(a*b/最大公因数)最大公因数采用辗转相除法。#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#define maxn 1050using namespace std;int...原创 2019-01-13 15:01:19 · 646 阅读 · 0 评论 -
两种快速筛选素数的方法:埃式和欧拉筛法
两种筛选素数的方法:埃式和欧拉筛法#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#include<vector>#define maxn 1050using namespace st...原创 2019-01-13 15:58:46 · 862 阅读 · 0 评论 -
HDU 2138 How many prime numbers
记得 sqrt(a*1.0)或者 sqrt(a)+1不然开根开出来后会取整,导致wrong answer#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#include<vector>...原创 2019-01-13 16:12:30 · 216 阅读 · 0 评论 -
HDU2.1.4 又见GCD
放码子:#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<algorithm>using namespace std;int gcd(int a,int b){ int temp; if(a<b){ te...原创 2019-01-14 12:46:43 · 250 阅读 · 0 评论 -
求解素因子
素因子的定义:对于一个数n来说,将它的因子拆到若干个素数相乘,这些素数被称为n的素因子。比如 12可以被拆为2 66不是质数,可以继续拆为2*3所以最后12的素因子就是 2, 3(不计重复元素)-------------------------------------------------分割线---------------------------------------前言...原创 2019-01-14 13:46:45 · 8489 阅读 · 0 评论 -
HDU2.1.5 找新朋友
花里胡哨的一堆东西,其实就是在区间[1,N],求N的互质数有多少个。这里引入一个欧拉函数的概念:(欧拉真的高产似母猪)f(n)=n*Π((p-1)/p) p为n的质因数#include<iostream>#include<cstring>#include<cmath>#define maxn 1000005using namespace ...原创 2019-01-14 18:31:15 · 309 阅读 · 0 评论 -
Largest prime factor
跟素数筛有相似处另外:不要用while(cin>>n),会导致TLE(orz)#include<iostream>#include<cmath>#define maxn 1000005using namespace std;int flag[maxn];void prepare(){ int k=1; for(int i=2;i<...原创 2019-01-14 19:05:36 · 235 阅读 · 0 评论 -
HDU1.3.1FatMouse' Trade
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#define maxn 1050using namespace std;int a[maxn];struct Node{ int x; in...原创 2019-01-13 14:41:01 · 244 阅读 · 0 评论 -
HDU1.3.5排序
这题有点意思,注意几点:1.在判断s[i]!='5'时,记得加上一个判断i<s.length(),因为有可能最后一个数不是'5',那么它会继续访问s[s.length()-1]的后一个,也就是会越界,爆出Runtime Error2.各种初始化要到位,用完记得统统回归原位3.当出现连续的'5'时,你的结果可能会把它当成0输出,所以要加个判断条件,判断cnt是否为零,若为0,那不用...原创 2019-01-13 13:53:31 · 205 阅读 · 0 评论 -
POJ1521哈夫曼编码
思路:参照哈夫曼编码,可以不用建树,用优先队列,每次把权值最小的两个加起来再入队,做到哈夫曼树的效果。#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<cmath>#include<queue>#inc...原创 2018-11-10 19:01:23 · 975 阅读 · 0 评论 -
2031: Barareh on Fire(预处理+bfs)
思路:两次BFS一次处理火烧,得到每个点着火的时间,第二次bfs处理人的逃跑。注意,像这类有多组数据输入的时候一定要注意初始化条件,比如几个vis数组要置零,队列一定要记得清空。#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#includ...原创 2018-11-07 20:28:15 · 195 阅读 · 0 评论 -
HDU-2102 A计划 BFS
#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>using namespace std; char map[2][15][15], hash[2][15][15]; int sx, sy, ex, ey, sk, ek, S; bool l...原创 2018-11-08 19:52:16 · 179 阅读 · 0 评论 -
HDU - 1789贪心
#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<algorithm>#include<queue>#include<map>using namespace std;bool f[1005];s原创 2018-11-08 21:14:10 · 221 阅读 · 0 评论 -
UVA11572
#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<algorithm>#include<queue>#include<map>#include<set>using na原创 2018-11-08 21:56:19 · 220 阅读 · 0 评论