首页 > 其他分享 >二分

二分

时间:2024-10-10 19:49:48浏览次数:7  
标签:二分 10 le int 样例 创新奖 奖项

眼红的Medusa

题目描述

虽然 Miss Medusa 到了北京,领了科技创新奖,但是她还是觉得不满意。原因是:他发现很多人都和她一样获了科技创新奖,特别是其中的某些人,还获得了另一个奖项——特殊贡献奖。而越多的人获得了两个奖项,Miss Medusa就会越眼红。于是她决定统计有哪些人获得了两个奖项,来知道自己有多眼红。

输入格式

第一行两个整数 $n, m$,表示有 $n$ 个人获得科技创新奖,$m$ 个人获得特殊贡献奖。

第二行 $n$ 个正整数,表示获得科技创新奖的人的编号。

第三行 $m$ 个正整数,表示获得特殊贡献奖的人的编号。

输出格式

输出一行,为获得两个奖项的人的编号,按在科技创新奖获奖名单中的先后次序输出。

样例 #1

样例输入 #1

4 3
2 15 6 8
8 9 2

样例输出 #1

2 8

提示

对于 $60%$ 的数据,$0 \leq n, m \leq 1000$,获得奖项的人的编号 $\lt 2 \times 10^9$;

对于 $100%$ 的数据,$0 \leq n, m \leq 10^5$,获得奖项的人的编号 $\lt 2 \times 10^9$。

输入数据保证第二行任意两个数不同,第三行任意两个数不同。

代码

点击查看代码
#include<iostream>
#include <algorithm>
using namespace std;
#define MAX 100005

int main() {
	int a[MAX];
	int b[MAX];
	int n, m;//获两种奖项的人数
	cin >> n >> m;
	//分别存入编号
	for (int i = 0; i < n; i++) cin >> a[i];
	for (int i = 0; i < m; i++) cin >> b[i];
	sort(b, b+m);//排序,好用!
	for (int i = 0; i < n; i++) {
		int low = 0, high = m-1;
		while (low <= high) {
			int mid = (low + high) / 2;//取中间值
			if (b[mid] == a[i]) {
				cout << a[i] << " ";
				break;
			}
			else if (b[mid] < a[i])low = mid+1;
			else high = mid-1;
		}
	}
	return 0;
}
# 凌乱的yyy / 线段覆盖

题目背景

快 noip 了,yyy 很紧张!

题目描述

现在各大 oj 上有 $n$ 个比赛,每个比赛的开始、结束的时间点是知道的。

yyy 认为,参加越多的比赛,noip 就能考的越好(假的)。

所以,他想知道他最多能参加几个比赛。

由于 yyy 是蒟蒻,如果要参加一个比赛必须善始善终,而且不能同时参加 $2$ 个及以上的比赛。

输入格式

第一行是一个整数 $n$,接下来 $n$ 行每行是 $2$ 个整数 $a_{i},b_{i}\ (a_{i}<b_{i})$,表示比赛开始、结束的时间。

输出格式

一个整数最多参加的比赛数目。

样例 #1

样例输入 #1

3
0 2
2 4
1 3

样例输出 #1

2

提示

  • 对于 $20%$ 的数据,$n \le 10$;
  • 对于 $50%$ 的数据,$n \le 10^3$;
  • 对于 $70%$ 的数据,$n \le 10^{5}$;
  • 对于 $100%$ 的数据,$1\le n \le 10^{6}$,$0 \le a_{i} < b_{i} \le 10^6$。
    代码
点击查看代码
#include<iostream>
#include <algorithm>
using namespace std;
#define MAX 2000000
typedef struct {
	int s, e;
}Comp;
bool isSmall(Comp a, Comp b) {
	return a.e < b.e;
}
Comp c[MAX];
int main() {
	int n;
	int min;
	cin >> n;
	//存入起始与终止时间
	for (int i = 1; i <= n; i++)
		cin >> c[i].s >> c[i].e;
	sort(c + 1, c + n + 1, isSmall);


	int now=c[1].e;//指向结束时间最早的比赛
	int cnt = 1;
	for (int i = 1; i <= n; i++) {
		if (c[i].s >= now) {
			now = c[i].e;//表示选择进行该比赛
			cnt++;
		}
	}
	cout << cnt;
	return 0; 
}

