B站学习记:贪心与博弈

贪心

1.

poj2287

N匹马的田忌赛马问题

稳稳地赢。

寻找最优的方案。

更优的收益。

有时候,局部最优导致全局最优。

马的能力值。

使得让我赢的局数最多。

对于对方的任何一匹马,如果我的马能打败它,那么我就要用能打败它的马里面能力值最小的马去迎战,如果我的马不能打败它,那么我就用剩下的所有马中能力

最小的马去迎战。这个思路是很贪心的。

贪心不是一板一眼的算法,更是一种思路。

  

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int a[1010],b[1010]; //田忌和齐王的马速序列
int main()
{
//#ifdef CDZSC_June
//freopen("in.txt","r",stdin);
//#endif
//std::ios::sync_with_stdio(false);
int n;
while(scanf("%d",&n),n) //输入田忌和齐王马的匹数
{
for(int i=1;i<=n;i++) scanf("%d",&a[i]); //输入田忌 n 匹马的速度
for(int i=1;i<=n;i++) scanf("%d",&b[i]); //输入齐王 n 匹马的速度
sort(a+1,a+1+n); //按照马速递增顺序排列田忌的 n 匹马
sort(b+1,b+1+n); //按照马速递增顺序排列齐王的 n 匹马

int tl=1,tr=n,ql=1,qr=n; //A 序列的首尾指针和 B 序列的首尾指针初始化
int sum=0; //田忌赢得的银币数初始化
while(tl<=tr) //若比赛未进行完
{
if(a[tl]<b[ql]) //若田忌最慢的马慢于齐王最慢的马,则田忌最慢的马与齐王最快的马比,输一场
{
qr--;
tl++;
sum-=200;
}

else if(a[tl]==b[ql]) //若田忌最慢的马与齐王最慢的马速度相同
{
while(tl<=tr && ql<=qr) //循环,直至田忌或齐王的马序列空为止
{
if(a[tr]>b[qr]) //若田忌最快的马快于齐王最快马,则田忌最快的马与齐王最快的马比,赢一场
{
sum+=200;
tr--;
qr--;
}
else //否则若田忌最慢的马慢于齐王最快马,则田忌最慢的马与齐王最快的马比,输一场,退出 while
{
if(a[tl]<b[qr]) sum-=200;
tl++;qr--;break;
}
}
}

else //若田忌最慢的马快于齐王最慢的马,则田忌最慢的马与齐王最慢的马比,赢一场
{
tl++;
ql++;
sum+=200;
}
}
printf("%d\n",sum);
}
return 0;
}

2.

括号序列配对问题。

把一个问题的本质看透。

缺x个左括号的只能和缺x个右括号的去配对连接。只有这样它才一定生成合法的括号序列。

3.

RGB序列问题。

Red,Green,Blue.

可以从动态规划的方法来解决问题哦!

我们用贪心算法不是盲目贪心的哦!我们的贪心是能得到最优解的。有时候盲目去贪的话,还真让你贪对了。

贪心算法的理论证明是非常晦涩难懂的!

怎么贪也是一种学问哦!

博弈(game):

游戏就是对战!

在五子棋中,执黑先行,先手必胜。

1.

石子博弈。

谁先没得取谁就输了。

先手,后手。

枚举-----》》推出结论

我们可以先模拟一下哦。

先手必败的情形:n是3的倍数!

必胜态&&必败态。

必胜态的话是存在一个操作将必胜态转移到必败态的;必败态则是任何操作都只能从必败态转移到必胜态!

2.

取数博弈。

一直都是假设两个人都能做出最明智的决策。

先考虑必败态:只要所有

后手通过模仿先手的决策败先手之!

再考虑必胜态!

实现从必胜态到必败态的一种转移。

当然,博弈有很多有趣的问题!

谢谢a兵长老师的讲解!

原文地址:https://www.cnblogs.com/dragondragon/p/11374420.html

时间: 2024-10-09 02:12:34

B站学习记:贪心与博弈的相关文章

Drupal 7 建站学习手记(五):HTML文档流overflow的问题

背景 项目要求网站首页放Views生成的区块,并且要求有更多链接. Views生成的区块默认的更多链接只能选在列表上方和下方 下图是默认在上方的样式图: 为了美观,我将更多链接上移了若干个像素: .more-link { position: absolute; top: 10px; left: 390px; } 效果图: 问题 然而,当我在这个区块外面再套一层区块时, (比如我这里用了QuickTabs模块,实际上是一个嵌套区块) 这个更多链接怎么都不显示了: 探究 第一反应是z-index的问

Drupal 7 建站学习手记(四):修改Nivo Slider模块的宽高

