当前位置: 首页 > news >正文

CF2157C Meximum Array 2

限制分开讨论。

首先对于一个位置,如果两个地方的限制都有,那么填 \(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.gsyq.cn/news/63235.html

相关文章:

  • AT_fps_24_b 整数の組
  • 第五十篇
  • 我踩坑后总结:企业微信客服API接入客服系统,90%的人都搞错了!
  • 香橙派上进行MQTT数据存储客户端开发(一)基本环境配置
  • 编程中的枚举法与数学上的穷举法有何区别?
  • 《程序员修炼之道:从小工到专家》阅读笔记5
  • C# 图片加载引发的内存溢出异常
  • Mac 安装 4K Video Downloader v5.0.0.5303-1.dmg 方法(附安装包)
  • TPS的另外一层含义:绝对并发用户数 - BKY007
  • 笔记——OI中求逆元的几种方式(不含数学知识的讲解)
  • 2025国内公关公司排名推荐(整合权威数据源):十大机构深度对比,专业分析与选择指南
  • acme证书申请
  • [CEOI 2025] Equal Mex 题解
  • Open WebUI大模型输出完成后新对话响应延迟、输出变慢问题
  • 2025年11月液体容器磁致伸缩液位计,格雷母线,lvdt位移传感器厂家最新推荐,容器监测与位移适配指南
  • Python中isdigit、isdecimal、isnumeric区别详解
  • 3D 场景预加载应用实现 | 图扑软件
  • 2025年11月GEO公司推荐:全链路破局企业流量困境,AI驱动搜索优化实力全解析
  • 医疗器械渠道管理革新:数字化平台如何解决行业痛点
  • 如何在VSCode中Debug(带有参数,name、program、$file、args、pickArgs、指定虚拟环境)
  • 适合应届生:零经验专业简历模板TOP4
  • 2025年简约智能家居照明灯品牌推荐,让生活更智能
  • [论文阅读] AI | 大语言模型服务框架服务级目标和系统级指标优化研究
  • 2025年11月治鼻炎产品推荐:高性价比解决方案与市场热门排行榜
  • 蓝牙音频协议——安卓开发
  • 2025年11月治鼻炎产品推荐:一份详尽的清单与选择指南
  • 成为中国中小制造业企业数字营销领域的引领者 ——纪实西安动力无限的信息化赋能之路
  • SKI欧洲原装进口瓷砖:汇聚国际匠心,打造高端家居空间
  • Java NIO框架和传统的IO框架有什么区别?
  • 如何在Java中使用NIO框架?