D. Grid-00100
就是構造一個方格,方格內每一個數字 1 對 行/列 的貢獻值爲 1
求 (val_row_max-val_row_min)² + (val_col_max-val_col_min)² 的最小值
如上圖所示,我們先將紅色格子看成白色的:
當 k%n==0 時,及每一行都放 k/n 個 ‘1’ 這樣答案則爲 0
那麼當 k%n 不爲 0 時,這時候就需要關注紅色格子了:
我們將前 k%n 的餘數行多塗 1 個 ‘1’,其餘的行仍然塗 k/n 個 ‘1’,這樣(列的最大值-列的最小值)也是 1,所以答案爲 1+1=2
const int N=300+5;
int n,m,t;
int i,j,k;
int a[N][N];
void print(int ans)
{
cout<<ans<<endl;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
cout<<a[i][j];
}
cout<<endl;
}
}
int main()
{
IOS;
rush(){
ms(a,0);
cin>>n>>k;
int ans,res=0,len=k/n;
if(k%n==0) ans=0;
else ans=2,res=k%n;
for(i=0;i<res;i++){ //置 1
for(j=i;j<=i+len;j++){
a[i][j%(n)]=1;
}
}
for(i=res;i<n;i++){
for(j=i;j<=i+len-1;j++){
a[i][j%(n)]=1;
}
}
print(ans);
}
//PAUSE;
return 0;
}
置 1 過程類似於下面的代碼