自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

No Program No Life

落寞是岁月的痕迹。

  • 博客(27)
  • 收藏
  • 关注

原创 队内训练赛一

PS:因为备战省赛,并没有什么难的算法和数据结构。。A:HDU2181 哈密顿绕行世界问题 简单的dfs,每个城市只有三条边直接搜索即可。#include <bits/stdc++.h>using namespace std;#define ALL(v) (v).begin(),(v).end()#define cl(a,b) memset(a,b,sizeof(a)

2017-03-31 13:58:01 323

原创 Java 杂七杂八的笔记

PS:因为Java不常用,但现在还要用。鉴于自己记性差,写在这里,以后翻看方便。Java控制精度 DecimalFormat是用来控制格式的DecimalFormat df = new DecimalFormat("0.00"); //保留小数点后两位,精度可自行调整//如要输出double类型的变量a,则System.out.println(df.format(a)

2017-03-28 22:33:40 369

原创 团体程序设计天梯赛-练习集-L2-018. 多项式A除以B

题目链接不给数据范围。让我说什么好。。我还犹豫了半天要不要用数组。。 最后想了想,算了用数组暴力一发。。 结果就过了。。就是两个循环; 第一重枚举a多项式的头 第二重进行计算 PS:大区赛时敲得代码。略丑。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a)

2017-03-26 16:37:29 1004

原创 PAT(A)-1130. Infix Expression (25)(树的中序遍历)

题目链接题目大意: 给你n个点的值以及左右孩子编号。 输出表达式。遍历的时候,如果是叶子节点的就不需要给左右括号 输出的时候去掉最外面的一对括号。 注意n==1的情况#include <bits/stdc++.h> using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define clr clear

2017-03-24 13:28:39 401

原创 PAT(A)-1129. Recommendation System (25)(优先队列)

题目链接题目大意: 给你n个数和k大小的空间。 在每次访问第i个数之前,先输出第i个数之前k个按出现次数从大到小排列后的数,如果次数相同则按数的大小从小到大输出。用一个优先队列来维护,每次输出前k个。 几个数组: vis[i] := 表示i是否在前k个输出的数里 use[i] := 表示i是否之前出现过。 对于每一个访问的数(除了第一个),先输出前k个,不满k个则

2017-03-24 13:21:45 454

原创 2017浙理工校赛重现-G.最佳淘汰算法(优先队列模拟)

题目链接要先预处理一下每一个值的下一个相同值的位置。注意要把各元素放在一个结构里,在用优先队列进行排序。 之前分开放一直过不了。#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <queue>using names

2017-03-22 15:34:06 615

原创 2017浙理工校赛重现-H.玩具(尺取+RMQ)

题目链接就是枚举区间,rmq查询区间最大值。ps:跟暴力程序对拍了下才发现查询函数写错了。。#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#defin

2017-03-22 15:28:08 269

原创 2017浙理工校赛重现-E.同源数(gcd)

题目链接我们可以求出他们的gcd,gcd包含最初两个数共同的质因子 将最初的两个数与gcd再求最大公约数,如果不为1 ,说明a和b还有共同的质因子,则a/=g,否则退出循环。 b同理#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std

2017-03-22 15:23:47 289

原创 PAT(A)-1099. Build A Binary Search Tree (30)

题目链接题目大意: 一棵二叉排序树,有n个点,告诉你每个点的左右儿子编号; 给你n个值。 确定每个值所在的位置。输出层序序列。先将值排好序。 从根节点开始递归建树。 每次确定当前点在当前区间排第几,也就是要知道当前点的左子树上有多少个点。搜索一遍即可。#include <bits/stdc++.h>using namespace std;#define fi f

2017-03-21 17:41:01 225

原创 优先队列的优先级定义

这是stl里定义的比较结构 我们都知道用greater是小顶堆,less是大顶堆,默认是less。/// One of the @link comparison_functors comparison functors@endlink. template<typename _Tp> struct greater : public binary_function<

2017-03-20 17:04:00 1812

原创 SPFA的两种优化SLF和LLL

