自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jkchen's Haven

尽身为莲,花开佛现

  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

原创 dp 状态压缩

知识:位运算例题有一个N*M(1<=N<=5,1<=M<=1000)的棋盘,现在有1*2和2*1的小木块无数个,要想盖满整个棋盘,会有多少种可行的方法?因为N比较小,而每个位置都只要两种可能,放于不放,所以我们可以用一个二进制数来代表一列,例如4(00100)代表只有第3个位置有放。想法有了,接下来是实现。因为方块只有2格长度,所以在i行放方块最多只...

2018-02-26 23:36:57 256

原创 dp 括号序列

原题:括号序列【基础算法・动态规划】——高级题意:给一个字符串,用最小的字符把它补成规则序列。定义如下规则序列(字符串):空序列是规则序列;如果S是规则序列,那(S)和[S]也是规则序列;如果A和B都是规则序列,那么AB也是规则序列。解析:首先是判断串里面,在删减一部分后所能形成的最长规则序列,例如()[]((,最长的规则序列为()[]为4。这个就是最经典的括号...

2018-02-26 12:50:51 580

原创 dp NOIP2006提高 能量项链

原题:能量项链题意:两个珠子两个数字,第一个为2 3,第二个为3 5,那么我们可以合并这两个珠子,变成2 5,得到2*3*5的能量。现在给一串珠子(首尾相连成一个环),我们可以任意合并两个珠子,求把这一串珠子合并成一个的时候得到的最大能量。解析:这个题因为每次可以任意选择两个珠子合并,所以有n!的可能性,不能暴力,需要用dp来做。(因为从最后一个开始合并的话需要前面的数,所...

2018-02-26 11:31:57 355

原创 最大顶点数的凸多边形

原题:POLYGON题意:在第一象限有n个点,用这些点再加上原点构成一个凸多边形(原点必须选),求顶点数的最大值。思路:用dp[i][j]表示以i为最后第二个点,j为最后一个点所能构成的最大顶点数。对于所有的点,按照其斜率排序,以节省时间。然后规定第0个点和第n+1个点为原点,因为要从原点出发,再回到原点。对于一次操作,假设定下前面两点(1,2),对于后面的一个点(3),判...

2018-02-26 07:51:05 887

原创 子列按字典序排序

原题:Subset sequence题意:有数列1…n,求所有子列中按照字典序排列排在第m的子列分析:如果用next_permutation一个一个来的话,n最大为20,肯定会T,所以这道题只能找规律了。next_permutation虽然不能做题,打表找规律还是可以的,下面有打表的代码#include<iostream>#include<cstdi...

2018-02-25 15:33:25 1004

原创 中缀转后缀表达式

原题:表达式的转换——中级题意:中缀转后缀再一步一步计算,要求给出计算过程,即没算一步都要给出结果思路:首先是转换基本公式:遇到数,直接输出; 栈为空时,遇到运算符,入栈;遇到左括号,将其入栈; 遇到右括号,执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出;遇到运算符时,弹出所有优先级大于或等于该运算符的栈顶元素,然后将该运算符入栈;最终将栈中的...

2018-02-24 22:57:29 355

原创 模拟消灭星星

原题:消灭星星题意:输入这个矩阵代表,不同的数字代表星星不同的颜色,然后是m次点击,消法同消灭星星游戏思路:对于这个矩阵用什么保存,是一个非常困扰人的问题。选择的数据结构需要完成以下几项任务:对于单列来说,能够删除一个点,并且使这个点后面的数往前移一位对于整个图来说,能够在一列为空的情况下,把空白列后面的列往前移一列发现列和图的维护非常相似,都需要挪位,所以我想到了两种结构:...

2018-02-24 18:14:16 790

原创 院赛开始了 求最大子区间的最小值

原题:院赛开始了题意:n个数,分成m片区间,Max为m片区间中的最大区间(区间元素和最大),求Max的最小值思路:二分枚举一个最大值,每次判断从前往后是否可以分成m份(如果分成小于m份也可以把一个区间拆成多个区间,所以<=m就可以,>m就不行)代码:#include<iostream>#include<cstdio>#include<c

2018-02-24 12:33:31 359

原创 TSP问题

TSPTSP问题非常经典,(旅行商问题)是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次然后回到出发城市,并要求所走的路程最短。 如图,从0开始,把1,2,3都走一遍然后回到0,求最短路径。方法有很多暴力法:城市顺序全排列,找到最短距离,可以给服务器跑个两天没问题回溯法:走一遍,不行回来换条路,几个小时吧分支定界法:空间消耗比较大动态规划法:空间复杂度要求太高了,城...

2018-02-24 11:09:17 5982

原创 Mishka and Interesting sum 区间异或+树状数组+离线处理

原题:Mishka and Interesting sum知识:树状数组题意:给你n个数,然后询问q次,每次询问查询区间[l,r]里的出现过偶数次的那些数的亦或值解析:首先是出现偶数次,到底是哪些数。设Al为整个区间的异或,Odd为区间内奇数次的数的异或,Even为区间内出现偶数次的数的异或(Even为答案,eg:2,2,3,3,则Even为2^3),我们知道,Al == ...

2018-02-23 21:58:41 391

原创 Ultra-QuickSort (树状数组):使序列有序的最小交换次数

原题:POJ 2299知识:树状数组题意:一个n个元素的数组,对它进行冒泡排序,输出排序时交换两个数字的次数。解析:大家都知道,冒泡排序交换的次数就是数组中逆序数(不知道问度娘)之和,如果通过枚举,N^N直接做这题,肯定会T。你可以参考百度求逆序数的方法——并归,不过这里讲一下用树状数组的做法。求逆序数之和就是求ΣC[i],(C[i]代表第i个数后面比它小的数),稍微思考一下,它也...

2018-02-22 14:13:16 2335

原创 位运算,树状数组

位运算的运用 非常有用! 获得 n 的第 i 位的数据(0还是1),判断(n&(1<<i)),若真,为1,假,为0; 设置 n 的第 i 位为1,n=(n |(1<<i)); 设置 n 的第 i 位为0,n=(n &(~(1<<i)

2018-02-21 21:50:49 546 1

原创 石子合并,四边形优化,garsiawachs算法

题目分析原题:石子合并题意:在操场上沿一直线排列着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆石子合并成新的一堆, 并将新的一堆石子数记为该次合并的得分。允许在第一次合并前对调一次相邻两堆石子的次序。 计算在上述条件下将n堆石子合并成一堆的最小得分。解析:简单dp,用dp[i][j]表示合并i~j的最小得分,合并两个dp时,新的dp==两块的已有得分加上i...

2018-02-21 17:54:13 585

原创 青蛙过桥 DP,压缩

原题:青蛙过河题意:长为L的桥,上面有M个石子,青蛙从1点开始,每次跳的范围为[S,T],求过河所要踩的石子数的最小值。解析:在dp的角度这题非常简单,(从i点跳j步,Map[i+j]为1时代表此处有点)dp[i+j]=min(dp[i]+Map[i+j],dp[i+j]),求最小值的dp只需对dp数组附一个很大的值,再dp[0]=0,就可以完成。难点是L最高10^9,但是只有...

2018-02-21 11:51:29 675

原创 过山车 (二分图最大匹配 匈牙利算法)

开始时比较难理解的算法原题:过山车题意:n个女生,m个男生,每个女生都有几个固定的可以搭配的男生,有k组搭配总共,输入a,b代表a女生可以和b男生搭配,问最后最多有几对搭配。先附代码:#include<iostream>#include<cstdio>#include&a

2018-02-20 19:55:46 405

原创 N阶汉诺塔变形

今天来秋后算账,解决了这题。原题:N阶汉诺塔变形题意:每次只能往相邻塔移动的汉诺塔,输入阶数n和操作数k,输出k次操作后的n阶汉诺塔的样子回顾:递归汉诺塔每次只能移动到相邻塔,会比原来的要复杂一点,对于n层从1到3,我们分成如下步骤:1~n-1 从1到3n 从1到21~n-1 从3到1n 从2到31~n-1 从1到3对于1、3、5步,可以看成就是重复n 从...

2018-02-20 09:43:53 403

原创 time.h

我发现了有史以来最有意思的知识头文件:time.hclock_tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。对clock函数定义如下: clock_t clock( void ...

2018-02-16 21:04:10 375

原创 基数排序

基数排序介绍不同于其他基于比较的排序算法,基数排序是一种基于多关键字排序的思想对单逻辑关键字进行排序的方法。讲明白点,基数排序是把一个数看成很多的部分,比如123看成1,2和3叠在一起。实现方法最高位优先(Most Significant Digit first)法,简称MSD法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的...

2018-02-16 16:46:22 906

原创 桶排序

介绍桶排序的思想是把同一种类的数放进一个桶内(可以用int数组或者set等容器表示),然后在排序的时候就可以根据每个桶的不同(在生成桶的时候应该要考虑各个桶的优先级),先进行对桶的排序,再进行桶内元素的排序(当每个桶装的元素之间没有优先级时省略这一步)。下面有两种形式的桶排序的示意图单点桶 这种桶直接用int数组就可以实现,用nu[i]来表示 i 出现的次数,每次遇到i,使n...

2018-02-16 13:37:05 384

原创 多重背包及完全背包优化

今天大年初一,在这里祝广大love_leraning新年快乐!多重背包定义:给定n种物品和一背包。物品i的重量是wi,其价值为vi,每件物品的数量为xi,背包的容量为m。思路:即在01背包的基础上加上一遍数量的循环,把每个物品的每件都看成不同的即可。伪代码:for(i=0;i<n;i++) for(j=m;j>=w[i];j--) for(k=1;k...

2018-02-15 13:08:43 588

原创 多重背包方案数的求解

原函数求解多重背包方案数原题:找单词题意:有x1个字母A, x2个字母B,….. x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,….. 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词(ABC和ACB视为一个单词)。分析:拿出k个单词价值i,可以使dp[j]转化为dp[j+k*i](dp[i]表示价值和为i的方案数),比如有3个B(价...

2018-02-15 12:02:11 2255

原创 CodeForces-767C Garland 三分一棵树的价值

总算是自己写过了这道所谓的中等题。原题:Garland题意:给定一个n个点的树以及每个点的价值。问能否去掉两条边使得剩下的三个部分价值和相等,若可以输出要切掉的那条边所连接的子树根节点, 不可以则输出-1。首先,如果温度总和不能除以3就输出-1。对于答案,有两种可能,第一种是在母体切出两个sum/3的子体,第二种是切出一个sum/3*2的子体,再在这个子体切出sum/3的子体这...

2018-02-14 22:37:44 296

原创 CodeForces-768B Code for 1 二分搜索线段

原题:Code for 1题意:给定一个数N,对大于1的数在原来的位置拆分为N/2,N%2,N/2三个数。对拆分出的大于1的数同样进行拆分,直至所有的数均为0或1。对拆分后的0/1序列,询问L到R区间中1的数量。看到这题,我直接想都没想就直接模拟了,(可能比赛的时候脑子属于装饰品)结果理所当然ML了。后来才知道其实不需要还原最后的串就可以解答,直接用dfs做就可以了,先到了这题真的很水...

2018-02-14 20:34:22 567

原创 逆元详解

老早便想学这个东西,无奈学这个需要很多知识做铺垫。今日终于了结了这道坎建议先学的知识:费马小定理扩展欧几里得算法逆元介绍及应用(inv):求解公式(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法: 设c是b的逆元,则有b*c≡1(mod m); 则(a/b)%m = (a/b)*1%m = (a/b)*b*c%m = a*c(mod m); 即...

2018-02-10 16:04:07 3722

原创 扩展欧几里得算法(求逆元)

前论1. 欧几里得算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质: gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)公式表述 gcd(a,b)=gcd(b,a mod b) 证明: a可以表示成a = kb + r,则r = a mod b 假设d...

2018-02-09 11:56:06 6955 1

原创 全排列

今天遇到了一道图论题,需要找一条路,需途经所有指定的地点,再到目的地。数据200以内,并且需要求很多次两个地点的最短路,所以直接无脑套floyd就可以了,之后对于所有的可能路线遍历即可完成建图。但是数据大了这种方法还可以吗?我不知道。我在开始做的时候有一个疑虑,怎么样排除两个点之间的最短路不能走的情况,即局部最优不是全局最优的情况,例如 东土大唐到西天要走3秒,西天到浙江要走3秒,东土大唐...

2018-02-07 22:46:45 247

原创 对于string型甚是周详的用法

把网上可以找到的一些string的函数、用法用代码的形式敲了一遍没什么难点,看过了基本就会了#include#include#include#include#include#includeusing namespace std;int main(){ string a="abcdefgh"; cout<<a<<endl<<endl; cout"a

2018-02-06 16:40:22 201

原创 素数筛(线性筛法)

别问我为什么现在才学。。。素数也算是程序设计比赛中经常遇到的老对手了,对付它最基本的方法(这里说的是基本,不是蠢,怎么说我以前也一直在用)是通过素数的定义判断,只能被1和本身整除的数是素数。这种方法适合判断单个数是否为素数,当要求一个范围时,这种方法就基本上是T了。这时我们就可以使用素数筛来做。筛法的思想是去除要求范围内所有的合数,剩下的就是素数了,而任何合数都可以表示为素数的乘积,因...

2018-02-06 16:30:41 3441

原创 费马小定理

从刚开始学就经常会会听到这个东西,但是由于种种原因,至今才有所涉猎。首先,讲一下同余。同余所描述的是两个整数的一种等价关系,如果两个整数a和b除以同一个整数p所得的余数相等,我们就说这两个整数模p同余。记作a ≡ b(mod p) 。 例如:3 ≡ 5(mod2),同余为1性质: 同余的重要性体现在它保持了普通等式的许多性质。我们知道普通等式有以下 恒有a = a 如果a = ...

2018-02-06 15:28:48 2093 1

原创 C++ pair 型用法

C++ pair型pair 是 一种模版类型。每个pair 可以存储两个值。如果一个函数有两个返回值并且是不同类型,一种方法是写个struct ,但为了方便可以使用 c++ 自带的pair型 ,返回一个pair 。另外,在一个对象有多个属性时 ,一般使用struct ,但是如果只有两个属性的时候,就可以用pair 进行操作。。。如果有三个属性的话,其实也是可以用pair 。。。

2018-02-06 10:43:50 942

原创 list 用法

学了很多东西后才记起来有个叫list的东西,今天来补一补缺声明一个int型的list:list a;1、list的构造函数lista{1,2,3} lista(n) //声明一个n个元素的列表,每个元素都是0 lista(n, m) //声明一个n个元素的列表,每个元素都是m lista(first, last) //声明一个列表,其元素的初始值来源于由区间所指定的序列...

2018-02-05 11:42:52 860

原创 最大子矩阵面积

参考题目 zoj 1074所需知识 求最大子串和ZOJ Problem Set - 1074 To the MaxTime Limit: 2 Seconds Memory Limit: 65536 KB ProblemGiven a two-dimensional array of positive and negative integers, a s...

2018-02-04 22:55:57 933

原创 最大子段和

hdu1003 思路从第一个点开始往右延,到了第i个点的时候,假设前面的和sum为正数,那么以i点结尾的最大段是不是就是sum+a[i],如果是负数那么就是a[i]状态转移方程为dp[i]=max(dp[i-1]+a[i],a[i]),而且这里dp[i]只对dp[i+1]有用,没后后效性,所以直接省去一维,dp变量即可,a数组同理#include&amp;lt;iostream&amp;gt;...

2018-02-04 21:41:09 436

VA_X 相关资源 内含Trial-Reset和安装程序

VA_X 相关资源 内含Trial-Reset和安装程序

2022-02-25

mnist手写数字数字集

5000个mnist手写数字数字集,4500个训练集(Xtrain,ytrain),500个测试集(Xtest,ytest)。 每个样本X有400个特征,10种答案(1~10,10表示0)

2019-12-11

空空如也

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

TA关注的人

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