BZOJ 4776 Usaco2017 Open Modern Art
題目大意:給定一個
n*n
的矩陣,初始都為0
,選擇一個1
到n*n
的排列,然後按照這個排列的順序,每次選擇這個矩陣的一個非空子矩形,然後塗上當前數字。 現在給定最終的矩陣,求哪些數字可能是排列的第一位。
寫輸入法寫成傻逼回來換換腦子……
開一個新的
n*n
的矩陣cnt
,初始全0
對於每個數字統計出出現的最上
u
最下d
最左l
最右r
,然後就能框出一個矩形,把cnt[u,d][l,r]
加上1
,表示有一個矩形在這個位置至少塗了一次 如果一個格子的
cnt>1
,說明有超過一個矩形在這裡塗了數字,那麼這個格子最終的數字一定不能最先塗 剩下的就是能最先塗的數字。
特殊情況:
n\neq1
且最終矩陣裡除了0
外只有一種數字,那麼這個數字肯定不能先塗,要從答案中扣除。
時間複雜度
O(n^2)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 1010
using namespace std;
int n,cnt,ans;
int a[M][M],b[M][M];
int u[M*M],d[M*M],l[M*M],r[M*M];
bool killed[M*M];
int main()
{
cin>>n;
memset(u,0x3f,sizeof u);
memset(l,0x3f,sizeof l);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j])
{
if(u[a[i][j]]==0x3f3f3f3f)
++cnt;
u[a[i][j]]=min(u[a[i][j]],i);
d[a[i][j]]=max(d[a[i][j]],i);
l[a[i][j]]=min(l[a[i][j]],j);
r[a[i][j]]=max(r[a[i][j]],j);
}
}
for(int i=1;i<=n*n;i++)
if(u[i]!=0x3f3f3f3f)
{
b[u[i]][l[i]]++;
b[d[i]+1][l[i]]--;
b[u[i]][r[i]+1]--;
b[d[i]+1][r[i]+1]++;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j] && b[i][j]>1)
killed[a[i][j]]=true;
for(int i=1;i<=n*n;i++)
if(!killed[i])
++ans;
if(cnt==1 && n!=1)
--ans;
cout<<ans<<endl;
return 0;
}
相關文章
- BZOJ2368 : Modern Art Plagiarism 樹同構
- code art
- Modern Pascal is Still in the Race (Modern Pascal 仍在競賽中)
- BZOJ 3296 [USACO2011 Open] Learning Languages:並查集並查集
- BZOJ3537 : [Usaco2014 Open]Code Breaking
- bzoj3296: [USACO2011 Open] Learning Languages(並查集)並查集
- Modern PHP(一)特性PHP
- SQL Database for Modern DevelopersSQLDatabaseDeveloper
- 1.1 Cryptography and Modern Cryptography
- Modern CMake 簡介
- Modern PHP(二)標準PHP
- 【Effective Modern C++】索引C++索引
- For the modern unique years event soiree
- BZOJ(begin) 1328 [Usaco2003 Open]Jumping Cows:貪心【波峰波谷模型】模型
- ART模式是什麼?魅藍2開啟ART模式的方法模式
- BZOJ 2442 [Usaco2011 Open]修剪草坪:單調佇列優化dp佇列優化
- Modern PHP(二)良好實踐PHP
- Testing the Modern Mobile World - AngLi
- 好書推薦--Modern PHPPHP
- An Introduction to the Basics of Modern CSS ButtonsCSS
- 【轉向JavaScript系列】AST in Modern JavaScriptJavaScriptAST
- js-template-art【一】簡述JS
- Performance and Memory Improvements in ART(Android O)ORMAndroid
- The Art of Unit Testing: with examples in C#C#
- Dalvik和ART的區別
- Android 的 ART 有何作用Android
- JINGWHALE ART 年度流行色
- BZOJ 1647 [Usaco2007 Open]Fliptile 翻格子游戲:部分列舉 位運算
- Modern:數字連線2.0報告
- BZOJ 1572 [Usaco2009 Open]工作安排Job:貪心 + 優先佇列【先放再更新】佇列
- Jvm、Dalvik和Art的區別JVM
- 《The Art of Scalability》書名意見徵集
- <<Modern CMake>> 翻譯 2. CMake 基礎
- <<Modern CMake>> 翻譯 2.2 CMake 程式設計程式設計
- Modern CSV for mac CSV檔案編輯器Mac
- 現代 CSS 解決方案:Modern CSS ResetCSS
- AI界的State of the Art都在這裡了AI
- Android上的ART虛擬機器Android虛擬機