精华内容
下载资源
问答
  • 走过某个格子时,如果那个格子中的宝贝价值小明中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。 当小明走到出口时,如果他中的宝贝恰好是 k 件,则这些宝贝就可以送给小明。 请你帮小明算一算,...

    地宫取宝

    X 国王有一个地宫宝库,是 n×m 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。

    地宫的入口在左上角,出口在右下角。

    小明被带到地宫的入口,国王要求他只能向右或向下行走。

    走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。

    当小明走到出口时,如果他手中的宝贝恰好是 k 件,则这些宝贝就可以送给小明。

    请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 k 件宝贝。

    输入格式
    第一行 3 个整数,n,m,k,含义见题目描述。

    接下来 n 行,每行有 m 个整数 Ci 用来描述宝库矩阵每个格子的宝贝价值。

    输出格式
    输出一个整数,表示正好取 k 个宝贝的行动方案数。

    该数字可能很大,输出它对 1000000007 取模的结果。

    数据范围
    1≤n,m≤50,
    1≤k≤12,
    0≤Ci≤12

    输入样例1:

    2 2 2
    1 2
    2 1
    

    输出样例1:

    2
    

    输入样例2:

    2 3 2
    1 2 3
    2 1 5
    

    输出样例2:

    14
    

    参考这篇文章
    分析:
    动态规划:
    状态表示: dp[i][j][cnt][mx]:从(i,j)位置出发,现有物品数量为cnt,现有物品的最大价值为mx时的方案数。
    状态计算: 在(i,j)这个点,存在两种选择方式:
    ①.a[i][j]<mx:(i,j)点的物品价值小于现在已有物品的最大价值,肯定不能拿,此时,方案数量为:不选这个位置的物品向右走的方案数加上向下走的方案数:

    dp[i][j][cnt][mx] = dp[i][j+1][cnt][mx] + dp[i+1][j][cnt][mx];
    

    ②.a[i][j]>mx:该位置的物品价值大于现有物品的最大价值,可以选择拿或者不拿,此时方案数为:选这个位置的物品向下走和向右走的和不选这个位置的物品向下或者向右走的方案数:

    dp[i][j][t][mx] = dp[i][j + 1][t + 1][a[i][j]] +  //选这个位置的物品向右走和向下走的方案数
    				  dp[i + 1][j][t + 1][a[i][j]] +   
    			  	  dp[i][j + 1][t][mx] +  //不选这个位置的物品向右或向下走的方案数
    			      dp[i + 1][j][t][mx]
    

    边界条件: 在(n,m)终点位置,如果已经拿够了k个物品,不管现有物品的最大价值是多少,最终都只有1个方案(不选这个位置的物品,因为已经选够了)。

    dp[n][m][k][i] = 1; // i = [0,13]
    

    且如果在终点时选了 k-1 个物品且刚好终点位置的物品可以选,则也只有1种方案(选这个位置的):

    dp[n][m][k - 1][i] = 1
    

    注意: 本题存在物品价值为0的情况,所以在起始状态什么都没拿的时候将现有最大价值表示为-1,但是在数组中不存在-1的情况,所以统一将所有物品的价值都+1。

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int N = 55;
    const int mod = 1e9 + 7;
    int a[N][N];
    long long dp[N][N][15][15];
    int n, m, k;
    int main()
    {
    	cin >> n >> m >> k;
    	for (int i = 1;i <= n;i++)
    		for (int j = 1;j <= m;j++)
    		{
    			cin >> a[i][j];
    			a[i][j]++;
    		}
    	for (int i = 1;i <= 13;i++)
    	{
    		dp[n][m][k][i] = 1;
    		if (a[n][m] > i) dp[n][m][k - 1][i] = 1;
    	}
    	for (int i = n;i >=0 ;i--)
    	{
    		for (int j = m;j>=0;j--)
    		{
    			for (int t = k;t >= 0;t--)
    			{
    				for (int mx = 13;mx >= 0;mx--)
    				{
    					if (i == n && j == m && (t == k || t == k - 1)) continue;
    					if (a[i][j] > mx)
    					{
    						dp[i][j][t][mx] = (dp[i][j + 1][t + 1][a[i][j]] +
    							dp[i + 1][j][t + 1][a[i][j]] +
    							dp[i][j + 1][t][mx] +
    							dp[i + 1][j][t][mx]) % mod;
    					}
    					else dp[i][j][t][mx] = (dp[i][j + 1][t][mx] +
    						dp[i + 1][j][t][mx]) % mod;
    				}
    			}
    		}
    		}
    	cout << dp[1][1][0][0] << endl;
    	
    	return 0;
    }
    
    展开全文
  • 特征选择有三个算法:ID3 C4.5 CART 分别使用的是:最大信息增益 最大信息增益 最小Gini系数(分类)或 平方误差最小化 准则 [(CART)算法课分别对回归和分类问题构建二叉决策树,分别是应用误差最小化准则 和 ...

    申明:本文的公式均来自《统计学习方法》电子版截图(太懒没手敲。。。)

    1.首先选择特征以开展(生成)决策树

    特征选择有三个算法:ID3 C4.5 CART 分别使用的是:最大信息增益 最大信息增益比 最小Gini系数(分类)或 平方误差最小化(回归) 准则

    [(CART)算法可分别对回归和分类问题构建二叉决策树,分别是应用误差最小化准则 和 最小Gini系数准则  ]其实Gini系数的计算及含义与信息熵很相似。

    2.三大算法的公式:

    ID3:信息增益


    经验熵(对“纯度”的度量),越小越纯。决策树分到后面,是希望叶结点越来越纯的。

    k为总的类别个数,Ck为类别k的样本个数。

    Di的i,指特征A的可取值情况。即在A特征下,Di 是 A的不同取值情况下包含的样本数量。Dik表示,特征A取i值,且对应样本中属于k类别的样本个数。

    信息增益比较倾向分支很多的特征(即该特征的可取值很多),故又提出了信息增益比的概念。


    C4.5: 信息增益比:(信息增益比比较偏好特征分支少的特征,所以,C4.5算法先找到信息增益高于平均增益值的特征们,再选择其中增益比最大的那个特征,作为最优分类特征。)(来自西瓜书的补充。)




    CART算法,(只介绍分类问题的Gini系数)


    选择好最佳特征后,就开始利用训练数据迭代的往下生成决策树,直到数据被分类完全。


    3.决策树剪枝

    因为在生成决策树的时候,利用训练数据严格的一步步生成输的分枝,使得数会过于复杂或者说对训练数据过拟合了,所以为了使输对待测数据也有较好的分类效果,需要在树的数据拟合程度和树的复杂度之间做好平衡,对树进行剪枝。

    这句话要好好理解下。


    t是树的叶结点,Nt为该点下样本的个数。

    ITI为树含有的总 叶结点 个数。




    以下要介绍的剪枝算法是:不断的迭代一个个值,得到该值下的最佳树,然后就得到最佳树集合(序列)。再利用独立的验证数据,通过交叉验证,得到序列中的最佳,也即最终的修剪后的决策树。


     CART 剪枝:(后剪枝,西瓜书有介绍预剪枝,但是那样容易欠拟合)






    公式(5.29)我是这样理解的:

    当afa趋于无穷,根结点组成的单结点树最优,则小于 ,所以相反,当afa趋于0,(5.29)成立。



    这里是关键,不断修改afa的区间,一个区间内得到一个最佳树,这样就产生最佳树序列。


    算法流程:




    在验证集上进行交叉验证,注意是验证集!!!

    西瓜书里的后剪枝和这里不太一致,他是从下往上依次对“小树分枝”进行是否剪枝的判断,判断准则就是修剪前后是否能在验证集上提高分类准确率。

    把一个“小树分枝”剪掉的话,它得到的那个叶结点的类别是:原先这个“小树分枝”对应的训练集的类别,举个栗子:


    具体见西瓜书P82。



    以上就是决策树的内容,主要是特征选择的三大算法,然后迭代往下生成决策树,然后为了减轻过拟合问题对树进行算法修剪。

    写得很粗糙,有了新理解会再来补充,欢迎大家指正!



























    展开全文
  • 因为 defaultProps 中定义了的字段默认是有含义的࿰c;因此不会对其进行操作࿰c;避免多次定义产生的风险。 现在 fit-input 就将 props 透传到了原生 Input 组件上࿰c;因此虽然我没有处理各类事件࿰c;...
  • 就是快速点击要按的久一点࿰c;就会触发pressin事件 3. 如果同时绑定了pressIn, pressOut和press事件࿰c;那么当pressIn事件触发之后࿰c;如果用户的手指在绑定的组件中释放࿰c;那么接着会连续触发...
  • Mcafee8.5i教程

    2011-04-05 07:29:52
    写给准备用mcafee8.5i企业版的朋友 mcafee是最受公认的监控最灵敏的防病毒软件 但是真正的精髓部分应该是它的文件访问保护部分(以及端口阻挡,...没有技术含量,只为我更菜的人能读懂。只发卡饭,其它坛子不发了。
  • 会计理论考试题

    2012-03-07 21:04:40
    C、其运行速度远机器语言编写的程序要快 D、需要转换成机器语言后,计算机中的CPU才能执行 3.计算机病毒是一种对计算机系统具有破坏性的 ___D___ 。 A、高级语言编译程序 B、生物病毒 C、操作系统 D、计算机程序 4...
  • 1. 写出下列机床型号中各字母和数字的含义(参阅教材附录): CA6140 CG6125B CM1107 CW6163 C1312 L5120 MB1632 M1432A M7350 T4163A XK5040 X6132 Y3150E Y5132 Z3040 写出下列通用机床类代号的含义C Y L Z S D ...
  • nice n【知道,源自name名字,取个名字,就是为了让人知道】,i【点】,c【像-抓】,e【看】 →看起来,每一个小点、细节都能抓住、都知道:精细的→做得好的→友好的→ 美好的,令人愉快的 《经过历史的发展,这...
  • 大智慧股票本地数据读取接口(含源码)

    千次下载 热门讨论 2009-03-22 13:45:51
    字段名 含义 类型 备注 dm 代码 char jc 简称 char ◎行情数据(cnfqhq)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date kp 开盘 num zg 最高 num zd 最低 num sp 收盘 ...
  • java基础入门教程

    热门讨论 2009-04-29 21:36:10
    微 软 总 裁 尔 ·盖 茨 在 悄 悄 地 观 察了 一 段 时 间 后 ,不 无感 慨 地 说 :"Java是 长 时 间 以 来 最 卓 越 的 程序 设 计 语 言 ",并确 定 微软 整 个 软 件 开 发 的 战 略 从 PC 单 机 时 代 向 着 以...
  • php高级开发教程说明

    2008-11-27 11:39:22
    在阅读的时候,为了理解文章的含义,你的大脑必须分析从你的眼睛里获得的信息,识别 出重要的部分,然后把这些部分译成正确的代码。这个分析过程分两步执行:形式分析和逻辑 分析。首先通过检查文章的可视结构来执行...
  • adb install 后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下: 参数 含义 -l 将应用安装到保护目录 /mnt/asec -r 允许覆盖安装 -t 允许安装 AndroidManifest.xml 里 application 指定...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    A.DBWR B.LGWR C. SMON D.PMON 3. 如果要查询数据库中所有表的信息,应当使用下列哪种数据字典视图?( A ) A. DBA视图 B. ALL视图 C. USER视图 D. 动态性能视图 4. 下列哪一项是Oracle数据库中最小的存储分配...
  • 大家知道内存的读写速度磁盘高得多,如果将 内存作为磁盘读写的高速缓存可以有效提高系统运行效率。Smartdrv.exe这 个文件在Windows各个版本的安装光盘中或是硬盘上的Windows/command/里都 有,只有几十KB,把...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • C#微软培训资料

    2014-01-22 14:10:17
    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • 书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。读者基本不需要...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...
  • 在编译osip2.dll这一步可能会再次得到错误,内容含义是找不到链接库,所以,我们要把前面编译得到的osipparser2.lib也拷到osip工程目录下,并在VC6中操作: Project-Setting-Link中的...
  • 7.3 多版本控制读一致性的含义 229 7.3.1 一种会失败的常用数据仓库技术 229 7.3.2 解释热表上超出期望的I/O 230 7.4 写一致性 233 7.4.1 一致读和当前读 233 7.4.2 查看重启动 235 7.4.3 为什么重启动对我们...
  • 汽车驾驶教程图解

    2012-05-26 08:56:12
     c.用食指到小手拇指四个手指握住转向盘,再加上拇指轻轻握住转向盘。  2.掌握转动转向盘的要领  向右转动转向盘的手法  1)从右手开始,左手为主用力开始转。  2)以左手为主继续转动  3)左手转动转向。  4)...
  •  Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle 7.0.9版本开始就一直任职于Oracle公司,不过,其实他从5.1.5c版本就开始使用Oracle了。 在Oracle公司,Kyte专门负责Oracle数据库,他的任务是帮助使用...
  • 予人玫瑰,有余香。群内热情的18级学长学姐们纷纷发扬互帮互助、乐于分享的北邮人精神,给学弟学妹们分享了一些北邮考研的经验。希望能给学弟学妹们提供指导,少走一些弯路。 18年电子院跨考网研院803经验分享 ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

手比c含义