D. Grid-00100(構造)

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 過程類似於下面的代碼 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章