记下SPFA的两种优化,大牛请无视SPFA算法有两个优化算法 SLF 和 LLL: SLF:Small Label First 策略,设要加入的节点是j,队首元素为i,若dist(j) < dist(i),则将j插入队首,否则插入队尾。 LLL:Large Label Last 策略,设队首元素为i,每次弹出时进行判断,队列中所有dist值的平均值为x,若dist(i

2017-03-20 12:57:35 10654

原创 【ZCMU1895】Landlocked(最短路)

题目链接题目大意: 给你n*m的矩阵 ‘W’表示水,其他表示国家 问这些国家最少需要走多少步,才能到达边界与水相邻的国家国家这么多,水就一种,我们不妨反着求。 求从水到这些国家的最短路 这里就有两种算法 一种就是spfa算法 测试了无优化,SLF优化,SLF+LLL优化 实际上这里还是SLF优化快#include <bits/stdc++.h>using n

2017-03-20 12:44:52 279

原创 【ZCMU1894】Power Eggs(鹰蛋问题dp)

题目链接题目大意: 一栋建筑有N层,现在又k个蛋,每个蛋都一样。 现要确定在最坏情况下蛋在第几层掉下会碎需要实验多少次。 如果在f层掉下,那么在f层下掉下都不会碎,在f层及以上掉下都会碎。 若一个蛋没碎可重复使用。资料1 资料2 最容易想到的算法:假设有n楼层,k个鹰蛋,则在第i层试探时会出现两种状态,一种状态是鹰蛋摔破了,则我们下一步只有n-1个鹰蛋,同时总楼层

2017-03-19 18:21:51 2700

原创 【ZCMU1893】String Game(博弈)

题目链接题目大意: 给你两个串a,b,a的长度不小于b 现在有两个人A,B,每次可以选择在a的头或尾删除一个字符,由B先。 直到a的长度等于b,如果此时a与b相等则A赢可以分为三种情况讨论。 1.如果a的长度等于b 就直接看a是否和b相等。 2.如果a的长度减去b的长度是奇数 说明B的操作次数比A多一次。假设A的操作次数是ope 假设b在a的内部 如果B要赢,

2017-03-19 17:09:23 377

原创 hiho一下-第104周-平衡树·Splay

题目链接这题可以直接用set做。 这里记下模板。#include <bits/stdc++.h>using namespace std;#define MINK 0#define MAXK 1000000001struct Node{ Node *father,*left,*right; int v; Node(int k, Node* f)

2017-03-16 18:56:59 325

原创 团体程序设计天梯赛-练习集-L2-016. 愿天下有情人都是失散多年的兄妹(dfs)

题目链接一看题目,我以为可以用LCA算法写,写了半天,后来发现不是树(woc…) 再看题目,不超过5代,那么直接暴搜咯、、查询时,标记一个人的不超过5代的祖先,再从另一个人向上搜索在5代内是否有标记过的祖先。#include <bits/stdc++.h>using namespace std;#define ALL(v) (v).begin(),(v).end()#

2017-03-14 18:08:27 563

原创 PAT(A)-1123. Is It a Complete AVL Tree (30)(AVL+bfs)

题目链接题目大意: 给你n个值,建一棵AVLtree,输出这棵树的层序遍历,并问这棵树是否是完全二叉树其实只要搞清楚LL旋转就可以推出其余三种旋转了。 我觉得代码说的还是很清楚的,看具体的代码吧。 还是不懂的话可以参考这里 不过链接里代码有两处有点问题,认真的看的话看的出来的。#include <bits/stdc++.h>using namespace std;

2017-03-13 20:01:46 269

原创 【HDU5584】LCM Walk(数学)

题目链接题目大意: 从一个点(x,y)可以跳到(x+lcm,y)或(x,y+lcm) 给你一个点,问有几个点能够跳到这个点,包括当前点。我们假设当前点为(x,y)(x,y),上一个跳到这个点的点为(x′,y′)(x',y') 首先(x,y)<==>(x/gcd,y/gcd)(x,y) <==> (x/gcd,y/gcd),先让两个数互质 那么他们的lcmlcm

2017-03-10 20:26:17 321

原创 PAT(A)-1102. Invert a Binary Tree (25)(数据结构+bfs)

题目链接题目大意: 给你n个点的树,让你输出层序和中序遍历序列。#include <bits/stdc++.h>using namespace std;#define ALL(v) (v).begin(),(v).end()#define cl(a,b) memset(a,b,sizeof(a))#define clr clear()#define pb push

2017-03-10 20:11:22 290

原创 ECPC16-E. Jumping(bfs)

题目链接题目大意: 给你n个数,a1,a2,...,ana_1,a_2,...,a_n表示在第i个点可以跳向i+aii+a_i点或i−aii-a_i点, 输出从每个点开始,跳向最后一个点步数。我们可以反着做,从最后一个点开始bfs,搜能跳向当前点的点。#include <bits/stdc++.h>using namespace std;#define ALL(v)

2017-03-10 20:08:18 691

原创 ECPC16-A.The game of Osho(博弈)

题目链接题目大意: 有T组数据 给你G个子游戏,每个子游戏有一个数n,两个人轮流可以减去b的幂次,前提是小于等于n。不能再减就算输。 问最后谁赢。打sg表找规律。。 多个子游戏 ,则结果异或。#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using names

2017-03-09 17:03:31 449

原创 PAT(A)-1127. ZigZagging on a Tree (30)(树的重建)

题目链接题目大意: 给你一颗二叉树的中序和后序。 要你输出指定顺序的序列。又是树的重建。。 输出的序列跟层序差不多,判断一下是否逆序存放就行了。PS:这次春季,水的一匹。。这树的重建出了不知道多少遍。。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#

2017-03-07 20:39:55 831

原创 PAT(A)-1126. Eulerian Path (25)(欧拉图的判断)

题目链接题目大意: 给你一个图,判断是欧拉回路,还是不是欧拉回路的欧拉通路,还是不是欧拉图。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))typedef long long LL;const int INF = 0x3f3f3f3f;const in

