題目傳送門
現在看來熊貓杯的j題原來是個容斥套路題,按照值域排序後根據值域劃分方塊數,列舉子集容斥計算即可。
#include#includeusing namespace std;
const int p = 1e9 + 7;
const int n = 1100;
struct matrix
int cal()
void read()
bool operator <(const matrix &ret)
void operator |(const matrix &ret)
}mat[15];
int h, w, n, m;
int s[n], u[n], num[n];
int qpow(int x, int k)
return ans;
}void solve();
for(int t = i, j = 1; t; t >>= 1, ++j)
if(tt.check()) s[i] = tt.cal();
}// 求並集
for(int i = 1, up = 1 << n; i < up; ++i)
}// 劃分值域容斥計算
// now是目前列舉的集合,pre是之前列舉過的集合
int now = 0, pre = 0, ans = 1;
for(int i = 1; i <= n; ++i)
ans = 1ll * ans * sum % p;
pre |= now;
now = 0;
}printf("%d\n", 1ll * ans * qpow(m, h * w - u[(1 << n) - 1]) % p);
}void clr()
int main()
}
bzoj 5010 Fjoi2017 矩陣填數
給定乙個 h w 的矩陣,矩陣的行編號從上到下依次為 1.h,列編號從左到右依次1.w。在這個矩陣中你需要在每 個格仔中填入 1.m 中的某個數。給這個矩陣填數的時候有一些限制,給定 n 個該矩陣的子矩陣,以及該子矩陣的 最大值 v,要求你所填的方案滿足該子矩陣的最大值為 v。現在,你的任務是求出有...
bzoj5010 FJOI2017 矩陣填數
給定乙個 h w 的矩陣,矩陣的行編號從上到下依次為 1.h,列編號從左到右依次1.w。在這個矩陣中你需要在每 個格仔中填入 1.m 中的某個數。給這個矩陣填數的時候有一些限制,給定 n 個該矩陣的子矩陣,以及該子矩陣的 最大值 v,要求你所填的方案滿足該子矩陣的最大值為 v。現在,你的任務是求出有...
hihcoder 1480 矩陣填數
1.題目鏈結。小hi在玩乙個遊戲,他需要把1,2,3,nm填入乙個n行m列的矩陣中,使得矩陣每一行從左到右 每一列從上到下都是遞增的。2.這是楊氏矩陣的乙個性質,其實這個題目的本質就是在求1 nm這nm個數字,可以構造出多少個n m楊氏矩陣。首先對於楊氏矩陣,n個數,可以構成的楊氏矩陣的數量,在不加...