Codeforces Round 986 (Div. 2)

ABC 略

D

纯模拟。观察发现我们从第一列任意一个位置出发,找到同一行后面大于这个数的数,跳到这个位置,然后可以上下移动,然后继续上一步操作,问是否可以到达最后一列。外层从小到大枚举每种类型的牌,内层枚举三个人,维护出每个人当前类型之前的最大的数的值和位置与由哪一列跳到这一列,如果当前位置小于维护的这个值,就可以到达,如果这个类型存在一个位置可以到达,那么更新三个人当前类型之前的最大值和位置。答案输出类似与dp中递归输出方案

复制代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int T,n,a[4][N],tot;
pair<int,int> maxx[4];
pair<int,pair<int,int> >f[N],ans[N];
void init()
{
    tot=0;
}
void solve()
{
    cin>>n;
    init();
    for(int i=1;i<=3;i++)
    for(int j=1;j<=n;j++)
    cin>>a[i][j];
    for(int i=1;i<=3;i++)
    maxx[i]={a[i][1],1};
    bool flag;
    for(int i=2;i<=n;i++)
    {
        flag=false;
        for(int j=1;j<=3;j++)
        {
            if(a[j][i]<maxx[j].first)
            {
                f[i]={maxx[j].second,{j,i}};
                flag=true;
                break;
            }
        }
        if(!flag) continue;
        for(int j=1;j<=3;j++)
        {
            if(a[j][i]>maxx[j].first)
            {
                maxx[j]={a[j][i],i};
            }
        }
    }
    string s=" qkj";
    if(flag)
    {
        cout<<"YES"<<endl;
        int p=n;
        while(p>1)
        {
            ans[++tot]=f[p];
            p=f[p].first;
        }
        cout<<tot<<endl;
        for(int i=tot;i>=1;i--)
        cout<<s[ans[i].second.first]<<" "<<ans[i].second.second<<endl;
    }
    else cout<<"NO"<<endl;
}
signed main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>T;
    while(T--) solve();
}
相关推荐
谱写秋天17 分钟前
VSCode+Qt+CMake详细地讲解
c++·ide·vscode·qt·编辑器
A7bert7771 小时前
【YOLOv5部署至RK3588】模型训练→转换RKNN→开发板部署
c++·人工智能·python·深度学习·yolo·目标检测·机器学习
颜如玉1 小时前
位运算技巧总结
后端·算法·性能优化
冷月半明1 小时前
时间序列篇:Prophet负责优雅,LightGBM负责杀疯
python·算法
oioihoii1 小时前
现代C++工具链实战:CMake + Conan + vcpkg依赖管理
开发语言·c++
黑客影儿2 小时前
使用UE5开发2.5D开放世界战略养成类游戏的硬件配置指南
开发语言·c++·人工智能·游戏·智能手机·ue5·游戏引擎
秋难降2 小时前
聊聊 “摸鱼式” 遍历 —— 受控遍历的小心机
数据结构·算法·程序员
九离十2 小时前
STL——vector的使用(快速入门详细)
开发语言·c++·stl
君鼎2 小时前
More Effective C++ 条款08:理解各种不同意义的new和delete
c++
等风来不如迎风去2 小时前
【动态规划】309. 买卖股票的最佳时机含冷冻期及动态规划模板
算法·动态规划