Codeforces Round #546 (Div. 2) D 贪心 + 思维
https://codeforces.com/contest/1136/problem/D
贪心 + 思维
题意
你面前有一个队列,加上你有n个人(n<=3e5),有m(m<=个交换法则,假如u在v相邻前面,那么u和v可以交换位置,问你是队列最后一个人的时候你最前可以换到前面哪里
题解
- 因为相邻才能换,所以最后一个换到前面一定是一步一步向前走,所以不存在还要向后走的情况
 - 设最后一个为u,假设前面有一个能和u换位置的集合,那么需要将这些点尽量往后移动去接u
 - 假设前面有一个不能和u换位置的集合S,那么u和S的顺序永远不会换过来
 - 从后向前遍历,对于每个点假设后面紧接着S+u,假如这个点能和S+u换位置,那么u可以向前移动一格,ans++
 - 假如不行,则将这个加入S
 
#include<bits/stdc++.h>
using namespace std;
int n,m,a[300005],u,v,i,ok,ans;
vector<int>A;set<pair<int,int> >vi;
int main(){
	cin>>n>>m;
	for(i=1;i<=n;i++)cin>>a[i];
	for(i=0;i<m;i++){
		cin>>u>>v;
		vi.insert(make_pair(u,v));
	}
	A.push_back(a[n]);
	for(i=n-1;i>=1;i--){
		ok=1;
		for(auto x:A){
			if(!vi.count(make_pair(a[i],x))){ok=0;break;}
		}
		if(ok)ans++;
		else A.push_back(a[i]);
	}
	cout<<ans;
}
												
											Codeforces Round #546 (Div. 2) D 贪心 + 思维的更多相关文章
- Codeforces Round #546 (Div. 2) 题解
		
Codeforces Round #546 (Div. 2) 题目链接:https://codeforces.com/contest/1136 A. Nastya Is Reading a Book ...
 - Codeforces Round #546 (Div. 2)D(贪心,思维,SET,VECTOR,模拟)
		
#include<bits/stdc++.h>using namespace std;int a[300007],b[500007],c[500007];set<int>st[ ...
 - Codeforces Round #547 (Div. 3) F 贪心 + 离散化
		
https://codeforces.com/contest/1141/problem/F2 题意 一个大小为n的数组a[],问最多有多少个不相交的区间和相等 题解 离散化用值来做,贪心选择较前的区间 ...
 - Codeforces Round #595 (Div. 3)D1D2 贪心 STL
		
一道用STL的贪心,正好可以用来学习使用STL库 题目大意:给出n条可以内含,相交,分离的线段,如果重叠条数超过k次则为坏点,n,k<2e5 所以我们贪心的想我们从左往右遍历,如果重合部分条数超 ...
 - Codeforces Round #554 (Div. 2) D 贪心 + 记忆化搜索
		
https://codeforces.com/contest/1152/problem/D 题意 给你一个n代表合法括号序列的长度一半,一颗有所有合法括号序列构成的字典树上,选择最大的边集,边集的边没 ...
 - Codeforces Round #303 (Div. 2) D 贪心
		
D. Queue time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
 - Codeforces Round #336 (Div. 2)【A.思维,暴力,B.字符串,暴搜,前缀和,C.暴力,D,区间dp,E,字符串,数学】
		
A. Saitama Destroys Hotel time limit per test:1 second memory limit per test:256 megabytes input:sta ...
 - Codeforces Round #546 (Div. 2)-D - Nastya Is Buying Lunch
		
这道题,神仙贪心题... 题意就是我给出数的顺序,并给出多个交换,每个只能用于相邻交换,问最后一个元素,最多能往前交换多少步. 我们考虑这样一个问题,如果一个这数和a[n]发生交换,那么这个数作为后面 ...
 - Codeforces Round #545 (Div. 2) D 贪心 + kmp
		
https://codeforces.com/contest/1138/problem/D 题意 两个01串s和t,s中字符能相互交换,问最多能得到多少个(可交叉)的t 题解 即将s中的01塞进t中, ...
 
随机推荐
- Codeforces Beta Round #46 (Div. 2)
			
Codeforces Beta Round #46 (Div. 2) http://codeforces.com/contest/49 A #include<bits/stdc++.h> ...
 - chrome谷歌浏览器常用快捷键搜集整理
			
搜集了下面比较实用的快捷键,部分不好操作的组合键就不写了:Ctrl+N:打开新窗口. Ctrl+T:打开新标签页.Ctrl+W:关闭当前标签Alt+F4:关闭chrome浏览器Ctrl+Tab:切换到 ...
 - TZOJ 3481 Highway Construction(树的直径+最短路)
			
描述 As head of the Accessible Commuting Movement (ACM), you've been lobbying the mayor to build a new ...
 - swift语言版本选择 - 解决XCode报错:The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported valu
			
转发链接:https://blog.csdn.net/nathan1987_/article/details/79757368 The “Swift Language Version” (SWIFT_ ...
 - 20165315 实验一 Java开发环境的熟悉
			
# 20165315 实验一 Java开发环境的熟悉 一.实验内容及步骤 (一)使用JDK编译.运行简单的Java程序 macOS命令行下运行Java 打开终端 输入mkdir 20165315exp ...
 - Linux系统不能解析域名
			
问题:正在使用的Linux系统突然有一天不能解析域名gus.xxxxxxxx.com? # ping gus.xxxxxxxx.com ping: unknown host gus-xxxxxxxx. ...
 - YII2开启路由配置后,新加的模块无法访问
			
最近使用YII2,自定义创建了一个自定义模块users,位置为app\modules\users. 'modules' => [ 'users' => [ 'class' => 'a ...
 - c# ?. 空值传播运算符
			
当左侧为空时不执行右侧代码,避免出现为null的错误,同时也避免了判断是否为null,可以和??一起连用,省了好多事.举例如下: 以前:var res=obj==null?5:obj.a; 现在:va ...
 - otool
			
一.简介 二.实例 1)查看动态链接库 otool -L /usr/bin/vim
 - IDEA 调整 VM 配置文件(64位)
			
64 位操作系统中 8G 内存以下的机子或是静态页面开发者是无需修改的. 64 位操作系统且内存大于 8G 的, 如果你是开发大型项目. Java 项目或是 Android 项目,建议进行修改 . 1 ...