- 博客(20)
- 收藏
- 关注
原创 HDU 2124 Can you find it?(二分)
思路:直接按照题目描述的话 n3{n^{3}} 的复杂度有些受不了,所以我们先预处理出 a[i] + b[i] 的所有情况存在一个数组里,然后对这个数组sort,之后每次分别查询 X - c[i] 是否在那个数组里即可。AC代码:#include <iostream>#include <cstdio>#include <string>#include <algorithm>#define ep
2017-01-17 23:32:59 504
原创 HDU 2199 Can you solve this equation? (二分法解方程)
坑点:注意double类型不能直接判断 == 判断a和b相不相等要借助eps(精度)写成 if( (a - b) < eps )#include <iostream>#include <cstdio>#include <string.h>#include <queue>#define eps 0.0000000001typedef long long int lli;using name
2017-01-17 15:16:34 141
原创 POJ 3522 最大边与最小边差值最小的生成树(最小生成树的性质)
思路:最小生成树的性质:最短边与最长边的间距,即:最长边的权值-最短边的权值 最小 所以对这个题来说,先对所有边的权值排个序,然后分别以其中的一条边作为最短边来进行最小生成树的构造,记录每个最小生成树的结果。注意,剩下的至少要有n-1条边才能构成,所以可以稍稍剪一下枝。#include <iostream>#include <cstdio>#include <string.h>#includ
2017-01-17 11:10:40 999
原创 HDU 1568 犀利的fibonacci数列(log 科学记数法)
思路:1)前20项没超过10000,直接递推出 2)首先我们知道fibonacci的通项公式: 然而这个得出来的数太大了。。。有一种很巧妙的思路:我们想要求出某个很大的数的前几位,比如求斐波那契数列第40项102334155的前6位,我们可以把 102334155化成1.02334155*10^8,然后把1.02334155这个数乘100000取整就可以了。这种方法可以求一个数的前任何位。
2017-01-16 17:04:19 81
原创 Poj 3070 Fibonacci (矩阵快速幂 )
矩阵快速幂:#include <iostream>#include <cstdio>#include <string.h>#include <cmath>#define N 2typedef long long int li;using namespace std;struct Mat{ long long int mat[N][N]; Mat(){ mat
2017-01-16 15:31:29 172
原创 POJ 3292 Semi-prime H-numbers (类似素数筛)
题意:定义一种数叫H-numbers,它是所有能除以四余一的数。 H-numbers分三种: 1、H-primes(素),这种数只能被1和它本身整除,不能被其他的H-number整除 2、H-semi-primes(半素)是由两个H-primes相乘得出的 3、剩下的是H-composite(合数) 问给一个数,求1到这个数之间有多少个H-semi-primes注意不要把合数算进去了。#i
2017-01-16 13:39:51 235
原创 HDU 1426 Sudoku Killer ( 暴力dfs 输入输出格式坑)
坑点:1,输入第二组之后的都是先输入哥换行再输入 2,输入每一组数据之后要换行,最后一组不用。 3,太粗心了,多样例的竟然把最重要的初始化忘了。。。#include <iostream>#include <cstdio>#include <string.h>#include <queue>#include <vector>using namespace std;int v[10][10]
2017-01-16 12:55:30 304
原创 HDU 2612 Find a way (两次bfs)
坑点:进了kfc可以从这个建筑物里出去,四面八方的出那种。。。#include <iostream>#include <cstdio>#include <string.h>#include <queue>using namespace std;int v[300][300];int ans[220][220];int d[4][2] = {{0,-1},{0,1},{1,0},{-1,0}
2017-01-15 20:47:26 301
原创 HDU 3003 PuPu(N非常大 语死早)
坑点:when an infant PuPu was born, all of its skins were opacity, and since the day that all of a PuPu’s skins has been changed from opacity to clarity, PuPu is an adult PuPu.翻译:当所有皮肤都变过一次色的时候,成熟。。。所以也就是
2017-01-15 10:36:48 295
原创 UVA 10025 The ? 1 ? 2 ? ... ? n = k problem (智商题?想象力)
卡点:1,可能是太困了,,状态差的一匹。。先是没有考虑k=0的情况,(其实当中输入过k=0,然后输出0,然而我的大脑没一点反应。。) 2,好不容易找到了这个trick,然后忘记写continue,导致k=0时总是多输出一个数。。。#include <iostream>#include <cstdio>#include <cmath>typedef long long int lli;usi
2017-01-14 22:47:18 93
原创 poj 3984 迷宫问题(bfs 输出序列)
#include <iostream>#include <cstdio>#include <string.h>#include <queue>using namespace std;int v[10][10];int cnt[10][10];// 记录走到这点的时间int d[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};struct node{ int x
2017-01-14 16:22:12 279
原创 Hihocoder 1050 树中的最长路(树的直径 两次dfs/折点)
两次dfs:#include <iostream>#include <cstdio>#include <string.h>#include <queue>using namespace std;int vis[101000];int head[101000];int cnt;struct node{ int y; int next;};node e[300000];v
2017-01-14 16:17:18 241
原创 UVALive 3644 X-Plosives (并查集)
思路:当出现环路时,化合物会爆炸,所以我们通过并查集来构建一棵树,在这棵树上,增加任意一条边都会构成环路。问你有多少边是能使这颗树成环。#include <iostream>#include <cstdio>#include <string.h>#include <queue>#include <cmath>typedef long long int lli;using namespac
2017-01-13 22:06:19 393
原创 UVA 673 Parentheses Balance ( 栈 + 坑)
思路:其实就只说一点就好:scanf("%s",xxx) 会略过空串,然而这题空串也得输出yes。。。#include <iostream>#include <cstdio>#include <string.h>#include <queue>#include <cmath>typedef long long int lli;using namespace std;char s[222]
2017-01-13 21:43:44 267
原创 POJ 1442 Black Box(第k次询问第k小,两个堆)
思路:用一个大顶堆和一个小顶堆,将队列分为两部分,大顶堆的堆顶小于小顶堆的堆顶,这样就连续的把数列分开了,每次询问只要把小顶堆里的数扔到大顶堆里去,然后调整两个堆使得大顶堆的堆顶小于小顶堆的堆顶 ,然后此时大顶堆的堆顶就是第k小。#include <iostream>#include <cstdio>#include <string.h>#include <queue>#include
2017-01-13 21:37:19 248
原创 POJ 1862 Stripies (priority_queue 优先队列)
做法:全部放入队列,每次去两个大的进行 2 * sqrt(m1*m2 ) 因为要使最终的结果最小,所以大的先进行开方,(是因为先进行合并的进行更多次开方)。#include <iostream>#include <cstdio>#include <string.h>#include <queue>#include <cmath>typedef long long int lli;
2017-01-13 21:29:32 235
原创 HDU 2102 A计划(bfs + 判断)
注意:bfs+判断,类似与hdu1080。#include <iostream>#include <cstdio>#include <string.h>#include <queue>using namespace std;char s[20];struct node{ int z,x,y,t; node(int zz = 0,int xx = 0,int yy = 0,in
2017-01-13 10:40:56 65
原创 HDU 1180 诡异的楼梯(bfs+判断)
注意:1,楼梯不会连续出现,避免考虑很多楼梯连着的复杂情况。 2,存在等在楼梯前,然后走楼梯的情况。 3,考虑过了楼梯直接就是终点的情况。#include <iostream>#include <cstdio>#include <string.h>#include <queue>using namespace std;char s[22];int sx,sy;int v[30][30];
2017-01-12 21:37:15 179
原创 HDU 1016 Prime Ring Problem (dfs)
素数环简单dfs,深搜就好。#include <iostream>#include <cstdio>#include <string.h>using namespace std;int sp[50]; // 是否是素数int vis[20]; // 表示这个数字是否被访问过int ans[20];// 存答案的int n;bool isprime(int n){ for(int i
2017-01-12 14:34:17 150
原创 HDU 1241 dfs求连通块个数
dfs模板题好久没写题之后的小小复习。。#include <iostream>#include <cstdio>#include <string.h>using namespace std;int vis[110][110];char s[110];int ans = 0;int x[] = {-1,0,1};void dfs(int ii,int jj){ vis[ii][jj] =
2017-01-12 13:46:41 423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人