训练经验总结

 

  走过的路偶尔回头看看也是好的,这一个暑假训练真的说是感觉枯燥,最开始刷题真的会刷草鸡的。。。。。。不过这个枯燥的过程不就被众人称之为努力么。 哈哈哈

  刚刚写了一大串没有保存下来,网页未响应全部没了。。这个难受。

  再说这个暑假的训练吧,最开始刷的是Euler的题,这个网站上的题确实好,非常锻炼数学思维,这个系列的题目也是一个由易而难的过程,最开始的时候一天十个。。。啥?这么简单。。可到后面一上午出一个。。。

        记得有一道题说的是给你一个N*N的方格,让你求从左上角走到右下角的路线数目。比如2*2的时候就是一田字格,这时有六种。1*1的时候当然只有两种啦。最先想到的就是斐波那契数列。试试水吧那就,WA。。那咋搞??(这里先不说正确的数学解法) 那我就在画路线,左画右画咋看咋想一棵树,最后画着画着真的能画出正确结果,接着往下画下一个,是想画法真的有无数,那应该怎么画?肯定有一定的规则,具体那种解法我不记得了,这里也不详说。换个思路,该题最正规的数学解法就是一组合数学。为啥呢?你想啊,你从左上角走到右下角,要不往右要不往下。还是一个2*2的田字格,不就一共走四步,两步往下两步往右,哇很简单的。C42,这不就是四步选两步吗。正正好的6步。这么简单为什么想不到呢?

  问题转化的能力,上面说的例子就是在强调需要有思考问题转化问题的习惯,突然又想到前几天的练习赛,C.E题没人出,老师说看CE,结果半天还是没几个人出,那么问题来了,这两道题到底多难呢?  

  

  且听我娓娓道来,E题说的是奶牛在牛槽挤奶,在某个时间段内,有X头牛,在1-M时间段,每头牛有自己喜欢的时间,两头牛不能在同一时间同一个槽里。求最少需要几个槽。

      妈呀,这咋整?一看,贪心! 然后呢你咋实现?再一想,背包? 时间当作容量????不科学不科学,恩,然后想到求时间重叠的最大数不就行了么,要说是这样的话,问题就很简单了。但是人家出题人不想你用这种方法水题,他就加大时间,让你让你TLE(超时),那这到底是啥,还不是背包。比赛时候就一直很愁啊。  然后比完赛,鹏哥说,CE两题咋都没人出,很明显两道水题。  啊啥?喵喵喵?E题什么思路? 一个优先队列啊。   我的个乖乖,可不真是。 学了那么些数据结构不知道往上用。。。   

  

    这就说要会灵活变通啊!知识是死的人是活的,老话都念烂了。ACM难在哪?有啥难。题目在怎么出不是解的?我能想到的最难的题目不过是几种算法相交外加上个数据结构,不过这种题别说我没见过更没听过,出这种题会不会被骂死啊哈哈哈。但是我要说的是,问题都不难,你要会剖析问题。每个局部实现最优不就是整体最优嘛!什么,你不信?别急,听我给你吹。

  为啥说要会剖析问题,因为它有用啊。再举个题,*  *  *  *  *  *  *  *  *

                           A     A

                                                  A

S     *  *  *  *

                         A A A        

功力有限就画这样了,你从S开始走,你可以在任何时候任何地点分裂,分裂体走的步数也要计入,求走完所有的A最少需要几步。你看看吧,你要是想一股脑想模拟的话。。

