- 博客(31)
- 资源 (3)
- 收藏
- 关注
原创 ubuntu 错误修正
ubuntu 16.04出现软件中心闪退现象首先ubuntu的software-center是可以卸载和重装的对此情况重装就好了。2.关于有些软件安装失败的问题,这个问题得具体分析,有种是从某种源取回失败的错误,这很可能是因为其他需要添加了 ppa而后这种ppa因为非官方导致失败,这时只要删除失败的ppa 就可以了sudo add-apt-repository -r ppa:xxxx
2017-07-31 15:48:39 205
原创 对memset使用的重新认知
memset可以是俺字节赋值,一般只能完成对字符型数组,因为字符独占 一个字节。进行赋值。无法对int型数组,完成非0的赋值。int dp[MAX];memset(dp,0,sizeof(dp)); // dp 的成员全是0memset(dp,1,sizeof(dp));// dp的成员的值是不确定的总结,不要用memset 对非字符型数组进行非0的赋值。否则结果是错误的
2017-07-30 23:08:50 183
原创 hdu 1114 Pig-bank
完全背包问题。 问题错在memset的使用上,const int INF=100000;memset(dp,INF,sizeof(dp));并不能把数组dp全部赋值为INFmemset是按字节复制,所以,一般可以进行数组的赋0 操作,否则不要使用memset进行赋值,而是老实的使用循环。完全背包核心代码: for(int i=0;i<N;i++){ for(int j=w[i];j<
2017-07-30 23:05:34 250
原创 hdu 1109 Run Away
这题是用模拟退火算法, 对没错,好高端啊,我是炒别人的。下一篇写下模拟退火算法。搞清怎么用和怎么实现。AC 代码:#include <iostream>#include<cstdio>#include<cstring>#include<math.h>#include<ctime>#include<cstdlib>#include<algorithm>using namespace st
2017-07-28 22:03:29 261
原创 csdn 1104 Remainder
首先养成解题思路 : 题目要求最小路径,,那肯定是BFS,又有顺序要求,那么只要保证正确的步骤 即 + - * %最先得到的答案肯定是满足题目的。 所以这道题大基调就是BFS,至于路径长度和路径有一个结构体进行记录。本文 是mod 运算。。 mod 和% 的区别是%是有负有正, mod根据题目定义 a=b*q+r; a%q=r; 0<=r#include <iostream>#in
2017-07-28 14:59:37 191
原创 hdu 1103 flo restaurant
简单题,排队模型队列模式。 主要是输入有点麻烦,scanf(“%c”) 输入总会接收把空格和换行。要注意用getchar()过滤。AC代码#include <iostream>#include<vector>#include<cstring>#include<cstdio>#include<queue>using namespace std;#define MAX 5000int tm
2017-07-27 22:33:37 347
原创 hdu 1012 constructing the road
最小生成树 村庄联通,但是已经有修好的路了,那么就是说已经修好的路,是已经存在的,不用修的,换句话说,已经修好的路的长度不在最小生成树的总长度里,且最小生成树必定包含这些已经修好的路。根据最小生成树的算法prim ,如果把这些修好的路村庄节点之间的距离设为0,那么这些修好的路,就一定会被选中,且由于距离设为0,最后总长度,也不包括这些修好路的村庄之间的距离。思路: 首先把已经存在路的村庄节点距离
2017-07-27 13:03:55 171
原创 hdu 1097 数论
这题是快速求幂取模定理:a^(b) if b=2k+1 a^(b)=a^k*a^k*a if b=2k a^(b)=a^k*a^k快速幂求模#include <iostream>using namespace std;int main(){ int a,b; while(cin>>a>>b){ int ans=1; w
2017-07-26 16:27:07 153
原创 hdu 1087
纪念下: 这道题是简单dp,是一道自己可以看出来并实现的dp,证明之前的学习还是有用的继续加油状态选择方程: dp[i]=max(dp[j]+a[i],dp[i]) { j is a[j]#include <iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;#define
2017-07-26 13:23:20 156
原创 hdu 1086 计算几何
计算几何 经典题,求线段交点个数首先大体思路,遍历的方式去寻找交点,如果有交点,计数+1for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++)接下来就是判断线段是否有交点了 首先以线段作为对角线,构造矩形,先判断两个矩形是否有重叠,如果有重叠,则线段可能有交点,否则不可能有交点。判断矩形有重叠部分对于线段1 P1 (x1,y1) ,P2(x2,y2)
2017-07-25 22:04:13 319
原创 hdu 1084 course
完美匹配题 完美匹配肯定是最大匹配,根据题意,应该是每个学生匹配到一门课。 所以学生作为左边集合。最大匹配=最小点覆盖。 最小路径覆盖=顶点数-最大匹配数 算法匈牙利算法:bool dfs(int i){ int n=stu[i].size(); for(int j=0;j<n;j++){ if(visited[stu[i][j]]) continue;
2017-07-25 10:53:02 212
原创 hdu 1081 To The MAX
这道题是求最大子矩阵和。 在说最大子矩阵和前,先说另一个问题最大子序列和 关于最大子序列和的问题:有一个证明: 那就是: 和最大的子序列 ,ai1,ai2,….aj。 i<=j 其开头元素必定不小于0 , 可以通过反证法,如果开头元素(第一个)小于0 ,那么把这个元素去掉的子序列的和必定大于原来序列的和,和原先序列和最大相悖。故得证。根据以上证明,可以求最大子序列。sum= dp[k]
2017-07-24 20:24:29 205
原创 hdu 1080 Human Genne Function
这道题我不会。dp感觉老是自己写不出来啊,状态转移方程不好建啊,问题抽象。 我一定可以超越其他人,其他人混得比我好,只是因为他们比我早几年工作吧。沉下心来学习,不要被世俗所打扰,守护你的高傲。 用的是dp的思想。 和求最长LCS的思路大体相似。 对于一个序列s1,s2. 用数组dp[i][j] 表示 s1 的第i个字符和s2的第j个字符 比较时最大值 ,,这时分3种情况: s1[i]
2017-07-24 18:47:11 226
原创 关于dp小结(一)
这篇博客主要弄懂以下几个常见的问题:主要是dp思想 并学会后缀数组的使用,以及最长公共子序列在空间上的优化。一,最长公共子序列问题:二, 最长子串三, 最长上升子序列四, 最大子序列和 五, 最大子矩阵和
2017-07-24 16:16:37 147
原创 hdu 1078 fatmouse and cheese
思想记忆化搜索还有的搜索方式是状态搜索状态搜索,是进行状态映射,以便得知某个状态是否已经搜索过了,是为了避免重复搜索, 状态搜索应用的场景是,简单地标记哪个点有没有走过,已经不再满足需求了。或者说,无法进行标记哪个点是否已经走过。记忆化搜索是,在搜索的过程中,会产生很多重复搜索,但是只要记住第一次搜索的结果值,可以直接用上次的搜索结果,并避免再次搜索,减少了搜索范围,避免了重复搜索。 记忆化搜索的
2017-07-23 20:45:44 346
原创 hdu 1074 doing homework
状态压缩dp 首先进行状态映射,(状态压缩),一共有15门课,每门课则可用一个数字位 来表示这门课作业是否已经做完,比如3门课 001,表示完成了第一门课作业,101,表示完成了第1门,第 3门作业。 则需要一个0-15位整数范围的数来表示所有状态 初始状态000, 结束状态1111…11 表示完成了所有作业。 再找状态转移方程 对于状态i, 这个状态可能由前一个状态pre,加上做完一道作
2017-07-23 15:40:15 235
原创 如何使用apoc 从neo4j导出数据,gephi导入数据
如何使用apoc 从neo4j 导出graph ml 数据neo4j 是一个图数据存储工具,它自带了图展示工具,,就是它的browser ,是根据d3.js 开发的gephi 是一个开源跨平台的,图数据展示客户端,支持win,linux ,os 等主流系统。它的目的是打造图数据界的photoshop有时候需要用neo4j 存储,但是不满足与neo4j自带的展示工具,需要用gephi进行
2017-07-21 16:51:42 6606 1
原创 hdu 1072 Nightmare
此題有有意义,纪念下因为此題,特殊在走过的路可以重走,需要进行记忆化搜索,最小时间,肯定使用BFS走过的节点可以重走,但是如果走到这个节点的时间是相同的,则重走这一节点没有意义。 所以和以往传统搜索題不同, 传统的搜索,用visited[x][y]来标记是否走过,以便下次不再重复走 这次,需要再多加一个维度,加上时间 visited[x][y][time] 表示time相同时不需要重走, 此
2017-07-20 23:50:09 214
原创 记录下也许有用的工具
python-igraph 是一个python下的处理图的库, 可以方便的创建一个图,给图加节点。有点类似于在java下,自己构建了一个类,类里面有add_vertex 和add_edge 方法一样。 但是上面说的也只是基本, 还有其他方便的处理方法吧,axel linux 下多线程下载工具,类似wget 功能,但是可以多线程
2017-07-20 15:01:43 181
原创 hdu 1070 milk
此題理解起来简单,但是还是有些细节需要注意, 这里纪念一下。 首先定义性价比: 两种方式:每天开销最小,即每天平均下来花的钱最少。另一种:每元钱买的天数最大。 另一个注意点就是要读题,性价比一样时选择容量大的这两种方式不容易出错。如果定义性价比为,每元买到的牛奶最多,应注意有个陷阱,就是每元能喝到的牛奶最多才正确,比如500ml,其中100ml是无效的,需要去除,否则,算出的每元买到的牛奶最多
2017-07-19 22:30:27 239
原创 hdu 1069 monkey and banana
此题是动态dp,也可以是最长单调子序列的变形。一个类型的箱子,可以变为3个不同的箱子,共有n*3个箱子,对箱子先按长排序,再按宽排序 思路:对于3*n个箱子 ,i表示第i个, dp[i] 表示,以i作为最底层箱子时的最大高度则 dp[i]=max(dp[i],dp[i]+dp[j]) dp[j] 是所有小于箱子i的高度,求出其中最大的高度。最后 ,在i个箱子对应的高度dp[i] 中选
2017-07-18 17:37:39 181
原创 hdu 1068 Girls and Boys
这道题和hdu 1054同样是二分图匹配相关的问题。 二分图 最大匹配数=最小点覆盖数。DAG 最小路径覆盖=顶点数-最大匹配数最大独立集=顶点数-最大匹配数。当一个图是无向图时,需要从每一个顶点进行最大匹配查找,所以无向图的最大匹配数是求出的最大匹配数/2; 或者可以理解为: 当图是无向图时, 左边的集合是包含了所有的顶点, 是有向图时,只包含了一部分顶点。匈牙利算法: vector<i
2017-07-17 13:51:49 195
原创 hdu 1067 Gap
这道题和hdu1043 Eight问题可以认为是同一类问题, 针对这道题,是手动实现的hash, 而Eight问题是利用康托展开式 ,康托数和排列一一对应本质还是hash这两道是典型的状态搜索题,这里纪念下 下面是ac代码,思路源于其他网友,这里借鉴#include<iostream>#include<queue>#include<cstring>#include<cstdio>usin
2017-07-16 21:32:37 232
原创 二分图 hdu 1054 Strategic Game
这是个最小点覆盖问题,而最小点覆盖问题=二分图最大匹配数匈牙利算法是计算二分图最大匹配的算法:其dfs实现版本如下bool dfs(int v){ for(vector<int>::iterator it=tree[v].begin();it!=tree[v].end();it++){ int w=*it; //for if(!visited[
2017-07-13 22:54:22 190
原创 被自己蠢哭
记录一个错误,这个错误,好像很久前犯过;当操作一个字符串时,尤其是需要根据字符串的长度,进行增加字符串时,一定要先用一个变量存放字符串的长度,不要直接用str.length()方法,进行一次循环过后,这个值是变的,而逻辑是按照不变写的。同时,如果直接使用length() 方法,每次循环都会重新计算,也不合理。所以结论是:养成用一个变量存放字符串长度的习惯,而不是直接在循环中写str.length()
2017-07-07 22:34:19 224
原创 hdu 1046 技巧题
gridland ,当长宽都是奇数时,结果为n*m-1+sqrt(2) 否则为n*m,因为,可以看作是一个环,所以共有n*m个节点,n*m个节点构成的环自然长度为n*m#include <iostream>#include<cstdio>#include<cmath>using namespace std;double handle(int r,int c){ if(r%2&&c%
2017-07-07 20:33:48 280
原创 hdu 1044带来的启示
核心思想 : 1. 先计算,入口,珠宝,出口,两两之间的最短距离,(最短距离肯定采用BFS),记录到数组中,dist[a][b],表示,a(可能是入口,珠宝,出口),到所有其他b(入口,珠宝,距离)点的距离; 2. 在入口,珠宝,出口之间再采用dfs,,把入口作为起点,依次dfs求出最大值,遍历到出口时,更新记录最大的珠宝值。#include <iostream>#include<cstdi
2017-07-07 20:30:57 277
原创 hdu 1043带来的启示(二)
前面提到了康托展开式,主要是把对应排列的康托式作为数组下标,方便找到该排列。 核心思想:利用康托展开式,记录每个排列状态,从最终状态倒序BFS,中间记录到达的每一个排列的经过的步骤,完成搜索后,就把能到达的状态,写到了数组里。以及如何到达的也写到了数组里,直接进行查表就可以了。另外如果用string 类型记录路径会比较方便,但是耗费内存太大,会出现MLE,主要原因是string会开辟实际内存是长度
2017-07-06 22:10:22 230
转载 hdu 1043带来的启示(一)
康托展开康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。以下称第x个全排列是都是指由小到大的顺序。公式X = a n ( n − 1 ) ! + a n − 1 ( n − 2 ) ! + ⋯ + a 1 ⋅ 0 !例如,3 5 7 4 1 2 9 6 8 展开为 98884。因为X=2*8!+3*7!+
2017-07-06 15:07:05 188
原创 c scanf 函数问题
scanf , cin 都是从缓冲区读取数据,scanf ,cin 遇到空格,TAB, 换行终止,剩余键盘输入存进缓冲区scanf 无法接受带空格的字符串 除非scanf("%[^\n]")scanf 使用%c 接受一个字符时,会接受到空格 换行,需要中间使用 getchar() 或者flush(stdin) 从缓冲区读走多余的字符,或者清空缓冲区scanf 可以接受指
2017-07-04 23:20:30 203
原创 win7本地主机和远程服务器间利用ssh协议进行上传下载
首先需要一个pscp程序,这个程序可以在putty官网上下载 下载完成后,可以设置环境变量把pscp.exe的位置添加进环境变量。 也可以把pscp.exe 放在需要上传到远程服务器上的内容所在的文件夹内,比如你在本地有个文件名为text.txt,你想把这个文件上传到远程服务器,就可以把pscp.exe 放在text.txt所在的文件夹下。cd source_folderpscp loc
2017-07-04 16:59:28 1178
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人