求解问题时,总是做出在当前看来最好的选择。及,仅仅是某种意义上的局部最优解,而是否是全局最优需要证明
一、硕鼠的交易 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函数])
- 可以传两个或三个参数;
- 第一个参数是要排序的区间的首地址;
- 第二个参数是区间尾地址的下一地址;
- 第三个参数不写,则缺省为递增排序。