D. Grid-00100(构造)

    技术2022-07-12  70

    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 过程类似于下面的代码 

    Processed: 0.011, SQL: 9