2017-03-07 20:35:11 262

原创 hiho一下 第140周-清理海报(DAG+dfs)

题目链接官方题解 题解里面貌似有错 这里应该还有条3->4的边有人会问为什么会有2->4这条边,从图上看2的四个点都被覆盖了。 这就是建图时要注意的地方了,建图时我们只要根据两个矩形是否相交建图就可以了,不必去管矩形的四个点是否被覆盖。 因为虽然2的四个点都被覆盖,但是2是作为1和4之间的关联的。撕1时,会先撕去2,然后再撕去4.所以这里要有条2->4的边。这样在

2017-03-05 12:52:36 275

原创 51nod-1191 消灭兔子(贪心)

题目链接这题是上题的进阶。 对于每支箭,我们要找到第一个血量大于伤害值的兔子的位置pos,那么我们把这只箭的伤害值设为pos-1的兔子的血量值 跟上题类似,从后往前贪心 将伤害值为当前兔子血量值的价格放入小顶堆,并且清空数组,因为血量可以相等,防止重复放入。 每次选取堆顶元素就可以了。 如果在消灭某一只兔子时堆为空时,那么说明没有弓箭可以消灭这只兔子,所以输出No

2017-03-02 21:15:39 337

原创 51nod-1163 最高的奖励(贪心)

题目链接因为天数最大为n,所以所有结束时间大于n的都可以设为n 考虑天数 从后往前贪心,将结束时间为当前天的奖金放入大顶堆 然后只要选取堆顶元素就行了。 这样可以保证堆中的元素的结束时间都大于等于当前天,然后只要选取奖金最大的就行了。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset

2017-03-02 21:08:14 268

原创 51nod-1682 中位数计数

题目链接考虑如何计算一个数的答案: 定义一个b数组,把所有大于自己的值定义为1,小于自己的值定义为-1,等于自己的定义为0。 如果包含这个数的区间这个数是中位数,则定义后的总和为0。 考虑前缀和,那么问题就变成了在这个数两边有多少对相等的数。 可以先把左边的数统计一下,右边的数就可以O(1)O(1)查询,时间复杂度O(n)O(n) 总时间复杂度O(N2)O(N^2)

2017-03-02 21:02:33 276

空空如也

空空如也

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

TA关注的人

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