题意:

给一个序列和一组交换序列(a,b),当且仅当a在b的前面(不允许有间隔),这两个数才能交换,问最后一个数最多能移动多少个位置。

分析: 这题是思路是十分的巧妙呀 , 用一个数组num[x]  表示在x的后面有什么是可以于他交换的数 , 注意核心来了: 如果这个数目等于x的位置到目标位置id , 则目标可以向前进行移动 ,秒呀

#include<bits/stdc++.h>
using namespace std ;
int a[];
vector<int>G[];
int num[];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i= ; i<=n ; i++)
scanf("%d",&a[i]); for(int i= ; i<=m ; i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[v].push_back(u);
} for(int i= ; i<G[a[n]].size() ; i++)
num[G[a[n]][i]]++;
int ans=;
int id=n;
for(int i=n- ; i>= ; i--)
{
if(num[a[i]]==id-i) {ans++; id--;}
else
{
for(int j= ; j<G[a[i]].size() ; j++)
num[G[a[i]][j]]++;
}
}
printf("%d\n",ans);
return ;
}

Codeforces 1136D Nastya Is Buying Lunch (贪心)的更多相关文章

  1. Codeforces 1136D - Nastya Is Buying Lunch - [贪心+链表+map]

    题目链接:https://codeforces.com/problemset/problem/1136/D 题意: 给出 $1 \sim n$ 的某个排列 $p$,再给出若干 $(x,y)$ 表示当序 ...

  2. cf1136D. Nastya Is Buying Lunch(贪心)

    题意 题目链接 给出一个排列,以及\(m\)个形如\((x, y)\)的限制,表示若\(x\)在\(y\)之前则可以交换\(x, y\). 问\(n\)位置上的数最多能前进几步 \(n \leqsla ...

  3. Nastya Is Buying Lunch CodeForces - 1136D (排列)

    大意: 给定n排列, m个pair, 每个pair(u,v), 若u,v相邻, 且u在v左侧, 则可以交换u和v, 求a[n]最多向左移动多少 经过观察可以发现, 尽量先用右侧的人与a[n]交换, 这 ...

  4. Codeforces Round #546 (Div. 2)-D - Nastya Is Buying Lunch

    这道题,神仙贪心题... 题意就是我给出数的顺序,并给出多个交换,每个只能用于相邻交换,问最后一个元素,最多能往前交换多少步. 我们考虑这样一个问题,如果一个这数和a[n]发生交换,那么这个数作为后面 ...

  5. D. Nastya Is Buying Lunch

    链接 [https://codeforces.com/contest/1136/problem/D] 题意 有N个人,a[i]表示第i个人的编号,m个二元组. 当前一个在后一个的前面一个位置时二者可以 ...

  6. Nastya Is Buying Lunch

    At the big break Nastya came to the school dining room. There are nn pupils in the school, numbered ...

  7. CF1136D Nastya Is Buying Lunch

    思路: 1. 最终答案不超过能与Nastya“直接交换”的人数. 2. 对于排在j前面的i,如果i和i-j之间(包括j)的每个人都能“直接交换”,j才能前进一步. 实现: #include <b ...

  8. Codeforces GYM 100876 J - Buying roads 题解

    Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...

  9. Codeforces 437C The Child and Toy(贪心)

    题目连接:Codeforces 437C  The Child and Toy 贪心,每条绳子都是须要割断的,那就先割断最大值相应的那部分周围的绳子. #include <iostream> ...

随机推荐

  1. POI技术

    1.excel左上角有绿色小图标说明单元格格式不匹配 2.模板中设置自动计算没效果,需要加上sheet.setForceFormulaRecalculation(true); FileInputStr ...

  2. 1.ef 映射关系

    1.edmx <?xml version="1.0" encoding="utf-8"?><edmx:Edmx Version="3 ...

  3. 简单基础路径配置(单用JSP)EASYUI

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  4. FutureTask子任务取消执行的状态判断

    示例代码可以从github上获取 https://github.com/git-simm/simm-framework.git 一.业务场景: 系统中存在多种场景并发操作事务执行时互锁的情况,导致任务 ...

  5. 关于同时查询父子名称的SQL查询语句的写法 id name parentId parentName .

    parentid是1就是id为1的公司的子公司 如图 查询出所有的信息后 由于我要呈现的是parentName 不是parentId所以想问下SQL语句怎么写 谢谢啦~~:) 解法: SELECT s ...

  6. 个人项目:wc程序(java)

    Github项目地址:https://github.com/jat0824/wc.git 项目相关要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行 ...

  7. DB2触发器简单例子

    db2使用版本9.7 创建A .B两个表,A表数据有更新.删除.插入时,将A表ID记录放入B表 1.create table A (id varchar(5),name varchar(30)); c ...

  8. winform panel显示子窗体

    private void ZiChuangTi() {//确认当前为子窗体 this.IsMdiContainer = true; //建立个子窗体的对象 Son mySon = new Son(); ...

  9. ASP.NET Session原理及处理方法

    session是怎么存储,提取的 1.在服务器端有一个session池,用来存储每个用户提交session中的数据,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服 ...

  10. XXX培训机构Python自动化教程目录