自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 【Coursera】Machine learning - week7 : Support Vector Machines

本周学习的内容便是大名鼎鼎的SVM。虽然视频不多,但是涉及到的知识点却是比以前多了不少。之前通过其他视频或者资料已经学过了,但是一直还是有一种雾里看花的感觉。这次通过这个视频,给了我另外一个看SVM的方向,让我对SVM的理解又加深了一层吧。这篇博文呢通过这两个方向同时分析,这样子感觉更能够get到SVM的精髓。话不多说切入正题。

2016-04-01 21:02:54 2014

原创 【Coursera】Machine learning - week6 : Advice for Applying Machine Learning

之前的几个周一直没有写,这个周才突然意识到应该写一下博客,因此现在才开始,后面再补好了。这个文章的目的,主要在于梳理一下视频中的zhishi

2016-03-29 21:22:52 945

原创 编译原理实验4——LL(1)文法分析

本来是打算再写一个select集生成器的,但是时间有限再加上懒后来还是放弃了= =。这个代码也是需要先新建一个文本文件sy4.in文本文件中第一行有一个整数x,代表有x个产生式接下来x行每行有三个字符串,分别代表产生式左边,右边还有对应的select集最后一行还有一个字母s,代表起始字符在读入了数据之后,若文法是LL(1)文法,则会输出"The Data is ok!"否则

2015-12-07 14:22:03 3120

原创 编译原理实验3——递归下降分析

本代码实现的文法是这样的G[E]:E→E+T| TT→T*F|FF→(E ) | i因为包含左递归,故需要消去之后才能做。设计理念:通过递归下降的方式来对句子进行分析。若能够接收一个完全的初始字符并且所有的串全部被读入,则算作accepted。否则为wrong。使用说明:首先输入需要分析的样例个数,再依次输入待分析的句子即可。代码

2015-12-07 14:11:02 2260 1

原创 编译原理实验2——自动机的确定化和最小化

(前言:这个代码的产生真的是非常非常曲折。。。。因为退役之后没事儿干,打算好好折腾ubuntu玩玩,结果装系统的时候把win装崩了,作业还没备份直接全没了。。我重写的时候真的是眼里全是泪水。。。后来实验报告写好了之后,又萌萌哒地没有备份,又留在机房一次= =后来又是重写啊啊啊啊啊啊啊啊啊啊啊!)使用说明:调用NFA中的init函数可以对数组进行初始化。调用NFA中的re

2015-12-06 21:35:04 9336 5

原创 编译原理实验1——词法分割

这个实验我采用的方法是将字符(or数字)和运算符切割开来,代码很简单也不想解释了。使用方法:新建三个文件keyword.in,operator.in,value.inkeyword.in里首先一个整数x表示关键字的个数接下来x行每行一个字符串和一个整数分别表示一个关键字和对应键值operator.in里首先一个整数x表示运算符的个数接下来x行每行一个字符串和一个

2015-12-06 21:19:29 1257

原创 【HDU 5471】Count the Grid

题意:一个矩阵中可以任意填m个数。给你N个小矩阵并且告诉你此矩阵中的最大值v,求有多少种大矩阵满足所给条件。分析:考虑到n很小,因此我们可以将所有不同的矩阵重叠的情况(最多2 ^ n种)的最大值和块数先处理出来。其中第i种的最大值为vi,块数为ci。然后对于每一种重叠情况,我们有两种选择,其一是不取最大值,则方案数为(vi - 1) ^ ci。第二种是取最大值,则方案数为vi ^ ci -

2015-10-01 19:31:17 1146

原创 【HDU 5448】Marisa’s Cake

题意:给你一个包含n个点的凸包,所有可能出现凸包的面积和。分析:首先比较暴力的方法就是n^2枚举一条边,求它对答案的贡献。但是点的个数有10^5,因此我们考虑从某一个点出发的所有有向面积。若我们当前考虑的是第i个点,那么它与第i+1个点形成的这条边所能产生的凸包个数为(2^(n - 2) - 1)个,与第i + 2个点形成的这条边的个数为(2 ^ (n - 3) - 1)个……又因为叉积满