嘿嘿,不存在的,模拟DFS你解不出来,那你肯定会接着想这是什么算法呀?搞半天没用。所以你要剖析问题!!!   说一下,你要求的不就是步数吗,或者说是距离。这题就是一BFS预处理+ 最小生成树。咋的,你仔细想想是不是这么回事。S到任意A的距离你在图上连线,那么你连出结果的那一种连法的时候。很明显的最小生成树!但是你不知道距离啊,不怕,来一个BFS求距离。好了问题解决了。

  好了你仔细想想这个套路是不是很有用呢,步步高打火机,哪里不会点哪里。一旦剖析了问题,难度就会大大下降。还有思路要广,不一定哪一种方法就能解出来,个人崇尚暴力大法。什么题不能暴力做呢啊哈哈哈,不过暴力也要暴力的优雅有套路。那就是剪枝,无脑暴力那是傻。

  发现了一个小小的小窍门,每个题都会用到两个以上的知识点(或是算法或是数据结构),那种单一的题目没 意 思。

  以上是我总结的解题方法,一套思路。可能有的地方还没想起要说什么。

  千篇一律的想、看,不如你书写一遍,比如你开始接触树状数组,哇,这个东西一开始接触是真的难想,直接自己编一组数据输出很容易看清它的结构。说起来也真的很佩服发明这个数据结构的人,把一个一维的数组变成了一棵树。很有趣,现在想一想,一个一维的数组好像是一条线,树状数组则是像梯田形状的一条线。那么,以后会不会有人将这条线弯成圈呢?或许像蚊香那样。

  反正明白了知识点不还是要做题吗。

   DP专题感觉很有意思,嘿总结状态方程啊。至于DFS啊哈哈 上下左右移动啊,有时候再加个判重。 BFS才是大BOSS,为啥这么说,BFS可以单独出题,双向BFS,尤其数据大的时候要往这里想,另外BFS也可以作为一种工具,常用在图论预处理。

    组合数学也很有意思,怎么说呢,前几天做了一道组合数学的题目,哈哈很遗憾当时没出,自己写了一遍理所当然的TLE,后来看了题解知道了那道题和我的思路完全一样。。。。。。。好气啊,不过那人用了组合数打表。。。。

   等一下忽然想起离散化,离散化在我看来就是我说的剖析问题。嘻嘻,关于离散化下面这篇文章说的就很好

                    Matrix67原创  Trackback: http://www.matrix67.com/blog/archives/108

举同样的例子UVA1073题:

  题目意思很简单,给定平面上n个点的坐标,求能够覆盖所有这些点的最小矩形面积。这个问题难就难在,这个矩形可以倾斜放置(边不必平行于坐标轴)。
      
    这里的倾斜放置很不好处理,因为我们不知道这个矩形最终会倾斜多少度。假设我们知道这个矩形的倾角是α,那么答案就很简单了:矩形面积最小时四条边一定都挨着某个点。也就是说,四条边的斜率已经都知道了的话,只需要让这些边从外面不断逼近这个点集直到碰到了某个点。你不必知道这个具体应该怎么实现,只需要理解这可以通过某种方法计算出来,毕竟我们的重点在下面的过程。
      我们的算法很显然了:枚举矩形的倾角,对于每一个倾角,我们都能计算出最小的矩形面积,最后取一个最小值。
    这个算法是否是正确的呢?我们不能说它是否正确,因为它根本不可能实现。矩形的倾角是一个实数,它有无数种可能,你永远不可能枚举每一种情况。我们说,矩形的倾角是一个“连续的”变量,它是我们无法枚举这个倾角的根本原因。我们需要一种方法,把这个“连续的”变量变成一个一个的值,变成一个“离散的”变量。这个过程也就是所谓的离散化。
    我们可以证明,最小面积的矩形不但要求四条边上都有一个点,而且还要求至少一条边上有两个或两个以上的点。试想,如果每条边上都只有一个点,则我们总可以把这个矩形旋转一点使得这个矩形变“松”,从而有余地得到更小的矩形。于是我们发现,矩形的某条边的斜率必然与某两点的连线相同。如果我们计算出了所有过两点的直线的倾角,那么α的取值只有可能是这些倾角或它减去90度后的角(直线按“”方向倾斜时)这么C(n,2)种。我们说,这个“倾角”已经被我们 “离散化”了。

  

   解题先读题

   转化题目找算法

   对算法的优化和对数据的处理

解题就是这么一个过程。我的感受是做什么事情都是在理解,理解的好做起来也会好得多啊。膜拜大牛们。

时间: 2024-10-13 20:40:57

训练经验总结的相关文章

【健康】能量系统与训练应用和心肺耐力与运动表现

能量系统与训练应用和心肺耐力与运动表现 1.目的 2.简介 3.结论 4.参考数据 学习指引 建议用50分钟时间阅读文章. 阅读文章後,用10分钟时间回答问题. 注意:整个过程大约需要1个小时 目的 阅读完文章后,你应该知道: .三种能量系统的特点 . 什么是乳酸阈值,如何利用乳酸阈值给会员设计锻炼计划 .心肺耐力训练的种类和原理 简介 作为一个专业的私人教练,学会科学的利用人体的能量系统和心肺耐力训练原则帮助客人去提高身体素质及达到训练目标是非常重要的.而传统的心肺训练方案都忽略了乳酸阈值的应

DRL 教程 | 如何保持运动小车上的旗杆屹立不倒?TensorFlow利用A3C算法训练智能体玩CartPole游戏

