贪心算法
贪心问题
jpphy0
算法是存在的
展开
-
HDU 6034 Balala Power!(贪心 + 进制)
目录问题分析代码问题HDU 6034 Balala Power! - https://acm.hdu.edu.cn/showproblem.php?pid=6034分析通过进制方式比较大小任意一个字符串的首字符不能转换成 000存在多次进位的可能,例如:n个等长的字符串且首字相同,以下3处代码与此有关const int N = 100010;for(int j = N; j > N-mxlen-6; --j){for(int i = N - mxlen - 6; i <原创 2021-08-03 19:20:22 · 79 阅读 · 0 评论 -
hdu 2454 Degree Sequence of Graph G(Havel-Hakimi算法)
Degree Sequence of Graph G分析度序列:若把图 G 所有顶点的度数排成一个序列 d,则称 d 为图 G 的度序列简单图:无平行边、无自环(ring)【定义】可图化:给定一个非负整数序列d={d1,d2,…dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化;可简单图化:给定的度序列可图化后,若得到的图可以是简单图,则称此序列可简单图化;可图化判定: (d1+d2+…+dn)%2 = 0。 构造方法:简单地把奇数度的点配对,其它自环;可简单图化判定原创 2021-03-31 18:11:14 · 500 阅读 · 0 评论 -
hdu 3183 A Magic Lamp(贪心 + 数组 或 【单调】队列)
A Magic Lamp分析当存在逆序时,删除逆序中大数无逆序时,依次删除大数(大数应位于右侧)#include <bits/stdc++.h>using namespace std;#define MXN 1010int n, vis[MXN]; char num[MXN];int main(){ while(memset(num, 0, sizeof num), scanf("%s %d", num, &n) == 2){ memse原创 2021-03-30 09:14:46 · 260 阅读 · 0 评论 -
hdu 2037 今年暑假不AC 贪心)
今年暑假不AC分析若有a、b两种方案,都观看了n个节目,但a方案的结束时间比b方案早,则a方案优于b方案。理由:在n个节目后,a可能比b都看节目,至少不会比b方案少。当n=1时,……当n=2时,…………代码#include <bits/stdc++.h>using namespace std;#define MXN 110int n, ans; struct sGame{int s, e;} g[MXN];int main(){ int tmp; whil原创 2021-03-29 20:50:28 · 142 阅读 · 0 评论 -
hdu 1050 Moving Tables(贪心)
Moving Tables分析寻找走廊的瓶颈,即走廊的哪一段使用次数最多代码#include <bits/stdc++.h>using namespace std;#define MXN 210// r[]房号对应的走廊编号,c[]计数int n, r[MXN<<1], c[MXN]; int main(){ int T, n, s, t; scanf("%d", &T); for(int i = 1; i <= 200; i+原创 2021-03-29 20:12:01 · 182 阅读 · 0 评论 -
hdu 1052 Tian Ji -- The Horse Racing
Tian Ji – The Horse Racing分析一、当田忌有必赢的马,则消耗国王最优的马;二、当田忌有必输的马,则消耗国王最优的马;三、当国王有必输的马,则田忌用最慢马赢(代价最小);四、当国王有必赢的马,则田忌用最慢马输(保留最大实力);五、当双方都无必输、必赢的马时,即最快与最快、最慢与最慢都一致时,田忌用最慢马消耗国王最快马是最优的。证明:1、若存在国王的马赢田忌的马,则田忌应用最慢的马;而且这最慢马输时,应消耗国王的最快马;2、若不存在国王的马赢田忌的马,即田忌的马要么赢、要原创 2021-03-29 16:58:59 · 156 阅读 · 0 评论 -
hdu 1009 FatMouse‘ Trade(贪心)
FatMouse’ Trade#include <bits/stdc++.h>using namespace std;#define MXN 1010int m, n;double ans, m2;struct sRoom{ int f, j; double jf;} r[MXN];int main(){ while(scanf("%d %d", &m, &n)){ if(m == -1 && n == -1原创 2021-03-29 10:56:52 · 130 阅读 · 0 评论