2015-09-15 14:31:46 698

原创 【HDU 5445】Food Problem(DP)

题意:给你n种食物,m种车,每种食物有三种属性能量值t,体积u,数量v。每种车有三个属性值容量x,价格y,数量z。问题是在能够达到至少p能量的要求下,最小花费为多少,若大于50000则输出TAT。分析:我们可以首先用0\1背包把在达到p能量的情况下的最小体积先搞出来,因为一个物品最大能量值code:#include#include#includeusing namespace s

2015-09-15 14:14:56 578

原创 【HDU5442】 Favorite Donut(后缀数组)

题意,给你一个长度为n的字符串,让你选择从某一个地方断开(可以正着取也可以反着取)。问你最大的字典序是从哪里断开。首先先将原串复制一遍,然后用后缀数组求出字典序最大的位置,如果字典序相同则求出最靠前的位置。然后再将该串翻转,得到反向取字典序最大的串,再直接比较就好了。code:#include#include#includeusing namespace std;const

2015-09-15 14:06:02 712

原创 【ZOJ 3874】Permutation Graph

浙江省赛题。当时赛后听说是NTT+CDQ震惊了两个词一个都没有听说过。现在突然想起来这个题,回来一看也并不是那么的不可做。比赛的时候还在打表找规律233~首先可以想到,因为逆序对都要连一条边,因此所有的对于任意一个部分都是下表连续的,否则答案就为0。若下表连续的,则可以想到答案只与长度有关。不妨设dp[i]为长度为i的连续下表的方案数,则可以得到dp[i] = i! - sig

2015-07-29 23:50:13 912

原创 【ZOJ 3887】LCGCDS

比赛的时候没有想出来跪了(事实上赛后也拖到现在才A掉,还是因为昨天多校有一个加强版的题才想到的)。题目大意是给你两个序列,问你最长的gcd相同的子串的长度是多少,并且输出个数。对于每一个以i为结尾的子串,最多只会出现log级别的不同的gcd子串,因此我们可以考虑先把两个序列的gcd长度处理出来,然后再处理。对于所有gcd为v的子串,我们得到的是很多个最小长度和最大长度的集合。首先我

2015-07-29 23:29:31 536

原创 【BZOJ 2286】消耗战(虚树)

因为听说多校第一场的09可以用虚树来做,于是赶紧趁着没比赛补一发相关知识点。事实上虚树就是通过重新建树,使得树上的“无用决策点”全部去掉(当然相关信息必须要之前就维护好)。http://lazycal.logdown.com/posts/202331-bzoj3572虚树的构建方法code:#includeusing namespace std;typedef

2015-07-24 16:55:12 439

原创 【ASC44】F - Funny Card Game

题意:给你一列牌,让你找到k个连续的子串,其中每一个子串出现次数最多的数字的出现次数为得分,问最多可以有多少分。分析:首先可以先贪心地想一下,如果选择出来了这k个子串,那么我们总可以通过适当地对子串进行收缩,使得子串的两边既是子串的众数,那么我们就可以考虑每一个数,要么这一段只有这一个数,要么这一段的最前面一个数和这个数相同。因此我们可以用dp[i][j]来表示前i张牌分成j段且第j个人必须取

2015-07-13 13:00:21 672

原创 【codeforces #310】div1 A -- C

A题:题意:给你n个数以k组的形式排列,每组数内保证递增。每次操作可以取出一个数或者把一个数放在一列的最后,问最少经过多少次操作可以使得1--n排列在一列。分析:首先可以假设若所有数都要先取下,再放到某一列,则要进行2 * n - k - 1次操作。然后因为若1--i直接在一起,那么可以减少(i - 1)*2次操作,故可得代码。#includeusing namespace st