本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advantage Actor Critic,A3C)算法的智能体,通过 A3C 的实现解决了 CartPole 游戏问题,过程中使用了贪婪执行.模型子类和自定义训练循环. 该过程围绕以下概念运行: 贪婪执行--贪婪执行是一个必要的.由运行定义的接口,此处的运算一旦从 Python 调用,就要立刻执行.这使得

darknet优化经验

目录 darknet优化经验 1. AlexeyAB改进项 2. Linux下编译选项 3. 训练经验 4. 提升检测效果 5. 总结 darknet优化经验 主要来自于:AlexeyAB 版本darknet 1. AlexeyAB改进项 提供window支持 相较于原版pjreddie版本darknet提升了训练速度 添加了二值化网络,XNOR(bit) ,速度快,准确率稍低https://github.com/AlexeyAB/darknet/blob/master/cfg/yolov3-t

机器学习 之 算法介绍

什么是程序(Program) 计算机程序,是指为了得到某种结果而可以由计算机(等具有信息处理能力的装置)执行的代码化指令序列(或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列). 通俗讲,计算机给人干活,但它不是人,甚至不如狗懂人的需要(<小羊肖恩>里的狗是多么聪明可爱又忠诚于主人).那怎么让它干活呢,那就需要程序员用某种编程语言来写程序,编程语言就是计算机能理解的语言,计算机可以执行这些程序(指令),最终完成任务.下边的C++程序是完成n的阶乘: int n = std:

《机器学习》读书笔记-第一章 引言

<Machine Learning>,作者Tom Mitchell,卡内基梅隆大学. 第一章 引言 1.1 学习问题的标准描述: 机器学习的定义: 如果一个计算机程序针对某类任务T的用P衡量的性能根据经验E来自我完善, 那么我们称这个计算机程序在从E中学习,针对某类任务T,它的性能用P来衡量. 例子: 对于学习下西洋跳棋的计算机程序,它可以通过和自己下棋获取经验: 它的任务是参与西洋跳棋对弈: 它的性能用它赢棋的能力来衡量. 学习问题的三个特征: 任务的种类, 衡量性能提高的标准, 经验的来源

Coursera公开课机器学习:Introduction

机器学习的定义 Arthur Samuel (1959). Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed. Tom Mitchell (1998) Well-posed Learning Problem: A computer program is said to learnfrom experience E with r

《机器学习》

一.训练方式: 1.选取训练经验的类型 2.学习器可以在多大程度上控制训练样例序列 3.训练样例的分布能多好地表示实例分布 大多机器学习理论基于训练样例与测试样例分布一致这一前提. 二.目标函数: 经常希望学习算法仅得到目标函数的某个近似,由于这个原因,学习目标函数的过程常被称为函数逼近. 希望选取非常有表征力的描述,而越有表征力的描述需要的训练数据就越多. 训练值估计法则: 基于后继估计的迭代估计训练可近乎完美地收敛到训练估计值. 权值调整: 常用方法是使训练值和预测值的值间误差平方和E最小.

机器学习--基本问题定义,任务确定和概念理解

机器学习从本质上是一个多学科的领域.它吸取了人工智能.概率统计.计算复杂性理论.控制论.信息论.哲学.生理学.神经生物学等学科的成功.机器学习,是计算机程序通过经验来提高某任务处理性能的行为. 更准确的定义: 定义:如果一个计算机程序针对某类任务T的用P衡量的性能根据经验E来自我完善.那么我们称这个计算机程序在从经验E中学习,针对某类任务T,它的性能用P来衡量. 通常,为了很好的定义一个学习问题,我们最后明确三个特征: 任务的种类,衡量任务提高的标准,经验的来源. 例如: 手写识别学习问题: 任

1.机器学习初体验

机器学习: 研究的是计算机怎么模拟人类的学习行为,以获取新的知识和技能, 并重新组织已有的知识结构使之不断改善自身. 简单一点说:就是计算机从数据(样本,实例)和一定的学习算法中学习出 规律和模式,以应用在新数据上做预测的任务 今日头条:用机器学习挖掘个体用户感兴趣的新闻 表情检测 alphaGo 人机大战 学习 = 在某项任务上总结与积攒经验 1.在任务T上提升 2.用P作为评估标准 3.基于经验E 例子:中国象棋 1.任务T:下中国象棋 2.性能目标P:比赛中击败对手(的百分比) 3.训练经