Java教程

算法笔记2-(贪心算法)

本文主要是介绍算法笔记2-(贪心算法),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

求解问题时,总是做出在当前看来最好的选择。及,仅仅是某种意义上的局部最优解,而是否是全局最优需要证明

一、硕鼠的交易   HDOJ 1009

  结构体数组排序法

二、田忌赛马HDOJ1052

两次贪心,先比较最大,在分析最小,然后去掉比较过的马

1、用田最快的VS齐最快的,赢则比

1.2、输则,用田最慢的VS齐最快的,输

1.3、平则,

               1.田最慢的VS齐最慢的,赢则比

               2.输或平则,用田最慢的VS齐最快的,输

 三、今年暑假不AC HDOJ 2037

事件序列包含的事件数目,称之为该事件序列的长度。

已知事件的发生时刻和结束时刻,在时间上没有重叠的情况下,找到最长的时间序列,及最多的事件数目。

找到最好的贪心思路,贪哪个部分的心

选择在不影响前面已经发生的事件的情况下,选择结束时间最早的活动

 四、搬桌子HDOJ 1050

在房间俩侧各有100个房间,中间走廊仅允许搬桌子时一次通过一个

若出现相交错的位置,则经过那个房间的次数++

走廊上下对称,则可看成同一地址

最终,经过某个房间次数最大的数就是需要使用走廊的最多次数

___________________________________________________________________

可图形判定

两个概念:
1. 度序列:若把图G所有顶点的读书排成一个序列S,则称S为图G的度序列

2. 序列是可图的:一个非负整数组成的有限序列如果是某个无向图的度序列,则称该序列是可图的。

Havel-Hakimi定理:(握手定理)

由非负整数组成的非增序列s (度序列) : d1, d2,... dn (n>=2, d1>=1)是可图的,当且仅当序列:s1:d2- 1, d3- 1,.... dd1+1- 1. dd1+2, .... dn

是可图的。序列s1中有n-1个非负整数,s序列中d1后的前d1个度数(即d2~dd1 +1)减1后构成s1中的前d1个数。
判定过程:

   1.先对所有数进行递减排序

   2.去掉第一个数,其他后面的数每个减一

   3.若最后一个结果是零则可图,若出现负数则不可简单图画

例如:3221,去掉首位3其余后三位每个减一,得110

           110,去掉首位1其余后面一位减一,得00

              0已经是0再减一还是0

         321,去掉首位3其余后三位减一,得10

         10,去掉首位1其余后一位减一,得-1      出现负数则不可简单图画

——————————————————————————————————————

sort()函数的使用---->排序

  • 头文件:#include或者使用万能头文件 #include<bits/stdc++.h>
  • 语法结构:sort(首地址,尾地址+1,[cmp函数])
  • 可以传两个或三个参数;
  • 第一个参数是要排序的区间的首地址;
  • 第二个参数是区间尾地址的下一地址;
  • 第三个参数不写,则缺省为递增排序。

这篇关于算法笔记2-(贪心算法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!