2015-07-06 20:33:01 370

原创 【Codeforces#311】 div.2 C--E

C:题意:一张桌子有n条腿,每条腿都有锯掉所要消耗的能量。一张桌子如果最长的腿超过一半,则称稳定的。问使桌子稳定的最小需要能量。枚举最长的腿的长度,然后用set维护一下就好了。#includeusing namespace std;const int N = 100005;struct elem{ int l,d; void add(){ scan

2015-07-06 20:13:25 385

原创 【CodeChef PRIMEDST】Prime Distance On Tree

题意:给你一棵树,任取两点,问两点间距离为质数的概率。若对于求树上的路径数的题,可以想到要用树分治。那么我们考虑经过一个点的方案数,可以用fft快速地求出所有方案数,然后减去来自同一颗子树的方案数,就得到了答案。#include#include#include#include#include#includeusing namespace std;const int N = 500

2015-07-01 13:19:18 715

原创 【POJ 1741】Tree(树分治)

之前一段时间做的,但是因为懒所以没有写题解。有点忘了现在重新做一下,还是乖乖写题解吧~树分治主要的在于要找重心。对于那些需要统计满足条件的路径条数的题,我们就可以想到树分治。对于某一个点,我们可以将答案分成经过这个点的和不经过这个点的,那么经过这个点的所有答案可以快速统计出来,剩下的就只用递归到子树中去找就好了。还是多做题吧~下面是代码:#include#include#i

2015-06-30 16:44:14 380

原创 【CodeChef COUNTARI】Arithmetic Progressions(FFT)

题意:找到一个序列中满足i 这道题可以直接用分块来做,假设每一块的大小是C,现在考虑第j块,那么可以分为三种情况1、对于三个数都在块j中,则可以通过枚举两个数找第三个数O(C^2)2、对于两个数在块j中,也可以通过枚举两个数找第三个数O(C^2)3、对于只有一个在块j中,则是通过对j - 1个块和后面n - j个块做FFT,就可以得到答案。具体见代码:#include#inc

2015-06-30 15:06:47 433

原创 【ZOJ 3856】Goldbach(FFT)

题意:最多使用三个质数做加法和乘法,问得到X有多少种方案。这道题的话分几种情况讨论清楚就好了。1、只有一个数的情况,如果这个数是质数则方案数加12、有两个数的情况,可以将两个数做加法和乘法,加法的话将质数得到的数字做一遍FFT,乘法直接做sqrt(n) * sqrt(n)就好了3、有三个数的情况,分别有三种方法,分别是a + b + c, a + b * c,a * b * c

2015-06-30 14:47:54 830

原创 【HDU 4609】3-idiots(FFT)

这道题也是FFT的入门应用题之一了,求任意不同的三条边能形成三角形的概率。首先我们可以先用FFT求出任意两条(可相同)的边能组成的长度的方案数。那么现在就需要去重了,我们可以想到对于组成长度为奇数的边直接除以2即可(因为与x,y的先后顺序无关)对于长度为偶数的,还要先减去自己与自己组成的方案数,除以2后再加回去与先后顺序无关的方案数。具体见代码

2015-06-28 11:36:14 397

原创 【SPOJ TSUM】Triple Sums(FFT+容斥定理)

这道题是叉姐讲义的第一道题,题意要求对于所有S,三个编号互不相同的数之和等于S的方案数。如果是没有互不相同这个要求,那么题目就非常简单,直接用FFT求出x的s次方的系数即可。但是如果要求互不相同,那么就考虑需要用到容斥定理。三个编号互不相同的数的方案数 = 三个任意的数的方案数 - 两个数相同另一个数的方案数 + 三个数都相同的方案数。因此我们需要事先统计出两个数和三个数相同能取的所有方案

2015-06-27 16:45:11 946

原创 【HDU 1402】A * B Problem Plus(FFT)

