AcWing基础算法课Level-2 第六讲 贪心

区间问题
AcWing 905. 区间选点1751人打卡
AcWing 908. 最大不相交区间数量1613人打卡
AcWing 906. 区间分组1414人打卡
AcWing 907. 区间覆盖1321人打卡
Huffman树
AcWing 148. 合并果子1491人打卡
排序不等式
AcWing 913. 排队打水1399人打卡
绝对值不等式
AcWing 104. 货仓选址1448人打卡
推公式
AcWing 125. 耍杂技的牛

代码

AcWing 905. 区间选点

//题意:n个区间,选出尽可能少的点,让每个区间包含至少一个点。求点数。
//思路:考虑排序后尽可能往右放。将区间按右端点从小到大排序,在当前区间右端点放一个点并往下枚举,当下一个区间的左端点无法覆盖它时则新建一个点放在右端点。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct node{int l,r;}a[maxn];
bool cmp(node a, node b){return a.r<b.r;}
int main(){int n;  cin>>n;for(int i = 1; i <= n; i++)cin>>a[i].l>>a[i].r;sort(a+1,a+n+1,cmp);int cnt = 1, t = a[1].r;for(int i = 2; i <= n; i++){if(a[i].l>t){cnt++;t = a[i].r;}}cout<<cnt<<"\n";return 0;
}

AcWing 908. 最大不相交区间数量

//题意:n个区间,选出若干个区间,满足它们互不相交。
//思路:和上一题一模一样,考虑排序后尽可能往右放。将区间按右端点从小到大排序,首先选中第一个区间并往下枚举,当下一个区间的左端点无法覆盖它时则选择那个区间,因为此时那个区间离他是最近的。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct node{int l,r;}a[maxn];
bool cmp(node a, node b){return a.r<b.r;}
int main(){int n;  cin>>n;for(int i = 1; i <= n; i++)cin>>a[i].l>>a[i].r;sort(a+1,a+n+1,cmp);int cnt = 1, t = a[1].r;for(int i = 2; i <= n; i++){if(a[i].l>t){cnt++;t = a[i].r;}}cout<<cnt<<"\n";return 0;
}

AcWing 906. 区间分组

