原题链接

题意简介

建议去原题看。这题意我表达不清楚。

大概就是给你一个 n 的排列,现在要求你进行 m 次操作。

每次操作,你会在现有的排列中删去一个数,然后选择其左边或右边的一个与之相邻的数加入 b 数组中。

然后将变成两截的数组重新连在一起,更新下标。

现在问有多少种操作方案,可以使 b 数组中恰好按顺序排列着它给定的那几个数字。

只要两个方案中任一轮删数的下标不同,就视为不同的方案。

思路分析

这道题显然是道水题。不明白为什么扔在 F。或许出题人是用脚编排题目。

其实这道题是同场 div1 的 B 题,之前写的 CF1443 D 则是 div1 的 A 题。

感觉E题更难一点。

由数字不会重复这一点上看,想要加入一个数字,就需要删去其中一个与之相邻的数字。

如果某个数字两端都是需要在其之后加入的数字,那么显然无解。

另外,在删数过后,后面的数字的下标会往前推一格。判断方案不同的依据就是被删除的下标的顺序。

如果某个数字原本另一边就有一个需要保留的数字,那么前面的所有操作都不可能改变这一点。

而如果数字的两边都可以删除,那么前面的操作依然不可能改变这一点。

每次操作实质上改变的有且只有下标和加入顺序都在它之后的数字的操作对应的 ti 。

在保证不会删掉还没加入 b 的需要的数字的前提下,记每个需要的数字可以删去的与之相邻的数的个数 c 。

不难发现答案应该是: \(\prod_{i=1}^m c_i\)

代码库

说起来这是我第一次在 memset 上吃瘪。

里头有一组数据 t=1e5 里头全是 n=2 m=1

然后我就 TLE 了。

这个故事告诉我们 t 比较大时 memset 不要乱用。

或者试一下 memset(p,0,(n+1)*sizeof(int)) 。

#include <cstdio>
#include <cstring>
typedef long long ll;
#define REG register
#define rep(i,a,b) for(REG int i=a;i<=b;i++)
const ll N=2e5+5,mod=998244353;
int n,m,A[N],B[N],p[N]; ll ans; bool vis[N];
int main(){
REG int t; scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
//memset(p,0,sizeof(p));
//memset(vis,0,sizeof(vis));
rep(i,1,n) p[i]=vis[i]=0;
rep(i,1,n) scanf("%d",A+i),p[A[i]]=i;
rep(i,1,m) scanf("%d",B+i),vis[B[i]]=1;
ans=1;
rep(i,1,m){
REG int pos=p[B[i]],c=0;
if(pos-1>=1&&!vis[A[pos-1]]) c++;
if(pos+1<=n&&!vis[A[pos+1]]) c++;
ans=ans*c%mod; vis[B[i]]=0;
}
printf("%lld\n",ans);
}
return 0;
}

【CF1443F】Identify the Operations 题解的更多相关文章

  1. codechef Row and Column Operations 题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  2. Codeforces Round #681 (Div. 1, based on VK Cup 2019-2020 - Final) B. Identify the Operations (模拟,双向链表)

    题意:给你一组不重复的序列\(a\),每次可以选择一个数删除它左边或右边的一个数,并将选择的数append到数组\(b\)中,现在给你数组\(b\),问有多少种方案数得到\(b\). 题解:我们可以记 ...

  3. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)【ABCDF】

    比赛链接:https://codeforces.com/contest/1443 A. Kids Seating 题意 构造一个大小为 \(n\) 的数组使得任意两个数既不互质也不相互整除,要求所有数 ...

  4. Leetcode-283 Move Zeroes

    #283.   Move Zeroes Given an array nums, write a function to move all 0's to the end of it while mai ...

  5. Cheatsheet: 2013 10.09 ~ 10.23

    Other 10 Basic Linux Networking and Monitoring Commands You Should Know A simple, portable yet effic ...

  6. 6.4 操作契约 Operation Contracts

    4.操作契约 Operation Contracts  “用例描述”的补充  强调: 用例中重要的动作,其开始与结束是需要一些约束 4.5 操作契约的后置条件  定义Definition  后 ...

  7. Oracle ASM 相关的 视图(V$) 和 数据字典(X$)

    本文转自: http://blog.csdn.net/tianlesoftware/article/details/6733039 ASM由于其高度的封装性,使得我们很难知道窥探其内部的原理.可以通过 ...

  8. Snoop resynchronization mechanism to preserve read ordering

    A processor employing a post-cache (LS2) buffer. Loads are stored into the LS2buffer after probing t ...

  9. UML期末绘图及细节总结

    往届期末绘图的题目例如以下所看到的: Read the providing materials carefully, and then do tasks. 2.1: Use Case Diagram ...

随机推荐

  1. ES 入门 - 基于词项的查询

    准备 首先先声明下,我这里使用的 ES 版本 5.2.0. 为了便于理解,这里以如下 index 为格式,该格式是通过 PMACCT 抓取的 netflow 流量信息, 文中所涉及的到的例子,全基于此 ...

  2. Layman 解决MUI 软键盘弹起挤压页面问题

    问题:在使用mui和H5+进行移动端开发的时候,经常会遇见需要用户输入的情况 当input获取焦点弹起软键盘的时候,经常会遇见软键盘挤压页面.软键盘遮挡输入框等一系列问题: 原因:造成这种现象的原因是 ...

  3. 03 Comments in C Programming C编程中的注释

    Comments 注释简介 Let's take a quick break from programming and talk about comments. Comments help progr ...

  4. 【Rsync实战】Rsync 备份的配置与管理

    一.Rsync 基本概述 rsync 是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用. rsync 官方地址: rsync ...

  5. 使用OLEDB方式 读取excel和csv文件

    /// <summary> /// 使用OLEDB读取excel和csv文件 /// </summary> /// <param name="path" ...

  6. CentOS 网卡固定地址配置

    修改4个文件后重启网卡 vim /etc/default/grub GRUB_CMDLINE_LINUX="resume=UUID=05dbb36b-dbba-40a3-ba99-1b044 ...

  7. Vue踩坑日记-This dependency was not found:element-ui.js

    该问题为在Vue启动项目时候报错找不到element-ui模块 解决办法:打开CMD 控制台 CD到项目根目录 我的目录(C:\Users\Administrator\Desktop\cms-heli ...

  8. app 自动化测试 - 多设备并发 -appium+pytest+ 多线程

    1.appium+python 实现单设备的 app 自动化测试 启动 appium server,占用端口 4723 电脑与一个设备连接,通过 adb devices 获取已连接的设备 在 pyth ...

  9. Redis五种常用数据类型

    string 字符串常用操作 1.存入字符串键值对  SET key value 2.批量存储字符串键值对  MSET key value [key value ...] 3.获取一个字符串键值  G ...

  10. 解决Java连接Oracle 12c存在的问题

    感谢作者 原文链接:https://blog.csdn.net/peng_wei_kang/article/details/80403486 1.发现项目报以下错误:   Caused by: jav ...