这道题是快速傅里叶变换的最模板的题了,存个板子#include#include#include#includeusing namespace std;const double pi = acos(-1.0);const int N = 200005;struct Complex{ double r,i; Complex(double r = 0,double i

2015-06-27 16:41:48 336

原创 【COGS 930】找第k小的数

主席树的基础题,也没什么好说的主要再拿出来练一下整体二分主席树code:#include#include#include#define lson l,mid#define rson mid+1,r#define Mid int mid = (l + r) >> 1using namespace std;const int N = 100005;int C[N],C2[N

2015-05-19 16:23:58 435

原创 【POI2011】 Meteors

这道题是整体二分的基础题,可以通过同时对所有询问进行二分,并且使得贡献值不用重复计算,所以使得效率很高http://victorwonder.is-programmer.com/posts/70210.html  已经讲得很清楚了code:#include#include#include#define lson l,mid#define rson mid+1,r#defin

2015-05-19 14:26:45 358

原创 【CSUOJ 1623】Inspectors

对每一个点进行拆点,并且每个入点和出点的容量设为1,因为每个点的出度与入度都为1且不存在自己连自己的边,故最后得到的图都为环。跑最小费用流就好了e代码如下:#include#include#include#includeusing namespace std;const int N = 222;const int M = 11111;const int INF = 1e9;

2015-05-18 15:14:23 462 2

原创 【HDU 5140】Hun Gui Wei Company(主席树)

这道题在一开始参考了题解之后是用线段树写的,后来MLE了让人很忧伤,因此后来改用内存常数较小的主席树才过了,正好这几天在学习主席树(orz发明者)首先因为数据范围很大,首先就会想到离散化。将问题简化一下,是查询从L的值从LL到HL并且A的值从AL到AH的S之和,因此首先将所有员工以L为关键字子小到大排序,然后对于每个询问先二分查找到离散化后的范围,再在树中直接访问相应位置就好了#inclu

2014-12-07 20:26:51 852

原创 【BZOJ 2809】dispatching(主席树)

这道题用主席树做做感觉非常舒服~~~首先题意来看,是说需要在树形结构中找到一个点i,并且找到这个点子树中的一些点组成一个集合,使得集合中的c之和不超过M,且Li*集合中元素个数和最大简单地想想首先需要枚举每一个点,然后在子树中找到最小的k个点,使得sigma(C[i])(i = 1..k)不超过M,那么L[i]*k就是对于这个点来说的最优解那么我们应该想到可以利用主席树中的性质,首先将

2014-12-06 15:24:32 760

原创 记第一次区域赛--鞍山之行

第一次参加区域赛的旅程还是可以说

2014-10-22 14:30:37 849 4

原创 【HDU 5021】 Revenge of kNN II

这道题当时比赛的时候没时间看了(虽然有时间也不一定做得出来_(:з」∠)_),但是其实思路没有那么复杂主要就是对于每一个询问,因为所覆盖点的数量具有单调性,因此二分枚举所覆盖点的半径,然后可以找出左边点的个数和右边点的个数若个数==K 则直接返回左右点的标号,若个数==k + 1则需要判断一下左右边点的标记号哪一个较小,然后舍弃较大的那个,直接返回左右标号具体看代码吧~#inclu

2014-09-23 21:06:41 568

原创 【HDU 5040】Instrusive

这道题在题意描述上让我很捉急,也可能是开这道题的时候已经进入了比赛的后半段,整个人也是感觉萌萌哒因此在题意的理解方面出现了较大偏差今天再把这道题翻出来做做,其实发现题意也没这么难理解只要理解为:在1s之内,先是Matt动,然后再是探照灯动,再对状态进行分析就可以了而我想到的是每一个格子有四种状态,分别是time % 4的情况,因为若time % 4的值相同则探照灯的朝向也是相同的

2014-09-23 20:23:55 591

原创 【FZU 1978】Repair the brackets (Splay)