//题意:区间厚度的问题或教室安排问题,n个区间,若干个区间一组并满足组内互不相交,求最少分多少个组。
//思路:把所有开始和结束时间丢在一起排序,遇到开始的就+1,结束的就-1,过程中的最大值就是最少分组(厚度和占用)。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn<<1];
int main(){int n;  cin>>n;for(int i = 1; i <= n; i++){int l, r;  cin>>l>>r;a[i] = l<<1; a[i+n]=r<<1|1;//用奇偶数区分左右端点}sort(a+1,a+2*n+1);int cnt = 0, ans=-1;for(int i = 1; i <= 2*n; i++){if(a[i]%2==0)cnt++;else cnt--;ans = max(ans,cnt);}cout<<ans<<"\n";return 0;
}

AcWing 907. 区间覆盖

//题意:n个区间,求最少选出多少个区间可以覆盖目标区间[s,t]
//思路:将区间按左端点排序,选中第一个区间并往后枚举,在所有与当前区间相连的区间中,选择右端点最大的,然后重复。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct node{int l,r;}a[maxn];
bool cmp(node a, node b){return a.l<b.l;}
int main(){int s, t;  cin>>s>>t;int n;  cin>>n;for(int i = 1; i <= n; i++)cin>>a[i].l>>a[i].r;sort(a+1,a+n+1,cmp);int ans = 0, ok = 0;for(int i = 1; i <= n; i++){int j = i, r = -1e9;while(j<=n && a[j].l<=s){r = max(r,a[j].r); j++;}ans++;if(r<s){ans = -1; break;}if(r>=t){ ok = 1; break;}s = r;i = j-1;}if(ok==1)cout<<ans<<"\n";else cout<<-1<<"\n";return 0;
}

AcWing 148. 合并果子

#include<iostream>
#include<queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> >q;
int main(){int n, ans = 0;  cin>>n;for(int i = 0; i < n; i++){int a;  cin>>a;  q.push(a);}for(int i = 0; i < n-1; i++){int a = q.top(); q.pop();int b = q.top(); q.pop();ans += a+b;  q.push(a+b);}cout<<ans;return 0;
}

AcWing 913. 排队打水

//题意:1个水龙头,n个人打水,每个人需要ti时间,求最少的总等待时间。
//思路:贪心,越前面打水的后面的每个人都要等,所以让打的快的先打。
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
const int maxn = 1e5+10;
LL a[maxn];
int main(){int n;   cin>>n;for(int i = 1; i <= n; i++)cin>>a[i];sort(a+1,a+n+1);LL ans = 0, cnt = 0;for(int i = 1; i <= n; i++){ans += cnt;cnt += a[i];}cout<<ans<<"\n";return 0;
}

AcWing 104. 货仓选址

//题意:一条数轴上n个点,坐标a[i]。求放置一个点x,使得sum(x-a[i])的值最小。
//思路:设在仓库左边的所有点,到仓库的距离之和为p,右边的距离之和则为q,所求即为让p+q的值尽量小。当仓库向左移动的话,p会减少x,但是q会增加n−x,所以当为仓库中位数的时候,p+q最小。
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
const int maxn = 1e5+10;
LL a[maxn];
int main(){int n;   cin>>n;for(int i = 1; i <= n; i++)cin>>a[i];sort(a+1,a+n+1);int mid = a[n/2+1]; //中位数int ans = 0;for(int i = 1; i <= n; i++)ans += abs(a[i]-mid);cout<<ans<<"\n";return 0;
}

AcWing 125. 耍杂技的牛

//题意:n头牛,每头牛有重量wi和强壮si,对奶牛进行排序,使得每头牛的风险值(前面所有wi之和减去他的si)最大的尽可能小。
//思路:考虑交换第i头牛和i+1头牛,可以发现,当wi+si>=w[i+1]+s[i+1]时交换后更优,所以直接排序.
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
const int maxn = 5e5+10;
struct node{LL w,s;}a[maxn];
bool cmp(node a, node b){return a.w+a.s<b.w+b.s;
}
int main(){int n;   cin>>n;for(int i = 1; i <= n; i++)cin>>a[i].w>>a[i].s;sort(a+1,a+n+1,cmp);LL ans = -1e18, sum = 0;for(int i = 1; i <= n; i++){ans = max(ans,sum-a[i].s);sum += a[i].w;}cout<<ans<<"\n";return 0;
}

AcWing基础算法课Level-2 第六讲 贪心相关推荐

  1. AcWing基础算法课Level-2 第四讲 数学知识

    AcWing基础算法课Level-2 第四讲 数学知识 您将学会以下数学名词 质数,试除法,埃式筛法,线性筛,辗转相除,算术基本定理,质因数分解,欧拉函数,快速幂,费马小定理,逆元,拓展欧几里得,一次 ...

  2. AcWing基础算法课Level-2 第五讲 动态规划

    AcWing基础算法课Level-2 第五讲 动态规划 背包问题 AcWing 2. 01背包问题3018人打卡 AcWing 3. 完全背包问题2749人打卡 AcWing 4. 多重背包问题255 ...

  3. AcWing基础算法课Level-2 第二讲 数据结构

    AcWing基础算法课Level-2 第二讲 数据结构 单链表 AcWing 826. 单链表3453人打卡 双链表 AcWing 827. 双链表2865人打卡 栈 AcWing 828. 模拟栈3 ...

  4. AcWing基础算法课Level-2 第三讲 搜索与图论

    AcWing基础算法课Level-2 第三讲 搜索与图论 DFS AcWing 842. 排列数字3379人打卡 AcWing 843. n-皇后问题3071人打卡 BFS AcWing 844. 走 ...

  5. AcWing提高算法课Level-3 第六章 基础算法

    AcWing提高算法课Level-3 第六章 基础算法 位运算 AcWing 90. 64位整数乘法761人打卡 递推与递归 AcWing 95. 费解的开关520人打卡 AcWing 97. 约数之 ...

  6. AcWing进阶算法课Level-4 第六章 搜索 (模拟退火,爬山)

    AcWing进阶算法课Level-4 第六章 搜索 模拟退火 AcWing 3167. 星星还是树110人打卡 AcWing 2424. 保龄球78人打卡 AcWing 2680. 均分数据72人打卡 ...

  7. AcWing进阶算法课Level-4 第七章 基础算法

    AcWing进阶算法课Level-4 第七章 基础算法 启发式合并 AcWing 2154. 梦幻布丁73人打卡 AcWing 3189. Lomsat gelral54人打卡 manacher算法 ...

  8. AcWing提高算法课Level-3 第四章 高级数据结构

    AcWing提高算法课Level-3 第四章 高级数据结构 并查集 AcWing 1250. 格子游戏1167人打卡 AcWing 1252. 搭配购买1064人打卡 AcWing 237. 程序自动 ...

  9. (ACWing yxc基础算法课笔记) 前缀和

    我们有一个长度为n的数组. 我们的前缀和就是把这个原数组中的若干个元素进行累加计算. 这里有个重要的点就是下标一定要从1开始. 我们第一个问题就是如何去求我们的si: 我们的前i项和的求法是前i-1项 ...

最新文章

  1. 被马斯克送上天的《银河帝国》和互联网江湖 | 赠书
  2. 腾讯2020校园招聘---假期
  3. hashicorp/consul
  4. com技术内幕 代码_CFan科学院:零门槛极速抠图技术探秘
  5. 限制input 内部字数
  6. 类里面没有参缺省构造函数 的带来的问题
  7. Vue中watch的使用
  8. Java字符串equals()
  9. 大数据可视化设计需遵守什么原则
  10. div+css 背景图片的定位取图问题详解
  11. 20155302《网络对抗》Exp7 网络欺诈防范
  12. git如何移除某文件夹的版本控制
  13. Python编程:pycharm开发工具汉化步骤
  14. 2019深圳杯数学建模比赛--初步思路
  15. python风变编程是骗局吗-风变编程的Python课程怎么样?
  16. IOS 开发技能图谱——ios 开发工程师必知必会要点
  17. Python GUI教程 | Lynda教程 中文字幕
  18. 农作物病虫害AI智能监测预警系统
  19. 2022第三届全国大学生网络安全精英赛练习题(全部试题)
  20. 在政策的加持下,助力服装纺织企业发展

热门文章

  1. 使用 install.packages() 安装所需的包
  2. 趣学 C 语言(十三)—— 标准输入输出重定向
  3. 【剑指 offer】(48)—— 不能被继承的类
  4. C++11/14::右值引用
  5. python excel操作xlwt_关于python操作excel,xlwt,xlwd,最简单的操作介绍
  6. python就业前景不好_python哪个方向容易就业
  7. php screw.so扩展下载,CentOS下安装php加解密工具php
  8. s2结业项目营业网点查询_论文发表完成科研项目的材料
  9. python装饰器详解-Python装饰器基础详解
  10. python常用代码总结-python个人总结