背景 Nivo Slider模块默认大小是用的height: 100%, width 100%, 但IE7及以下的浏览器是不支持百分比宽高的, 而我的项目目标用户基本都是使用XP系统,项目需求是必须兼容IE7. 因此需要对其CSS修改成绝对像素大小. 问题 修改之后却出现了问题,因为用户上传的图片长宽比是不一样的, 指望用户每次上传的时候先用PS裁剪一下明显不现实, 于是我在CSS里将其拉伸了,这样就不会导致图片只显示一部分. .block-nivo-slider img { width: 45

Alex Fung魔方转法学习记

我学了Alex Fung魔方转法,这是一种精确的数学法,且是一种思路,一个系统解决方案,一种原理,不用死记硬背公式. 这是一篇学习记,所有用到的算法必须去原文查看具体的数学公式和Java Applet的演示.因为我还不会编程演示,所以本文不self-contained,而像是一个数学课抄录的笔记,只是记录我的学习过程. 首先,请拿纸和笔——数学公式必须自己写一遍,自己推导一遍,使得自己看到那些符号,心里不发怵,所以写只是为了变得信任眼熟亲切记得. 魔方基础的令人讨厌气噎眼花缭乱终于整个头脑都拧巴

python脚本处理下载的b站学习视频

作为常年在b站学习的我,一直以来看到有兴趣的视频,从来都是点赞收藏下载三连,但是苦于我那小钢炮iphone se屏幕大小有限,看起视频实在费劲,决定一定要找个下载电脑上下载b站视频的方法,以前用过硕鼠,可惜速度不行,批量解析也会出些问题,就没用了,后来也用过一些其他小工具,效果都不咋样,今天真是发现神器了,还支持迅雷下载,速度6M多美妙,真是美滋滋?? 下面重磅教程来袭: 一.找到视频的播放地址,如“七周成为数据分析师”,此视频地址为:https://www.bilibili.com/video

经典算法学习之贪心算法

贪心算法也是用来求解最优化问题的,相比较动态规划很多问题使用贪心算法更为简单和高效,但是并不是所有的最优化问题都可以使用贪心算法来解决. 贪心算法就是在每个决策点都做出在当时看来最佳的选择. 贪心算法的设计步骤: 1.将最优化问题转换为:对其做出一次选择之后,只剩下一个问题需要求解的形式(动态规划会留下多个问题需要求解) 2.证明做出贪心选择之后,原问题总是存在最优解,即贪心算法总是安全的 3.证明做出贪心选择后,剩余的子问题满足性质:其最优解与贪心选择组合即可得到原问题的最优解,这样就得到了最

软工学习记1

这学期,我们分了方向,专业方向.也许向老师说的那样学习好的选了计科,我大概属于学习差的吧.高中的紧绷让我到了大学不知道该干嘛了,荒废了整个大一,到现在还不知道自己读了大学学会了干什么.现在我要追赶了,毕竟差的不是一点半点.分了方向,有了任务,也大概自导自己该干嘛了.开始感觉还是挺无从下手的,不过信心还是有的.也算亡羊补牢吧. 这俩星期自己抽空看了看这本构建之法.粗略明白了点要想开发一个堪称完美的软件是十分困难的.需要大量人力时间.软件等于程序加软件工程,软件开发的阶段不同,我们所需要的标准花费的

ftk学习记(icon篇)

[声明:版权全部,欢迎转载.请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在開始今天的文章之前.我们还是先看一下上一节的效果图. 大家能够參照上一节的解说,是不是存在这种button,是不是存在这种wait_box控件,相同是不是能够看到wait_box活动的情形.当然,有条件的朋友最好自己编译一下这个demo代码.按步骤调试每一行代码. 今天,如标题所看到的.我们所学习的是icon的内容.简单一点说,此次基本的目的就是想在窗体上显示icon图像的内容. 至于怎样显

ftk学习记(label篇)【转】

转自:http://blog.csdn.net/feixiaoxing/article/details/25000093 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文.之前曾经答应过大家,让大家看一下最简单的ftk程序是怎么运行的.所以,这里我们上传一下图片. 因为还是编辑模式,所以暂时还不能看到图片在网页中是怎么显示的.不过没有关系,这次只是做一个最初的尝试

老菜鸟MVC学习记

大学毕业已三年,菜鸟称谓依然.毕业前使用过六个月的MVC,但是自从毕业后因为公司一直在用webForm,所以MVC就没有再用过.直到最近打算用MVC做一个项目管理系统,才发现MVC已经变得陌生了,只有再从新学起.为了防止自己的拖延症拖延自己的学习计划,特在博客园写此文.学习期间,所有的感悟和整理的可以提高开发速度的代码都要粘出来,一是方便今后随时取用,二是方便所有像我一样的菜鸟,可以少走弯路.