CF1173C

由于牌堆只能从最后插牌,所以插牌方法非常显然

首先特判一下牌堆有没有一个合法的后缀,如果有的话再判断一下手中的牌和合法后缀之前的牌的排列顺序能不能有效的继续续下去

然后排除了以上情况就可以直接找\(max(i-b_i)\)就是最早在哪个时刻开始往里按顺序加牌构造递增序列

#include<iostream>
#include<cstdio> using namespace std; int w,n,m,k,a[1000001],b[1000001],c[300001]; int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++) scanf("%d",&a[i]), c[a[i]]=i;
int B=0;
k=n;
while(k && a[k-1]==a[k]-1) k--;
if(a[k]==1 || a[k]==0) B=1;
if(a[n]==0) B=1;
if(B)
{
for(int i=1;i<k;i++)
if(a[i] && i-a[i]+a[n]+1>0) B=0;
if(B)
{
printf("%d",n-a[n]);
return 0;
} }
B=0;
for(int i=1;i<=n;i++) if(a[i])B=max(B,i-a[i]+1);
printf("%d",B+n);
}

CF1173D

边不交叉的条件是每棵子树都要在一段连续的位置

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
const int M = 1000001;
const int P = 998244353; int x,y,n,m,k, ver[M], nex[M], edge[M],cnt,A[M],head[M]; void add(int x,int y)
{
ver[++cnt]=y, nex[cnt]=head[x], head[x]=cnt;
ver[++cnt]=x, nex[cnt]=head[y], head[y]=cnt;
} int dfs(int x,int fa)
{
int s=1, d=1;
for(int i=head[x];i;i=nex[i])
{
if(ver[i]==fa) continue;
d=(LL)d*dfs(ver[i],x)%P;
s++;
}
if(x!=1)return (LL)A[s]*d%P;
return (LL)A[s-1]*d%P; } int main()
{
scanf("%d",&n);
for(int i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
add(x,y);
}
A[0]=1;
for(int i=1;i<=n;i++) A[i]=(LL)A[i-1]*i%P;
printf("%d",(LL)n*dfs(1,0)%P);
}

CF1173X的更多相关文章

随机推荐

  1. Dubbo 系列(07-4)集群容错 - 集群

    BDubbo 系列(07-4)集群容错 - 集群 [toc] Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 相关文档推荐: Dubbo 集群容错 - 实战 D ...

  2. Volatile 只保证可见性,并不保证原子性

    [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/52525724   在说明Java多线程内存可见性之前,先来简单了解一下J ...

  3. sourcetree配置gitlab

    一.准备 1.安装git,下载地址:https://git-scm.com/download 安装教程百度一下      git客户端(1.产生gitlab服务端和本地git相互传输时所需要校验的私钥 ...

  4. 热修复设计之AOT/JIT&dexopt 与 dex2oat (一)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从AOT/JIT&dexopt 与 dex2o ...

  5. Java关于线程池的使用

    一.四种线程池创建的方式 Java通过Executors提供四种线程池,分别为: newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回 ...

  6. Python二分查找算法

    Python 二分查找算法: 什么是二分查找,二分查找的解释: 二分查找又叫折半查找,二分查找应该属于减值技术的应用,所谓减值法,就是将原问题分成若干个子问题后,利用了规模为n的原问题的解与较小规模( ...

  7. 案例:使用xml存储数据

    HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. Nginx实现rewrite重写

    目录 Rewrite基本概述 Rewrite标记Flag Rewrite规则实践 Rewrite场景示例 Rewrite规则补充 rewrite优先级实战 Rewrite基本概述 什么是rewrite ...

  9. linux随笔-05

    shell脚本&定时任务 编写Shell脚本 可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”. Shell脚本命令的工作方式有两种:交互式和批处理. 交互式(Interactiv ...

  10. 第二则java读取excel文件代码

    // 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全 String savePath = this.getServletContext().ge ...