IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 22.2.7~2.8 -> 正文阅读

[数据结构与算法]22.2.7~2.8

一.算法学习

1.贪心-区间选点;

排序右端点,从左往右选右端点,

如果该区间的右端点小于下个区间的左端点,则要进行选点,选下个区间的右端点;

如果该区间的右端点大于下个区间的左端点,不用选点,比较下下个区间,同理类推;

#include<bits/stdc++.h>
#define rep1(i,a,n) for(int i=a;i<n;i++)
#define rep2(i,a,n) for(int i=a;i<=n;i++)
#define per1(i,n,a)	for(int i=n;i>a;i--)
#define per2(i,n,a) for(int i=n;i>=a;i--)
using ll=long long ;
using namespace std;
const int N = 100010;
int n;
struct Range
{
    int l, r;
}range[N];
bool cmp(Range a,Range b)
{
	return a.r<b.r;
}
int main()
{
    scanf("%d", &n);
    rep1(i,0,n) scanf("%d%d", &range[i].l, &range[i].r);
    sort(range, range + n,cmp);
    int res = 1, ed = range[0].r;先选中第一个右端点,所以res从1开始;
    rep1(i,1,n)
        if (ed < range[i].l)
        {
            res ++ ;
            ed = range[i].r;
        }
    printf("%d\n", res);
    return 0;
}

2.贪心—最大不相交区间数量

?原理同上;就是感觉用到了贪心的一大特性,找不到反例,直接用就行;

我的第一思路就是排序右端点,选中第一个区间的右端点,比较下个区间的左端点,不相交,右端点改变为该区间的右端点,一直往下找;因为有排序,并且从第一个区间开始选的,所以这样找出来一定是最大值;

#include<bits/stdc++.h>
#define rep1(i,a,n) for(int i=a;i<n;i++)
#define rep2(i,a,n) for(int i=a;i<=n;i++)
#define per1(i,n,a)	for(int i=n;i>a;i--)
#define per2(i,n,a) for(int i=n;i>=a;i--)
using ll=long long ;
using namespace std;
const int N=1e5+10;
struct ji{
	int l;
	int r;
}a[N];
bool cmp(ji a,ji b)
{
	return a.r<b.r;
}
int n;
int main()
{	
	cin>>n;
	rep2(i,1,n)
	{
		scanf("%d%d",&a[i].l,&a[i].r);
	}
	sort(a+1,a+n+1,cmp);
	int ans=1,ed=a[1].r;
	rep2(i,2,n){
		if(a[i].l>ed)ans++,ed=a[i].r;
	}
	cout<<ans;
	return 0;		 
}

二.

1.char c[N];

scanf("%s",&c+1)无法完成输入,要么cin>>c+1,要么scanf("%s",&c);!!!!!

用循环输入也出错!QAQ

以后输入字符串就用上面两种方式就好;记住了!!!!;

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:57:15  更:2022-02-09 20:59:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:24:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码