有一个栈,里面有n个元素,还有一个数组,要按数组的顺序把它们从栈中取出,取出的方式是在栈中把这个元素前面的元素取出,然后把这个元素取出,再把前面的元素放回去,放回去的时候可以重新排序,使得接下来的操作数更少,问最少需要操作几次。

思路:把每个栈中元素的最初位置记录下来,然后记录一个last值,代表前面的已经出栈的元素的最大的位置,也就是已经排好序了的元素的最大位置,如果当前需要出栈的元素的栈中位置比last小,操作数就加1,如果比last大,说明它还没有排序,就按照规则做,先出栈,再把它前面的元素入栈,同时last更新,(last应该是这个元素的位置,而不是i,一直WA)。排序的话,肯定是按照出栈的元素的顺序排的,这样就可以直接出栈。

#pragma warning(disable:4996)
#include<climits>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<string>
using namespace std;
typedef long long ll;
const int INF = INT_MAX;
ll a[100005], pos[100005], b[100005];//pos记录位置
int main()
{ll T, i, n, m, ans, last;scanf("%lld", &T);while (T--){scanf("%lld%lld", &n, &m);for (i = 1; i <= n; i++){scanf("%lld", &a[i]);pos[a[i]] = i;}for (i = 1; i <= m; i++)scanf("%lld", &b[i]);ans = 0; i = 1; last = 0;//i从1开始while (i <= m){if (pos[b[i]] > last){ans += ((pos[b[i]] - i) * 2 + 1);//pos减去i,多减了一个last = pos[b[i]];//last变为现在这个数的位置,而不是i}else{ans++;//前面的已经排好序了;}i++;}printf("%lld\n", ans);}return 0;
}

codeforces 1279c相关推荐

  1. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  2. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  3. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  4. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  5. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  6. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

  7. codeforces A. Jeff and Digits 解题报告

    题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...

  8. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  9. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

最新文章

  1. 关于用户升级到MacOS10.10系统后versions崩溃的问题
  2. 门限的限意思是什么_门限是什么意思_门限英文翻译
  3. V3S文件系统基本构架
  4. bat删除计算机用户,自动清除电脑垃圾及删除windows默认共享盘符的批处理bat
  5. 基于Xml 的IOC 容器-开始启动
  6. 使用gdb调试多进程和多线程
  7. Intouch使用SIDirect OIServer 连接西门子PLC S7-300
  8. hadoopstreaming
  9. Html select、option、optgroup 标签
  10. python网络通信传输的数据类型_Python网络编程中的网络数据和网络错误。
  11. Android使用Intent完成活动之间的通信
  12. android 取消root,彻底告别安卓刷机时代!360超级ROOT正式宣布下线:取消ROOT权限
  13. 华为freelace耳机修整详录
  14. 小象学院-人工智能机器学习
  15. 计算机表格性格计算,MBTI职业性格测试自动计算得分并得出分析结果.docx
  16. 金融类APP应该怎么做?券商APP该何去何从?
  17. adb导出手机应用到电脑
  18. 鸿蒙事业单位专业技术,事业单位专业技术岗考什么?
  19. 苹果a12_盘点那些你不知道的苹果a12和a10x的差距
  20. 什么?还在用delete删除数据《死磕MySQL系列 九》

热门文章

  1. auto.js 开发和学习小结 - 微信搜一搜和微信指数的脚本
  2. CBC中更新TChart控件
  3. 好好养生,身体第一,工作第二
  4. AndroidUtilCode工具类
  5. GB28181国标平台软件(包含服务器和客户端)
  6. 荣耀6x升级Android8省电,升级Android8.0大动作:华为、荣耀6款旧机同时开启EMUI8.0测试...
  7. Mockplus教程:分分钟搞定APP首页原型设计
  8. (五)路由器破密码和重置
  9. 如何去实践一个完整的数据挖掘项目?
  10. Unity信号干扰shader(参照崩坏3源码翻译剧情对话效果)