ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF1720E. Misha and Paintings

2022-09-01 23:00:59  阅读:271  来源: 互联网

标签:CF1720E 颜色 Paintings 斜线 sum Misha 正方形 左上 矩形


题意

给出n*n的矩阵,ai,j∈[1,n*n],现在要矩形覆盖若干次,每次把一个正方形的ai,j改为x,求最少的次数使得最后有k种不同的数

n<=500

题解

设sum为初始不同的数,若sum<k则显然只能一个个加,ans=k-sum

若sum>k,则有结论:ans<=2

证明:可以从(1,1)开始往右下扩展新颜色的矩形1,直到最后一次sum>k为止,右下角为(x,x)

然后从(x+1,x+1)向左上扩展矩形2,颜色和矩形1相同

设此时的种数为s,若把颜色均改为和之前出现的则为s-1,若把矩形2改成不同颜色的则为s+1

故可以取到[s-1,s+1]

因为每次扩展时s最多减2,故从>s跳到<s的过程中一定会经过[s-1,s+1],则必定有解


现在问题是怎么判断ans=1,3.5s+256MB

假设当前确定了一个矩形,则将其向左上或右下扩展影响不大

所以按斜线y-x=k来处理,把每种颜色所在的极大矩形提出,找到端点在斜线y-x=k上的极小正方形,则所有包含这个正方形的都可以除掉一种颜色

用f[i,j]记当前斜线,覆盖左上i号点右下j号点后除掉的颜色,二维前缀和解决

时间是斜线数n*(颜色数n^2+前缀和n^2),即O(n^3)

标签:CF1720E,颜色,Paintings,斜线,sum,Misha,正方形,左上,矩形
来源: https://www.cnblogs.com/gmh77/p/16648132.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有