标签:二分,10,le,int,样例,创新奖,奖项
From: https://www.cnblogs.com/its-my-go/p/18457004

相关文章

  • 深度理解二分查找思想~
    二分思想的基本思想:是将有序数组分成两半,通过比较数组中间元素与目标值大小,来决定下一步搜索的区间是左半部分还是右半部分,然后递归再选定的区间内继续查找。(部分有序的数组也可使用这一思想)二分查找基础代码根据划分区间方法的不同,主要分为三种类型(并在代码后方附有......
  • 二分图最大匹配-匈牙利算法
    二分图最大匹配设G为二分图,若在G的子图M中,任意两条边都没有公共节点,那么称M为二分图G的一组匹配。在二分图中,包含边数最多的一组匹配称为二分图的最大匹配。交替路:从一个未匹配点出发,依次经过非匹配边、匹配边、非匹配边…形成的路径叫交替路。增广路:从一个未匹配点......
  • 二分答案法
    二分答案法估计最终答案的大概范围分析问题的答案和给定条件之间的单调性建立一个f函数,当答案固定的情况下,判断给定的条件是否达标在最终答案可能的范围上不断二分搜索,每次用f函数判断,直到二分结束,找到最合适的答案875.爱吃香蕉的珂珂#include<vector>#inc......
  • 二分查找算法
    二分查找算法基本思路二分查找的基本思路如下:找到中间元素:查找过程从数组的中间元素开始,如果中间元素恰好是目标元素,则查找过程结束。比较并缩小范围:如果中间元素不是目标元素,那么将中间元素与目标值进行比较:如果目标值小于中间元素,则说明目标值位于当前搜索范围的左半部分......
  • 二分搜索与二分答案
    二分前提条件数组的有序的数组数组中无重复元素,否则查找的元素下标可以不算唯一的二分答案二分答案时需要满足答案的有界性二分答案的思路:首先判断这个解是否为可行解,然后我们”认为“这个可行解的最优解,然后以这个可行解为标准去左(右)区间寻找最优解时间复杂......
  • 二分图的判定-染色法
    二分图如果一张无向图的N个节点可以分成A.B两个不相交的非空集合,并且同一集合内的点之间没有边相连,那么称该无向图为二分图(BipartiteGraph)。定理:二分图不存在奇环(长度为奇数的环)。因为每一条边都是从一个集合走到另一个集合,只有走偶数次才可能回到同一个集合。染色......
  • NOIP2024集训Day47 生成树+二分图
    NOIP2024集训Day47生成树+二分图B.[THUPC2022初赛]最小公倍树直接建边显然不行,考虑优化建边。对于两个点\(u,v\),\((u,v)\)的边权为\(\displaystyle\operatorname{lcm}(u,v)=\frac{u\timesv}{\gcd(u,v)}\),显然应该选择\(\gcd(u,v)\)尽可能大的点对连边,也就是......
  • Codeforces Round 316 (Div. 2) D题 Tree Requests(二分,dfs,在线,前缀异或)
    题目链接CodeforcesRound316(Div.2)D题TreeRequests思路将262626个字母全部当作一个二进制数。将每个深度的结点按照dfs序放到一个vector里,同时记录每个vector......
  • 【前缀和+开区间二分】codeforces 1187 B. Letters Shop
    题意第一行,输入一个正整数\(n(1\leqn\leq2*10^5)\),代表字符串\(s\)的长度。第二行,输入一个字符串\(s\)。第三行,输入一个正整数\(m(1\leqm\leq5*10^4)\),代表接下来要输入的询问次数,对于每次询问:输入一个字符串\(t(1\leq|t|\leq2*10^5)\),并保证\(\sum_{i=1}^m......
  • 【二分】【边界判定】
    https://ac.nowcoder.com/acm/contest/22353/G注意点:check中,不仅要判断用的joker数是否大于joker牌的数量,还要判断组成套数是否小于用的joker数量,原文链接:https://blog.csdn.net/a_forever_dream/article/details/106548941#include<bits/stdc++.h>typedeflonglongll;usi......