- 博客(26)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 HDU1087 / SDNU1330 求上升序列最大和
0)两个题一个意思,代码的输入输出部分稍有不同,此处用HDU提交的代码。用的动态规划。①未优化,②优化了,但是时间上差不多,可能优化的不好或者数据不是很大吧。1)HDU①:#include #include #include using namespace std;int a[1010];//valuelong long int sum[1001];int mai
2016-05-31 19:41:32 434
原创 SDNU1332 矩阵交换
1)只交换行或列的标号。#include #include #include #include using namespace std;//int x[110][110];//int y[110][110];int x_bian[110];int y_bian[110];int matrix[110][110];struct Node{ int one,sec;
2016-05-30 20:52:34 470
原创 HDU1205 鸽巢原理/找规律
1)利用鸽巢原理,很简单做。让所有相同种类的糖果分开,我们让最大数目的糖果作为挡板,放在其他糖果间。而为了让最大数目的糖果自己不会连续出现,所以确保每一个之间一定要有别的糖果,所以求得其他糖果数量之和,如果和大于等于(最大数目的糖果数目-1),问题就会得到解决。不用担心其他糖果会连续出现,如果有一种糖果连续出现,那么这种糖果的数量一定大于最大糖果,与假设不符,遂不成立。#include
2016-05-30 20:17:27 659
原创 后缀数组
0)1)后缀数组,倍增算法(介绍了 后缀数组sa,名次数组rank_,以及heigh数组)#include #include #include ///NOTE! 约定在此处注释中的n是字符串实际长度的情况下(不补0):sa[],下标是名次(1到n)值是该后缀的首字符在字符串中的位置(0到n-1);rank_[],下标是该后缀首字符在字符串中的位置(0到n-1),值是该后缀的名次(1到
2016-05-28 21:28:26 251
原创 POJ1426 建议打表做该题/用数组模拟队列(比STL队列速度要快)
0)题意: 求一个数的(任意一个)倍数,并且这个倍数仅由0和1组成。分析: 深搜所有0、1组成的数,直到出现所求数的倍数。但0、1组成的数可能很大。 ①题目中说 The decimal representation of m must not contain more than 100 digits.看起来很吓人,结果证明只算lon
2016-05-18 21:21:35 671
原创 hdu1116 欧拉图的判定(点的度数的判定+用非递归的路径压缩的并查集/dfs对连通图的判定)
0)题意: 给出一些单词,能否将所有单词(每个单词都要用上,给出几次就用几次)排成一列,且第i个单词的最后一个字母总是等于第i+1个单词的第一个字母。分析: 刚开始想用dfs,每个单词的第一个字母和最后一个字母作为点,但是题意是要把所有单词都用一遍,而并不是单纯将所有点都遍历一遍,单纯用dfs找出是否有这样的路径并不容易;而且1)#include #include #inc
2016-05-17 21:32:27 982
原创 POJ1028 模拟,水
0)题意:模拟栈的操作。水。考验编码速度。1)#include #include #include #include #include using namespace std;int main(){ stack houtui; stack qianjin; string command; string url; strin
2016-05-17 00:21:10 314
原创 POJ1008 模拟
0)题意: 给出两种日历的规则,写出转换的程序。模拟,注意细节!考验编码能力,比如从0或1开始,如果是某年最后一天的处理等,这种题不能1y都要罚时的话就太不应该了。1)#include #include #include #include #include using namespace std;int _number1;string _number2;int
2016-05-17 00:18:59 261
原创 POJ1083 模拟
0)题目大意: 400个房间排成两排,中间是走廊(如题目中的图所示),要从某些房间搬桌子到另一个房间,两个房间进行搬运时中间的走廊包括两个房间门口前的空间都是不能有其他桌子的搬运行为,但只要搬运空间没有交集就可以同时进行,假设每次搬运不论距离长远都是10分钟,问最少一共需要多少分钟。模拟,注意细节即可。这种题目应该1y,连着wa了好几次,确实应该反思:读题注意细节,敲完代码提交之
2016-05-17 00:14:51 396
原创 HDU1060 n^n求首位
0) 题意:t个测试案例,每一次输入n,求n^n的第一位数是几。(1 分析:刚开始用大数模板,结果n>100,输出n^n时就已经在输出窗口连续输出了三行数字,10^9规模的n肯定不行;之后一直没做出来,比赛完看解题报告get到,大数是可以利用log来做以下转化,转化为10的幂的形式,进而分成10的整数部分×10的小数部分,从而方便得到首位数字,分析如下,耐心
2016-05-16 00:14:03 582
原创 HDU1671 ①string char一维/二维数组 的比较 ②字典树
0)题意:寻找是否有一个字符串是另一个字符串的前缀的情况。注意:①加typedef,之后的代码中关于phone[i]都会报错,是因为此时的phone成了struct Phone 的别名。得在结构体之后,重新phone phone111[10010],然后用phone111[i]是可以的。typedef struct Phone{ char number[12];
2016-05-15 15:37:09 416
原创 例4.10 POJ3525/LA3890离海最远的点 半平面交 + 二分法 + double小数点后有效位数处理方式/printf与g++、c++的问题
0) 题意: 题意很简单,给出一张四面环海的岛屿的地图,岛屿用顶点表示(题目数据保证岛屿是凸多边形),找出岛屿上距离大海距离最长的一个点。即求岛屿上距离岛屿各条边边中最短的距离是所有点中最长的那个点。即求岛屿中的内接圆的圆心点。输出这个点到岛屿的边的最短的距离。即该岛屿中那个内接圆的半径... 分析:
2016-05-13 21:15:08 2368
原创 HDU5444 2015长春网络赛H题(dfs遍历二叉树 简单模拟)
0)题意: 精灵们住在一颗二叉树上,为了方便邮递园送信,根结点的房间写了这棵树上的房间号分布,是按先序遍历给出的。(这个题的先序遍历顺序:1访问根结点,2先序遍历东边子树,3先序遍历西边子树),而房间号总是东边的房间小于西边的(不限是否在同一层)。然后给出要接受信件的房间号,将途径房间的房间号一并输出。1)#include #include using names
2016-05-13 15:48:11 589
原创 HDU1068 二分图 最大独立集
0) 题意:有人互相喜欢,则被认为是恋爱关系,如果我们去掉一些人,使得剩下的人都找不出互相喜欢的,那么剩下的人最多是多少呢? 分析:去掉一些人,去掉的是,经过选择,能形成最多的互相喜欢的情侣对,并从这些情侣对中每对去掉一个人,剩下的单身人数自然最多。这是个求最大独立点集的问题,最大独立点集=节点数-最大匹配数。 注意:之前总是错
2016-05-11 21:20:15 381
原创 HDU1392 凸包问题求周长 + 裸 + Graham算法
0) 思路很好理解,但是写的过程容易写错。 ①:sort排序时,其他点相对最左下角的点,先按极角由小到大排序,极角相同,按距离由近到远排序。(会留下最后进栈的,也就是留下距离远的,是对的) ②:Graham()里的while条件语句中,points[i]是和已经进栈的sstack[top]、sstack[top-1]比较,而不是points[t
2016-05-11 20:55:00 628
原创 POJ3067 树状数组 情景转化为区间求和
0) 题目大意: 小岛上东、西各有一列从北到南依次排列的城市,现在将东边与西边的指定城市之间建造高速公路(不同列之间的城市相连),要求给出交叉点个数(假设没有大于两条以上的道路会交于一点)。 转化: 随着连接的线段越来越多,交点个数应该只增不降,而输入数据给出的顺序已经是一个提示,我们假
2016-05-11 17:01:41 366
原创 HDU5443 线段树 + 裸 + 求任意区间最大值
0) 裸题,写的还不熟练,还不能一次写完不卡壳直接过。1)#include #include using namespace std;const int maxm=1000010;int a[maxm];struct Node{ int l; int r; int maxx;}node[maxm*3];void build(int i
2016-05-11 16:21:50 373
原创 HDU1102 最小生成树(已构造好部分边)Prim与Kruskal
0) 题意:已经在部分城市之间建造了道路,求再花费多少钱建造道路使得所有城市连通。 求连接所有点的最小花费,这是最小生成路问题,变形在于已经修建好了部分道路。之前的思路是,在所有未连接的点图中,如何构建出所有需要的道路,而在构建之前如何将已经修好的路放进去,事实上这样的思想不明确也不简洁。好的做法是将修好的道路的修建花费直接赋值为0。然后就可以直接上最小生
2016-05-11 16:15:03 409
原创 HDU1241 DFS/BFS 求连通块
0) 遍历所有点,求出连通块的数量,每到一块油田,就采用DFS或者BFS消除该油田以及附近连通的油田。 注意(易错): ①二维数组mat[i][j],i是第几行,j是第几列,所以搜到一点再搜该点周围八个方位(+dir[i][j])时,以及确定是否超出地图范围时,注意i是纵向加减,j是横向加减,且(0,0)原点在左上角,向右
2016-05-11 11:56:07 5229
原创 POJ 2481 树状数组 区间覆盖(POJ2352 Stars 的变形题)(线段化点)
0)学会将题目情景转化为自己熟悉的结构或模型。题目大意: 每个奶牛有自己的一个区间,求每个奶牛的区间所覆盖的子区间个数(注意,真子集,相等的不算),按照输入的顺序输出。转化: 要学会将题目情景转化为自己熟悉的模型或结构上。把每个区间的左端x值作为点的x坐标,右端x值作为点的y坐标,就可以把所有区间转化为一个二维坐标图上的点集,而此时每个点左上方的
2016-05-09 20:30:00 1321
原创 POJ2352 Stars 树状数组 + 裸
1)为了避免出现0,保证从1开始,所以每次输入x以后,都先x++;观察得知输入的数据因为有y 、x一次递增的规律,所以利用这一特性,只比较x。#include #include #include using namespace std;const int maxn=32010;int star[maxn];int level[maxn];int Init(int x){
2016-05-07 20:24:50 375
原创 UVA12086 树状数组 + 裸 +单点重置
0)树状数组与线段树都适用于在一个连续数列中任意指定两个数求这两个数之间所有数之和的情景。而传统数组(共n个元素)的元素修改和连续元素求和的复杂度分别为O(1)和O(n),树状数组主要利用二分的思想构造伪树的结构,使修改和求和的时间复杂度均为O(logn)(线性结构只能逐个扫描元素,而树状结构可以实现跳跃式扫描),提高了效率。相对于容易理解但所占内存空间偏大的线段树而言(线段树的节点数
2016-05-07 20:21:24 529
原创 HDU2444 二分图判断(BFS 的染色法) + 求最大匹配边数(DFS 的匈牙利算法)
0)二分图匹配有两种算法,一种是网络流中的最大流,另一种就是下面的匈牙利算法。①用染色法判断是否是二分图: 主要是怎么判断一个图是不是二分图。不妨选取某个点作为起点并染为某种颜色、同时把与它相邻的元素染为对立的颜色,进行BFS(DFS也可以),如果到某一步发现当前点和相邻点的颜色一样,那么就出现了矛盾,就不是二分图。②匈牙利算法求最大匹配数原理 是通过DFS
2016-05-07 19:55:31 2783 1
原创 HDU1754 线段树 + 裸 + 单点更新求区间最值
1)线段树求某区间最大值,用到线段树的建立、单点更新、区间最值查询。第三道线段树入门题目,敲起来还是很不熟练。另外,scanf读入string很麻烦;用cin读取string方便一些;如果追求再稍微快的那么一点,用scanf读取char,但要注意是否需要在每次scanf读取之前,先getchar()看看有没有必要吃掉回车(windows下)。#include #include #inclu
2016-05-05 21:39:04 404
原创 POJ3264 RMQ问题 裸 线段树 OR ST算法
0)解决rmq问题,用线段树和ST算法,线段树O(logn)复杂度一般可以AC,ST算法是O(nlogn)预处理和O(1)的查询速度,一般情况下线段树快一些但如果查询量非常大,ST算法优于线段树。1)注意,NodeNum一般开3倍或4倍。如果对输出格式要求不是很多,那么用cout比printf快哦。线段树,O(logn)复杂度,2000ms(把最后cout改为printf就会3000m
2016-05-05 00:15:33 610
原创 HDU1166 线段树 裸 单点更新
1)#include #include #include using namespace std;const int maxn=50000<<2;struct Node{ int left; int right; int number; bool flag;}node[maxn];int a[maxn];int kase=1;void Build(int id,in
2016-05-04 23:47:54 307
acm水题 二叉树模拟 hdu5444,能想到的测试数据都测了还是WA,求大神
2016-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人