这道题的难点主要在于如果快速地求出一段括号序列最少改变多少个可以变成合法的。看了题解报告才知道原来是这样的。对于一段括号序列,设(为1,)为-1,则设从序列开始的和最小值为x,整段序列和为y则(abs(y - x) + 1)/2 + (abs(x) + 1) / 2为答案因为最小值则意味着前面有abs(x)个“)没有”(“与其匹配,因此至少需要将(abs(x) + 1) /2 个”

2014-09-18 21:46:08 668

原创 【HDU 5001】Walk(矩阵快速幂+概率DP)

这道题因为n不会太大,因此设dp[i]的意义为结尾的点为i的且满足条件的概率因此可以将其写为一个1*n的矩阵,然后将其状态转移矩阵表示出来将状态转移矩阵列出来了之后,将删除的点的转移全部改为0,这样就可以愉快地利用矩阵快速幂进行求解了最后将dp[1..n]加起来就是该点的答案,时间复杂度n^3logd#include #include#include#include#inc

2014-09-13 21:23:19 740 2

原创 【HDU 3487】Play with Chain(Splay)

Splay的基础操作。1、删除某一个区间,然后从某个位置插入,可以将其旋转到关键树上去然后删掉就行了2、旋转某个区间。#include#include#include#define keytree (ch[ ch[root][1] ][0])using namespace std;const int SIZEN = 300005;struct SplayTree{

2014-09-13 20:52:13 475

原创 【HDU 3436】Queue-jumpers(Splay)

Splay的基础操作。问题的关键就在于N非常大,就算是利用Splay数组也是远远开不下的,因此很自然地想到了hash一下可以将所有要进行Top的节点和Query的节点然后对于每一个节点或者每一个段,可以将它的长度表示出来(方便起见每个点可以看做一个长度为1的线段)剩下的就是Splay的基础操作了1、top:将节点删除后插入到队首2、Rank:找到当前子树的第k个数3、Que

2014-09-13 20:41:16 506

原创 【HDU 1890】Robotic Sort(Splay)

这道题就是Splay基础的旋转和sha

2014-09-13 20:24:10 450

原创 【ZOJ】3812 We Need Medicine

这道题就题意来说其实就是一道简单的记录路径的0,1背包,告诉你n个物品,每种物品只能取一次,再有q个询问,问你是否能在满足选出物品的w之和为m的情况下,满足t之和为s的情况,若可以则任意输出一种方案。因此我们可以设计状态,dp[i][j][k]为前i个物品选出部分,当t之和为j时,w之和为k的情况能否满足,若存在方案则为1,不存在则为0。而状态的转移方程也是很简单。dp[i][j+t[i]

2014-09-11 18:26:45 788

原创 【HDU 4441】 Queue Sequence(Splay)

这道题也是一道splay的基础操作的集合题,主要包含有三种操作:insert p :在p位置插入当前未出现的最小的数,如当前出现了1 2 3 6,那再插入4且正数和负数同时插入,而负数插入的位置要求:该负数左边负数的个数和该数的相反数的左边的正数的个数一样多且最为靠右则若2左边有4个正数,那么-2就应该插入在满足左边有4个负数的最靠右的位置而如何找到最小的数呢?用一个优先队列维护一

2014-09-09 18:54:29 670

原创 【HDU 4453】 Looploop(Splay)

splay简单操作集合

2014-09-06 20:09:36 561

原创 【HDU 1812】Count the Tetris

这道题是一道标准的polya定理的题对于polya定理的话主要是补一下置换群的相关知识,然后跟着推几遍就大概有个感觉了主要分为三步:1、找出置换群。2、对于每个置换群研究出循环节数3、利用定理求解因此对于这道题来说,一共有8种置换分别是旋转0°,90°,180°,270°,和沿着中线对称*2,沿着对角线对称*2其中又要分奇数和偶数的讨论,具体的式子见代码吧#in

2014-08-11 22:02:22 1125

空空如也

空空如也

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

TA关注的人

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