- 博客(37)
- 收藏
- 关注
原创 mac 开启关闭ftp
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plistsudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist访问:ftp://用户名:密码@ipex: ftp://matrix:123456@192.168.0.1
2017-11-06 16:39:43 1918
原创 Java源码分析之StringBuilder,StringBuffer
这两个类极为相似,都是继承自AbstractStringBuilder,并且都实现了Serializable, CharSequence,区别也很明显,StringBuilder不支持多线程,而StringBuffer支持多线程由于是继承自AbstractStringBuilder,所以不需要成员变量了,StringBuffer中有char[] toStringCache;将两个类放一起,以便形成对
2017-03-16 15:29:01 347
原创 Java源码分析之AbstractStringBuilder
在看StringBuilder之前,还是来先看下AbstractStringBuilder吧成员变量//这也是较String很大的一个不同点,是可变的char[] value;//表示目前已经用了多长,注意,count!=value.lengthint count;构造函数AbstractStringBuilder() {}//给定一个初始的空间AbstractStringBuilder(i
2017-03-15 19:11:16 1278
原创 Java源码分析之String
仰慕了已久的String类成员变量//内部就是char数组保存,注意是final哦private final char value[];private int hash; // Default to 0构造函数public String() { this.value = "".value;}public String(String original) { this.value
2017-03-14 12:42:33 526 1
原创 Java中的Final 与 C++中的const
修饰基础数据成员一样的,被称为常量,意味着不可修改修饰对象Final修饰的,意味着该引用不可变,也就是说,new过以后,不能再new一个出来,可以调用方法const修饰的,意味着该对象不可变,并且不能调用非const函数,只能调用const修饰的函数修饰方法Final修饰的,意味着不可以被重载,就相当于是privateconst修饰的,意味着不能改变类中的非const函数,最重要的作用,就是被con
2017-03-12 21:39:15 394
原创 Java源码分析之Arrays
乍一看Arrays的源码,223k,5000多行,心想争取2,3内看完,没想到,里面,居然,是每种基本类型都写了一遍,还有object,真的是,!先看排序吧(只拿int举例了)//基本类型都是调用另一个类的排序函数,是快排,当我也想顺便把这个也贴上来的时候发现,一个int的排序有400行!!!我还是决定,再开一篇在讨论吧public static void sort(int[] a) {
2017-03-12 16:09:19 517
原创 Java源码分析之HashSet
成员变量//HashSet的本质,其实就是HashMapprivate transient HashMap<E,Object> map;//HashMap是键值对,而HashSet是单值,所以需要一个值来充当键值对中的值private static final Object PRESENT = new Object();构造函数public HashSet() { map = new
2017-03-11 23:03:52 242
原创 Java源码分析之HashMap
成员变量//默认的初始容量,空间必须为2的幂static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16//最大容量static final int MAXIMUM_CAPACITY = 1 << 30;//默认的加载因子,这里解释一下加载因子,在map被创建后,就有了一个容量,在put键值对时,会首先算key的hashcode,
2017-03-10 20:09:03 296
原创 Java源码分析之ArrayList
先看私有属性//保存ArrayList中的内容transient Object[] elementData; // non-private to simplify nested class access//表示元素的数量private int size;transient 关键字,就是这部分不参与序列化构造函数构造函数有三个//没有参数时,构建一个空的private static final
2017-03-09 23:34:33 282
原创 机器学习_线性回归,梯度下降算法与正规方程
个人对这方面的理解,文字纯手打,图片来自于coursera的课件 1.线性回归的定义:给出若干的训练集(训练集中x(j)ix_i^{(j)}表示样本j中第i个项),然后拟合为一条直线,使得cost最小 不妨先看一个例子,拿课程中的例子,卖房 现在已经知道了若干的房子的大小以及卖出去的价格,现在跟着这些信息,来推断一些房子的价格 我们的任务,就是把图中的点尽可能为拟合成一条”花
2016-12-20 21:08:32 1069
原创 markdown中简单的数学公式及常用字符
1.分数x+yx−y\frac{x+y} {x-y} $\frac{x+y}{x-y}$ 2.上标A2nA^{2n} $A^{2n}$ 3.下标A2nA_{2n} $A_{2n}$ 4.开方8√3\sqrt[3]{8} $\sqrt[3]{8}$ 5.求和∑∞i=1i\sum_{i=1}^{\infty}{i} $\sum_{i-1}^{\infty}{i}$ 6.积分∫∞0x
2016-12-20 17:06:00 572
原创 一些经典的正则表达式
持续更新(?<=<(\w+)>).*(?=<\/\1>) 匹配不包含属性的简单的HTML内容<div[^>]*>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>. 匹配嵌套的<div>的标签
2016-11-21 19:44:30 288
原创 正则表达式
简单的学习一下正则表达式吧最简单的,比如匹配matrix 这样会匹配到所有含有matrix的,比如,matrix67,matrix123等\b metacharacter 匹配一个位置,代表开头或者结尾 比如,\bmatrix\b 就是匹配单词matrix了. 匹配除了换行符外所有的元素* 闭包 比如.* 就是匹配所有不包含换行的字符串+ 正闭包 比如.+ 就是匹配所有不包含换
2016-11-21 19:38:50 302
原创 编译原理_词法分析
最近在学编译原理,编译的第一步是词法分析于是就打算做一个词法分析器,可以将特定的串(123456789)转化为另一个特定的串(matrix123),并且统计单词数目以及字符个数第一步是编写lex文件(example.l) int num_ids = 0, num_chars = 0;%%123456789 {printf("matrix123");num_chars+=9;}
2016-10-27 19:38:11 549
原创 51nod 1503 && codeforces570e Pig and Palindromes
题意:n*m的格子,每个格子上有一个字符,从(1,1)走到(n,m)只能向下和向右,问走过的字符串是回文的个数有多少题解:比较容易想到是dp,dp[step][x1][y1][x2][y2],表示第step步到(x1,y1)和(x2,y2)共有多少种方案 但这样的话,时间空间都爆炸 可以用滚动数组优化掉一维,但空间还是会爆炸
2016-10-12 17:11:08 311
原创 51nod 1624取余最长路
题意:3*n(n题解:如果是普通的不需要膜的话,就是普通的dp,但是有膜以后,会产生后效性,因此,就不会dp了 如果暴力的话,复杂度n^2 换个角度,也就是找两个拐点,使得sum[1][x]+sum[2][y]-sum[2][x-1]+sum[3][n]-sum[3][y-1]最大就可以 考虑优化,对于sum[2][y]-
2016-10-10 21:36:33 549
原创 codeforces724c Ray Tracing(扩展欧几里得)
题意:从(0,0)沿(1,1)射出来一个东西,在封闭的(n,m)(n,m题解:第一感觉,肯定是把该平面展开,然后在所有展开的平面中对应的点,满足最小的dx == dy的就是解 对于横坐标,所有展开后的点的横坐标有可能是a,2*n-a,2*n+a。。。公式2*x*n ± a 纵坐标类似2*y*m ± b 要撞到,满足2*x*
2016-10-09 13:56:11 400
原创 51nod 1605 棋盘问题
题意:n*m的棋盘,每次可以将x(x==1 || x是质数),如果x*x内都是1的话,将他们都变成0,问先手赢还是后手赢题解:博弈,没有sg函数,刚开始想可能会和前后顺序有问题 有点儿想不到了 然后发现,x只能是1或者质数,所有x肯定是奇数,那x*x肯定也是奇数 如果当前有奇数个1,那么变后就有偶数个1
2016-10-08 16:03:19 253
原创 hdu5493 Queue
题意:n(题解:对于第i高的人,前面有min(x,n-x-i)个人比他高 于是我们可以从低到高为他们安排位置 可以用树状数组维护,到某个点时,前面还有多少个空位置 然后二分,查找刚好有min(x,n-x-i)+1个空位置的点,放进去这个人就可以///num表示身高,x表示前面或后面有多少人比他高struct po{
2016-09-21 15:48:27 251
原创 hdu5489 Removed Interval
题意:长度为n(题解:对于某一位,可以假设出现在最终的序列中,那么可以算出以这个数为头后面的LIS(可以从后往前处理),然后还可以算出以这个数结尾(类似于O(nlogn)计算LIS),去掉前L个的LIS,两者相加-1就可以算出最终的LIS 需要注意的是,如果L出现在最后位置时的情况int a[100010];///存从后往前处理时的LISint b[100010
2016-09-21 13:54:00 336
原创 hdu5898 odd-even number
题意:问(l,r)内,连续的奇数有偶数位,连续的偶数有奇数位,有多少这样的数字题解:数位dp,注意前导0就可以LL dp[20][20][2][2];int wei[20];///weishu表示处理到了第几位,pre代表前一位是奇数还是偶数,len表示前面奇数或偶数连续的长度,zero表示是否有前导0LL dfs(int weishu, int pre, int len, i
2016-09-20 14:15:45 288
原创 hdu5894 hannnnah_j’s Biological Test
题意:m个人需要坐在有n个座位的圆桌上,使得任意两个人之间距离至少为k,座位都不相同,人可以看做相同题解:可以想象成每一个人后面至少跟着k个座位 当一个人的位置确定以后,就变成了sum = C(n - 1 - m * k ,m - 1)
2016-09-19 21:16:37 236
原创 hdu5900 QSC and Master
题意:n题解:很明显,区间dp 感觉像是括号配对一样,要不是()()这样,要不就是(())这样 但需要注意的是,类似于(())这样时,里面的()必须是完全去掉int T,n,a[310],b[310],c[310][310];///c用于记录里面是否是完全使用LL dp[310][310];void donggui(){
2016-09-18 21:33:52 413
原创 hdu5901 Count primes (计算1-1e11内有多少素数)
题意:计算1 ~ n内有多少素数(n 题解:刚开始心想分段打表,结果跑了好久,没出结果,放弃 结果是Meisell-Lehmer,从来没听过,做为模板吧 详情https://en.wikipedia.org/wiki/Prime-counting_function//计算1-n内有多少素数//复杂度O(n*(2/3))#incl
2016-09-18 21:21:58 736
原创 codeforces716c Plus and Square Root
题意:贼长,初始2,第i次操作时,可以连续加好多次i,当到达某一个完全平方数时,开更,开更后必须满足膜(i+1)==0,求每次操作需要加多少次i题解:根据题意 a[i] + ans[i] * i = a[i+1] * a[i+1] ans[i] = (a[i+1] * a[i+1] - a[i]) / i a[i] % i == 0
2016-09-18 10:10:17 570
原创 51nod 1714 B君的游戏
题意:玩儿游戏,可以把一个数x变成xi,xi&x == x,问先手能不能赢题解:这个转换,也就说把x变成二进制后,只能在原来有1的位置上写1,并且,至少有一位不写1 很容易想到,一个数的sg值,只跟这个数的二进制有多少个1有关,转换也很好想,但时间肯定来不及 其实只要把所有( 以前也想到过这种打表,当时数据很大,好像有1e5
2016-09-14 19:52:58 760
原创 codeforces714e Sonya and Problem Wihtout a Legend
题意:一串数字,要求变成严格的上升子序列的最小花费,花费为abs(a-temp)题解:做这题之前,可以先去做做hdu5256 考虑两个位置i,j(i= j - i ,也就是说a[j] - j >= a[i] - i 那么考虑新的数列a[i] - i,只要保证这个数列是上升的就可以(可以存在相等) 首先把a[i]都变
2016-09-14 14:12:12 858
原创 hdu5726 && hdu5869
hdu5726 GCD题意:n个数,q次询问,每次询问给出(l,r),问区间的gcd,并且有多少个区间和这个区间gcd相同题解:求区间啊gcd比较简单,直接线段树就可以,怎么求有多少个区间呢? 假设知道了处理到上一位的gcd都有哪些,那么通过上一位的gcd,就可以求出到本位的所有的gcd 性质,n个数,所有数可能组成的gcd,有大概log
2016-09-13 17:21:22 410
原创 hdu5875 Function
题意:一个区间,m次询问(l,r),求a[l]%a[l+1]%...%a[r]题解:比赛时候,想到的是二分线段树,说了以后,学弟说可能会退化,当时没多想,其实仔细想想,构造不出来那样的数据吧,线段树常数比较大,看到队友用RMQ,常数小 其实本质差不多,就是先找前一半的最小,看看是不是小于a[l],如果是,就继续在左找,没有就在右找,如果右也没有,就退int a[1
2016-09-12 21:48:12 239
原创 hdu5876 Sparse Graph
题意:给2e6的点,2e5的边,求补图中,单源点到所有点的最短路题解:比赛时候,没有仔细考虑这个,发现其实挺水的 边少的,一半是用bfs 维护两个set,set1中,记录的是,没有处理的点,set2中是刚刚处理的点 经过一个点时,把连接的点,且在set1中的点,放到set2中,然后set1中的点就可以处理,交换set
2016-09-12 20:12:24 235
原创 2016 Multi-University Training Contest 2
hdu5734 Acperience题意:说了一大堆,求求和(wi - x * bi),使和最小,wi已知,x非负数,bi取-1或1题解:列出二次方程,初中知识各种变就行 最后答案是(n * 求和(wi^2) - (求和(wi*bi))^2)int main(){ int t; cin>>t; while(t--){
2016-09-09 15:21:18 257
原创 2016 Multi-University Training Contest 3
hdu5752 Sqrt Bo题意:给一个数n,n 题解:肯定是大数,但JavaBigInteger没有直接开方的函数,倒过来想,平方5次最大得到多少即可import java.util.Scanner;import java.math.BigInteger;public class Main { public static void main(String[] args
2016-09-08 13:42:10 287
原创 codeforces 545D. Queue
题意:给你一个序列,如果这个数比他前面所有数字的总和大于等于,那么他就是开心的,否则就是不开心,让你重新更改顺序,使开心的人最多题解:首先,排序,对于开心的,留下来,不开心的,扔到最后,这还可能使后面开心的变多。int a[100010];int main(){ int n; cin>>n; for(int i=0;i<n;i++){ scanf("
2016-09-07 21:11:01 329
原创 Codeforces 689D Friends and Subsequences(二分+RMQ)
题意:给两个数列a,数列b,求有多少个区间[l,r],使得a区间的最大值等于b区间的最小值题解:首先,满足maxi=lrai−mini=lrbi≤maxi=lr+1ai−mini=lr+1bi 因为左端点固定,区间越大,最大值越大,区间越大,最小值越小。 然后就可以枚举左端点,二分右端点,求出所有的max-min == 0即可,区间查
2016-09-07 16:46:23 246
原创 Codeforces 678E Another Sith Tournament(状压dp,概率dp)
题意:n个人的擂台赛,起初主角选一个人作为擂主,然后主角选择人上去打擂,直到剩最后一个人,并且主角是擂主,问最后主角是擂主的概率最大是多少题解:dp[i][j]表示i状态下,j是擂主,最后主角胜出的概率 dp[i][j] = max(dp[i - (1 ans = max(dp[((1 刚开始一直没想通为何要倒着dp
2016-09-07 11:24:26 424
原创 概率dp
来写一个概率dp专题light oj 1027 有n个门让你选,每个门有一个数字,正数代表x分钟后出去,负数代表x分钟后回到起点重新开始然后问你出去的时间期望是多少分钟如果是一个正数,那么x分钟后就可以出去,如果是一个负数,那么等x分钟后,继续回到起点,那么答案就是ans = (正数的个数 / 总个数) * (正数的和 / 正数的个数) + (负数的个数 / 总
2016-09-06 19:23:30 232
原创 poj3213
传送门 http://poj.org/problem?id=3213 题目大意:两个矩阵(N 矩阵乘法最低复杂度就是N^3的啊,要计算每一个的话,妥妥超时,但这题规定,只有可能一个地方出错,可以通过求出前一个矩阵的列和,后一个矩阵的行和,进行简化,十分巧妙。 #include #include #include #include #include #i
2016-05-25 16:06:24 542
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人