CF2157C Meximum Array 2

news/2025/11/27 20:45:34/文章来源:https://www.cnblogs.com/alexande/p/19279430

限制分开讨论。

首先对于一个位置,如果两个地方的限制都有,那么填 \(k + 1\),因为此时不能填 \(< k\) 的数,也不能填 \(k\),因此填 \(k + 1\)

如果什么限制都没有,那当然是填什么无所谓。

重要的就是只有两个限制的其中一个该怎么办。

如果只有 \(\min\) 的限制,那很好办,直接赋值成 \(k\) 就好了。

如果只有 \(mex\) 的限制,并不好办,因为你不确定你是填上一个数 \(+ 1\) 还是填 \(0\),我们发现此时找到上一个只有 \(mex\) 的位置,如果中间没有连着的限制,那么证明要从头再来,就填 \(0\),否则就填上个数 \(+1\) 的循环位移。

code:

#include <bits/stdc++.h>using namespace std;#define int long long
#define fir first
#define sec second
#define mkp make_pair 
#define pb push_back
#define lep( i, l, r ) for ( int i = ( l ); i <= ( r ); ++ i )
#define rep( i, r, l ) for ( int i = ( r ); i >= ( l ); -- i )typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair < int, int > pii;namespace IO{const int SIZE=1<<21;static char ibuf[SIZE],obuf[SIZE],*iS,*iT,*oS=obuf,*oT=oS+SIZE-1;int qr;char qu[55],c;bool f;#define getchar() (IO::iS==IO::iT?(IO::iT=(IO::iS=IO::ibuf)+fread(IO::ibuf,1,IO::SIZE,stdin),(IO::iS==IO::iT?EOF:*IO::iS++)):*IO::iS++)#define putchar(x) *IO::oS++=x,IO::oS==IO::oT?flush():0#define flush() fwrite(IO::obuf,1,IO::oS-IO::obuf,stdout),IO::oS=IO::obuf#define puts(x) IO::Puts(x)template<typename T>inline void read(T&x){for(f=1,c=getchar();c<48||c>57;c=getchar())f^=c=='-';for(x=0;c<=57&&c>=48;c=getchar()) x=(x<<1)+(x<<3)+(c&15); x=f?x:-x;}template<typename T>inline void write(T x){if(!x) putchar(48); if(x<0) putchar('-'),x=-x;while(x) qu[++qr]=x%10^48,x/=10;while(qr) putchar(qu[qr--]);}inline void Puts(const char*s){for(int i=0;s[i];i++)putchar(s[i]);putchar('\n');}struct Flusher_{~Flusher_(){flush();}}io_flusher_;
}
using IO::read;
using IO::write;template < class type > inline void chkmin ( type &x, type y ) { x = ( x <= y ? x : y ); }
template < class type > inline void chkmax ( type &x, type y ) { x = ( x >= y ? x : y ); }const int N = 105;int t, n, k, q;
int a[N], b[N], ans[N];void Solve () {cin >> t;while ( t -- ) {cin >> n >> k >> q;for ( int i = 1; i <= q; i ++ ) {int op, l, r;cin >> op >> l >> r;if ( op == 1 ) {for ( int j = l; j <= r; j ++ ) {a[j] = 1;}}else {for ( int j = l; j <= r; j ++ ) {b[j] = 1;}}}for ( int i = 1; i <= n; i ++ ) {if ( a[i] && b[i] ) {ans[i] = k + 1;}else if ( a[i] ) {ans[i] = k;}else if ( b[i] ) {int lst = -1, flag = 1;for ( int j = i - 1; j >= 1; j -- ) {flag &= b[j];if ( !a[j] && b[j] ) {lst = j;break;}}if ( lst == -1 || flag ) {ans[i] = ( ans[lst] + 1 ) % k;}else {ans[i] = 0;}}else {ans[i] = 0;}}for ( int i = 1; i <= n; i ++ ) {cout << ans[i] << " ";}cout << '\n';}
}signed main () {
#ifdef judgefreopen ( "Code.in", "r", stdin );freopen ( "Code.out", "w", stdout );freopen ( "Code.err", "w", stderr );
#endifSolve ();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/978956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在实际项目中选择使用Java NIO框架还是传统IO框架?

在实际项目中选择 Java NIO 框架还是传统 IO(BIO)框架,核心是匹配项目的技术场景、性能需求、开发成本三者的平衡。以下从决策维度、场景分类、选型建议三个层面给出具体方案: 一、核心决策维度 选择前需明确以下关…

AT_fps_24_b 整数の組

生成函数是简单的,列出生成函数 然后对后两个的分母因式分解发现能和前两项消掉,最后是 \([x^n]\frac{1}{(x-1)^2}\)。 还有一种是枚举前两种,然后 \(d\) 跟 \(t=n-a-b\) 模 2 同余,且满足 \(3d\le t\) 所以看 \(\…

详细介绍:【数据结构初阶】单链表

详细介绍:【数据结构初阶】单链表pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

第五十篇

今天是11月27号,上了体育和数据结构

每日随笔

今天背了第四单元的英语单词,看了一会《代码大全2》

2025年日语自学软件推荐:最适合零基础与进阶者的优质口碑选择

2025年日语自学软件推荐:最适合零基础与进阶者的优质口碑选择学习一门新语言时,合适的自学工具往往能让我们少走弯路。对于选择自学的日语爱好者来说,如何在众多日语自学软件中找到真正适合自己的那一款日语自学软件…

ABC386 VP总结

比赛链接 ResultE 题没开 LL 爽挂 3 发,F 题咋是压哨过的 Solution F - Operate K 令 \(dp_{i,j}\) 为 \(S\) 的前 \(i\) 位和 \(T\) 的前 \(j\) 为的最小编辑距离,转移是显然的。因为 \(dp_{i,j}\) 只会从 \(dp_{i,…

探究Spring Boot框架中访问不存在的接口时触发对error路径的访问

先说结论 默认情况下在Spring Boot框架中访问不存在的接口时会触发对"/error"路径的访问,这是由Spring Boot框架的默认错误处理机制导致的,核心是ErrorMvcAutoConfiguration自动配置类在起作用。 追根溯源…

tarjan 强连通分量、缩点、点双、割点、割边(桥)

有向图 强连通分量、缩点 取 cmin(low[u], dfn[v]) 时 v 一定要在栈里。 弹栈时要将 u 也弹出。 int dfn[N], low[N], dfnp, st[N], sp, vis[N], bl[N], blp; void tarjan(int u) {vis[st[++sp] = u] = 1;dfn[u] = low…

2025最新智慧停车与门禁系统解决方案推荐——骏通智能,专注出入口控制与智能化管理,车牌识别、道闸管理、门禁解决方案、通道闸、停车场服务、人脸门禁一站式解决

随着智慧城市建设的加速推进,智慧停车与智能门禁系统已成为现代建筑、社区及商业场所的标配设施。在2025年的出入口控制与智能化管理领域,骏通智能凭借多年技术沉淀与创新实力,为各类场景提供高效、安全、智能的解决…

我踩坑后总结:企业微信客服API接入客服系统,90%的人都搞错了!

vx:llike620 gofly.v1kf.com 最近在配置企业微信客服时,我在域名备案这个问题上踩了不少坑,结果发现大多数人的理解都存在误区。今天就把我的实战经验分享给大家,帮你少走弯路! 两个后台,两种不同的规则 首先必须…

香橙派上进行MQTT数据存储客户端开发(一)基本环境配置

香橙派上进行MQTT数据存储客户端开发(一)基本环境配置基本信息 云服务器配置:EMQX Cloud 类型为 Serverless 主机:Orangepi5max 16G (ARM64 架构) + 32G tf卡 系统:Orangepi5max_1.0.0_ubuntu_jammy_desktop_xf…

GEO 优化价格大比拼,哪家最便宜?三大高性价比机构推荐

GEO 优化已成为企业拓展本地市场、精准触达目标客户的核心手段。无论是线下门店引流、区域品牌推广,还是本地服务曝光,优质的 GEO 优化都能让企业在搜索引擎、地图应用等平台占据更靠前的位置,从而获取更多潜在客户…

2025年AI学习机哪个品牌好?热门品牌功能与效果全解析

2025年AI学习机哪个品牌好?热门品牌功能与效果全解析一、推荐背景与评价体系 最新教育硬件调研数据显示,2025年家长在选择AI学习机时最关注的三大痛点为:“学习内容是否精准适配”、“AI技术是否成熟可靠”、“学习…

2025年知名的长租公寓有哪些:权威榜单与精选解析

2025年知名的长租公寓有哪些:权威榜单与精选解析在城市青年的居住选择谱系中,焦虑正从零散的个体困扰演化为具有普遍性的时代命题。面对海量租房选项与参差的服务现实,许多人不得不在品牌公寓、中介平台与个人房源间…

编程中的枚举法与数学上的穷举法有何区别?

枚举法和穷举法在核心思想上都强调“逐一尝试所有可能性”,但在编程和数学中的侧重点、应用场景及实现方式存在显著差异。以下是具体对比及示例说明: 1. 核心区别维度 枚举法(编程) 穷举法(数学)目的 通过遍历所…

如百钱百鸡问题,枚举法和穷举法有何不同

百钱百鸡问题是一个经典的数学谜题,要求用100文钱买100只鸡,其中公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱三只。求解公鸡、母鸡、小鸡的数量组合。枚举法和穷举法在解决该问题时,核心思路都是遍历所有可能的组合,…

2025年长租公寓排名:最新专业榜单与推荐

2025年长租公寓排名:最新专业榜单与推荐在城市青年的居住版图中,租房早已不只是找个落脚处,而是一次关乎生活品质与精神归属的系统选择。面对品牌公寓、中介平台与个人房源的多重岔路,许多人陷入“租房迷茫”——耗…

从零开始建网站在线客服系统:域名+服务器,到底怎么选才不踩坑?

🌐 从零开始建站:域名+服务器,到底怎么选才不踩坑? 你是不是也听过这种说法:“建网站嘛,域名和服务器肯定少不了!”——没错,这确实是铁律。但作为一个刚折腾完个人博客的过来人,我想告诉你:真正关键的,不…

根本魔法语言数组 (一) (C语言)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …