【usaco2017 March Platinum】Modern Art
来源:互联网 发布:淘宝神兽金刚玩具 编辑:程序博客网 时间:2024/06/01 09:32
Description
一个N*N(N<=1000)的矩阵,现在要使用编号1~N*N的颜色,对矩阵涂色(不涂色颜色为0)
涂色可以选定一个子矩阵,将矩阵内的颜色覆盖
给出涂色完毕后的矩形,求有多少种颜色可能第一个使用
Analysis
将同种颜色的点用最小的矩阵框起来
显然矩阵可能会相交,那么相交部分的点上的颜色(该位置最后一次被涂上的颜色)不可能被第一个使用
特判全局只有一种颜色的情况
Code
#include<cstdio>#include<ctime>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)#define efo(i,v) for(int i=last[v];i;i=next[i])using namespace std;const int N=1005,M=N*N;int n,ans,b[M],map[N][N],f[N][N];bool bz[M],p[M];struct node{ int x1,y1,x2,y2;}a[M];int main(){ freopen("art.in","r",stdin); freopen("art.out","w",stdout); scanf("%d",&n);ans=n*n; fo(i,1,n*n) a[i].x1=a[i].y1=N,a[i].x2=a[i].y2=0; int co; fo(i,1,n) fo(j,1,n) { scanf("%d",&co);p[co]=1; map[i][j]=co; a[co].x1=min(a[co].x1,i),a[co].y1=min(a[co].y1,j); a[co].x2=max(a[co].x2,i),a[co].y2=max(a[co].y2,j); } fo(i,1,n*n) if(p[i]) b[++b[0]]=i; fo(i,1,b[0]) { int co=b[i]; f[a[co].x1][a[co].y1]++; f[a[co].x1][a[co].y2+1]--; f[a[co].x2+1][a[co].y1]--; f[a[co].x2+1][a[co].y2+1]++; } fo(i,1,n) fo(j,1,n) f[i][j]+=f[i-1][j]+f[i][j-1]-f[i-1][j-1]; fo(i,1,n) fo(j,1,n) if(f[i][j]>1) bz[map[i][j]]=1; fo(i,1,n*n) if(bz[i]) ans--; if(b[0]==1 && n>1) ans--; printf("%d",ans); return 0;}
阅读全文
0 0
- 【usaco2017 March Platinum】Modern Art
- bzoj4776[Usaco2017 Open]Modern Art
- [Usaco2017 Open]Modern Art 2
- JZOJ 5111. 【usaco2017_Mar Platinum】Modern Art
- BZOJ 4776 Usaco2017 Open Modern Art
- BZOJ 4780 Usaco2017 Open Modern Art 2
- BZOJ 4776([Usaco2017 Open]Modern Art-想法题)
- bzoj 4780: [Usaco2017 Open]Modern Art 2 (模拟)
- bzoj 4776: [Usaco2017 Open]Modern Art 二维差分
- Platinum
- Platinum积累
- ART
- ART
- March 2005
- March 2006
- March 2007
- March 2008
- March 2009
- 0519 G2n#W2B-B Vicious Keyboard
- 前缀树的JavaScript实现
- c++第六次实验项目3
- 异步I/O(1)使用设备内核对象
- 跨平台获取可执行文件的目录
- 【usaco2017 March Platinum】Modern Art
- 汇编语言 编写程序,如果输入的是大写字母,则输出对应的小写字母;如果输入的是小写字母,则输出对应的大写字母;如果输入的是数字,原样输出;按回车结束
- 贪心法--背包问题(不是0/1背包问题)
- eclipse给JVM设置参数后程序启动失败
- LINUX编译错误总结
- POJ 2115 C Looooops——拓展欧几里得算法
- 汇编语言 将字符串中大写转换为小写 小写转换为大写 数字不变
- 57. Insert Interval
- 【转】共享文件:硬链接和软链接