- 博客(118)
- 收藏
- 关注
原创 Primer C++ 5th 14章 笔记
操作重载与类型转换重载的运算符是具有特殊名字的函数。 operator <type>一元运算符有一个参数, 二元两个。除了重载函数的调用运算符 operator()之外,其他重载运算符不能含有默认实参。如果是类的成员函数, 则第一个运算对象绑定到隐试的 this指针上。不能被重载的运算符: :: .* . ?:在通常情况下,不应该重载...
2018-02-14 20:43:47
338
原创 动态内存Notes
shared_ptr && unique_ptr && weak_ptr静态内存保存局部 static 对象, 类 static 数据成员,以及定义在任何函数之外的变量。栈内存用来保存定义在函数内的非 static 对象。除了静态内存和栈内存,每个程序还拥有一个内存池。这部分内存叫做自由空间或堆。程序用对来存储动态分配的对象。C++ 11 提供两种智能指针来管理动态对象:shar
2018-01-12 22:25:16
242
原创 Regularization
RugularizationThe problem of overfitting Overfitting if we have too many features, the learned Hypothesis may fit training set very well (J(θ)=12m∑mi=1(hθ(x(i)−y(i))2≈0J(\theta) = \frac{1}{2m}\sum
2017-07-14 21:15:45
437
原创 Logistic Regression
Logistic RegressionClassification Classification : y = 0 or 1; Linear Regression : hθ(X)>1h_\theta(X) > 1 or hθ(X)<0h_\theta(X) < 0 Logistic Regression : 0≤hθ(X)≤10 \leq h_\theta(X
2017-06-30 18:31:55
481
原创 Linear Ragression with multiple variables
Linear Ragression with multiple variablesMultiple features Hypothesis: hθ(x)θ⃗ X⃗ =θT×X=[θ0,θ1,θ2⋯,θn]=[1,x1,x2⋯,xn]\begin{aligned}h_{\theta}(x) &= \theta^{T} \times X \\\vec{\theta} &= [\theta_
2017-06-26 14:13:20
338
原创 Machine Learning Course 1 and 2
What is the Machine Learning? Experience E , Task T, Performance measure P If its performance on T as measured by P , improves with experience E。 经验 E, 任务 T, 性能度量 P。 由 P 定义的关于 T 的性能随着 E经验而
2017-06-24 20:02:21
440
原创 POJ 3276 (一维开关问题)
题意:现在有 N 个牛站一排, 给你每个牛的方向。 你现在每次只能反转连续 K 个牛的方向,问把所有牛反转到面向前方 所需要的最少操作次数 M, 以及 K的值。分析:每次反转一个区间后, 如果左端的牛方向真确, 我们便不去考虑这个牛了。 故从左到右扫一边即可, 枚举K的值, 整个复杂度 O(N2);O(N^2);Code:#include <iostream>#include <cstdio
2016-10-20 13:48:55
468
原创 HDU 4840(最小生成树)
题目:给你一条蜿蜒曲折的通道, 通道拐角均为直角。有一个小的正方形要通过这个通道。 而通道中是有一些阻碍点的, 正方形不能穿过这些点。现在问你正方形的最大边长是 多少。分析:通道有内外两条边, 看做两个点N,W,阻碍点到通道的距离看做是阻碍点与N,W之间的权值 阻碍点之间的距离也是其相应的权值。这样就把这个问题转化为图了。 图上任意两个点之间的路径上的最长边的最小值是其最小生成树上对应两个点
2016-07-30 12:19:43
1301
1
原创 Uva 10369 (最小生成树)
题意:有 P 个哨站, 哨站之间用 无线电传播。 现在有 S 个卫星, 一个卫星可以连接任意两个哨站。 无线电的最长传播距离为 D。 现在 P 个哨站的坐标, 要求每个哨站之间至少有一条通信通道; 求D 的最小值。分析:先把 P 个哨站看成P 个点,这里总共有 P∗(P−1)2\frac{P * (P-1)}{2} 条边的图; 边权就是距离。 在没有卫星的情况下, 所有无线电的在满足至少
2016-07-30 01:09:26
622
原创 51nod 1228 (伯努利数 + 组合数学)
题目:求这个∑i=1nik\sum\limits_{i = 1}^{n} i ^ k 题目给你 n , k。分析:伯努利数于幂数和的关系: 伯努利数: 这么多性质可以直接写了Code:import java.util.Scanner;public class Main { public static Scanner cin = new Scanner(System.in);
2016-07-28 13:35:31
538
原创 Uva 10247 (组合计数)
题目:有一颗 K 叉完全树, 深度 D,有 N 个节点, 给你 [1 - N] 给这颗树的节点标号。 父节点 要比所有子节点的标号小。 问有多少种标号方法。分析:题目的标号是不允许重复的。所以根节点的表示是最小的。 对于一颗 K 叉 D 深度的树, 其节点数为 Nk,dN_{k,d}, 首先根节点的标号数是最小的。 然后就会剩下 N-1 个标号, 就相当于把 N-1个数分为 K 组, 每组 N
2016-07-27 14:49:45
444
原创 Uva 10157 (DP)
题目:给你一堆括号组成的字符串, 其长度就是字符长度, 其深度 问长度 为 n, 深度为 d 的串有多少种可能。分析:首先 Dp[L][D] 表示 长度为 L, 深度最大为 D 的字符串种数。 可以发现 Dp[L][D]=∑Dp[k][j−1]∗Dp[i−k−1][j]Dp[L][D] = \sum{Dp[k][j-1] * Dp[i-k-1][j]} 然后数据小, 直接写了Code:im
2016-07-27 08:59:59
346
原创 Longest Increasing Subsequence Arrays (组合计数)
题目:LINK 题意:一个序列长度为 M, 每个数值在 [1, N], 问这个序列的最长上升子序列刚好 为N 的时候, 序列有多少种。分析:感谢kg2006的思路。 首先选取 N 个位置 S1,S2,S3 ….. SN。 设S1 之前的位置没有 1, S1 - S2 没有 2… 则有 S1 之前 S1-S2之间 … SN-1 - SN 之间的数都是有 N-1 中选择方案。 而 SN 之后
2016-07-25 13:21:30
273
原创 POJ 3761 (组合计数)
题意:冒泡排序一轮: 相邻之间的两个数比较, 然后交换。 现在给你一个有序的数列, 从 1 - N;而且是经过 K 轮交换得来的。 问你有多少个这样的数列。分析: 对于一个数列, 我们是有一个反序表的 Ai, 反序表中的 Ai 表示 i 左边有多少比 i 要大的数的个数。可以很容易得到反序表 和 原序列是一一对应的。 而经过冒泡排序的一轮, 是可以发现把 反序表中大于0 的数都减一
2016-07-24 16:23:04
346
原创 HDU 4417 (二分 + 区间第k大)
题目:查询区间【L,R】中有多少数 比给定的 H 小。分析:我们可以这么想, H 一定会比 区间的第 X 大 ,第 X +1 小。 怎么确定 X。 这是一个单调的问题, 所以二分 + 区间第 K 大就可以确定了。Code:#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using name
2016-07-19 14:22:59
352
原创 POJ2104 ---(区间第K 大)
学习划分树和主席树练得模板题。题目 :就是区间第K 大了。目前只会划分树和主席树了。Code:/* 划分树//#include <bits/stdc++.h>#include <iostream>#include <algorithm>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;cons
2016-07-19 13:40:30
347
原创 CF 675E Trains and Statistic(线段树 + Dp)
题目:给你 n 个车站, 第 i 个车站能买到 i+1 到 A[i] 的票, 现在有 P[i][j] 为 车站 i 到 j 所需要的最少的买票次数。 求所有的 P[i][j] 的和。分析:首先, 对于在车站 i , 做到最后一站, 我们贪心买票的思路是 在 i+1 到 A[i] 车站中取最大值, 在那一站再去买票, 即可最少到达最后一站。在求解过程中, 有很多重复步骤, 故可以Dp从后往前扫。利用
2016-06-06 16:11:03
500
原创 BZOJ 1002: [FJOI2007]轮状病毒
题目:[LINK](http://www.lydsy.com/JudgeOnline/problem.php?id=1002)分析:基尔霍夫矩阵, 生成树计数, 通过行列式找出递归关系就好了Code:/************************************************************** Problem: 1002 User: aoxuets
2016-06-05 14:20:42
412
原创 POJ 2082 (单调栈)
题目:给你一堆挤在一起的矩形(不可旋转)。问这些矩形能组成的面积最大矩形的面积是多少。思路:用单调栈, 使栈内矩形按照高度 H 严格递增。对于一个新的矩形q, 如果q.H < stack.top.H 就退回到可以压入的地方, 在退回时, 计算退去矩形的面积,取一次最大值。Code://#include <bits/stdc++.h>#include <iostream>#include <
2016-05-24 16:02:05
480
原创 Light OJ 1402 (Dp + 树状数组)
题目:[LINK](http://www.lightoj.com/volume_showproblem.php?problem=1402)给你一些点(SRT, R);按照SRT排序, 然后再坐标系中画出这些点, 连成一条线。线会有峰点(peak),一个点是峰点, 相邻两个点的 R 值都比它小 或 大。然后WARush 要丧病的忽略一些点,(忽略第X点后,第 X 后面的点会前移! ) 会形成
2016-05-20 15:48:17
426
原创 LightOJ 1372 (枚举 + 树状数组)
题目Link 输出序列中有多少个组合 {a1,a2,a3,a4,a5,a6a_1 , a_2, a_3, a_4, a_5, a_6}可以构成一个六边形。分析序列每个数都不相等。 所以可以设 a1<a2<a3<a4<a5<a6。a_1 < a_2 < a_3 < a_4 < a_5 < a_6。 把六边形分解为 4 个三角形, 又可以得出 a1+a2+a3+a4+a5>a6a_1 + a_2
2016-05-17 21:14:10
478
原创 LightOJ 1348 (树链剖分 + 线段树(树状数组))
题目Link分析典型的树链剖分题, 树链剖分学习资料Code#include <bits/stdc++.h>using namespace std;const int maxn = 30000 + 131;struct Edge { int Next; int To;}edge[maxn<<1];int Head[maxn], tot, n; ///以下是重链数据定义i
2016-05-17 20:15:28
435
原创 Light OJ 1343 - Aladdin and the Black Stones
题目link 求偶数子序列 满足 的个数。分析首先, 我们先把每一对a[i] + a[j]存起来, 这样就可以把题目的偶数个条件无视了。设 T[i,j] = a[i] + a[j]; 因为我们是要求序列个数, 所以对于 [i,j]区间, 我们要找出 [i,j] 内有多少对满足 T[x,y] < T[i,j] 的。把 (i,j)想成坐标系的点, 那么上面求的就是 平面矩形 {[i,i],
2016-05-15 11:51:41
462
原创 Light OJ 1266 - Points in Rectangle
题目Link 就是查询矩形内有多少个点。分析二维树状数组维护就好了,。Code#include <bits/stdc++.h>const int maxn = 1000 + 131;struct Point { int x, y;};int Num[maxn][maxn];bool Vis[maxn][maxn];int lowbit(int x) { return x&(-x);
2016-05-15 09:27:51
443
原创 Light OJ 1085 - All Possible Increasing Subsequences
题目link 给定一个序列, 求出上升子序列的总数。分析Dp[i] 表示序列 以 i 结尾的数目。 可知 Dp[i]=∑Dp[x]+1Dp[i] = \sum Dp[x] + 1 这是一个前缀和, 用树状数组维护。Code#include <bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 1e
2016-05-14 22:04:00
384
原创 CodeForces 671C - Ultimate Weirdness of an Array
题意:给以一个定义, F(l, r) 的值表示序列 A[1:n]的子序列A[1....(l-1),(r+1)...n] 之中 任意两个数的最大公约数的最大值。思路:英文题解 大致解释一下: H[i] 表示 F(l, r) <= i 区间 (l,r) 的个数。 V[A[i]] = { b1, b2, .... bk }, 其中 A[i] % bx == 0 还有一个next
2016-05-14 14:12:44
895
原创 Codeforces Round #352 (Div. 2) (A-E)
672A Summer Camp题意:1-n数字连成一个字符串, 给定n , 输出字符串的第n个字符。n 很小, 可以直接暴力。Code:#include <bits/stdc++.h>using namespace std;int main() { int n; cin >> n; int begin = 1; for(;;) { in
2016-05-14 02:43:42
655
原创 ZOJ1008
题目:ZOJ 1008分析:重排矩阵, 虽然题目给的时间很多, 但是要注意剪枝, 把相同的矩阵标记, 在搜索时可以起到剪枝效果。Code:#include <bits/stdc++.h>using namespace std;struct Node { int left, right, top, buttom; bool operator == (const Node &a) con
2016-05-09 16:54:26
806
原创 51nod--1069 Nim 游戏(博弈论)
题目:有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。 例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。 Input 第1行:一个数N,表示有N堆石子。(1 <= N <= 1000) 第
2016-03-24 21:54:22
820
原创 51nod--1006 最长公共子序列Lcs (动态规划)
题目:给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为:abcicba abdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。 Input 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) Output 输出最长的子序列,如果有多个,随意输出1个。 Input示例 abci
2016-03-23 19:30:17
407
原创 51nod--1134 最长递增子序列 (动态规划)
题目:给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。 Input 第1行:1个数N,N为序列的长度(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应序列的元素(-10^9 <= S[i] <= 10^9) Output 输出最长递增子序列的
2016-03-23 18:43:54
919
原创 51nod--1135 原根 (数论)
题目:设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数) 给出1个质数P,找出P最小的原根。 Input 输入1个质数P(3 <= P <= 10^9) Output 输出P最小的原根。 Input示例 3 Output示例 2分析:原根的板子题了。 原根知识详解: 点我萌萌哒实现:#include <bits/stdc+
2016-03-23 18:32:19
562
原创 51nod--1174 区间中最大的数 (RMQ)
题目:1174 区间中最大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出一个有N个数的序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,最大的数是多少。 例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题) Input 第1行:1个数N,表示序列的长
2016-03-22 11:24:14
505
原创 51nod--1079 中国剩余定理
题目:1079 中国剩余定理 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。 Input 第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10) 第2 - N
2016-03-22 10:20:08
279
原创 51nod--1181 质数中的质数(质数筛法)
题目1181 质数中的质数(质数筛法) 题目来源: Sgu 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。 Input 输入一个数N(N
2016-03-21 20:48:13
334
原创 51nod--1183 编辑距离(动态规划)
题目:1183 编辑距离 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: sitten (k-
2016-03-20 00:08:59
672
原创 51nod--1185 威佐夫游戏 V2 (博弈, 乘法模拟)
题目:1185 威佐夫游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。 例如:2堆石子分别为3颗和5颗。那么不论A怎样拿
2016-03-19 22:30:15
1073
原创 51nod--1072 威佐夫游戏 (博弈论)
题目:1072 威佐夫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。 例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都
2016-03-19 22:27:35
649
原创 Sublime Text3 C++ 设置
系统环境:首先是 C++ 的环境设置, 先下载 CodeBlocks, 安装目录下有 MinGW, 直接复制到 C 盘下, 再在电脑中添加 环境变量(PATH)。 Sublime Text3 设置:因为 Sublime Text3 对有输入的程序支持不是很好, 这里我们需要在cmd 窗口中打开(C++, Python好像都是如此。)所以在 Sublime Text3 中 Tools -> bu
2016-03-19 01:12:43
1072
原创 51nod--1212 最小生成树
题目:1212 无向图最小生成树 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树。 Input 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2 <= N <= 1000, 1 <= M <= 50000) 第2 - M + 1行:每行3个数S E W,分别表示M
2016-03-16 21:44:41
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人