2022.3.15筆記總結
阿新 • • 發佈:2022-03-15
code
#include<iostream> #include<algorithm> using namespace std; const int N = 100010; typedef long long ll; ll res1,res2; int row[N],col[N],tmp[N]; int main() { int n,m,c; cin>>n>>m>>c; //開始分別記錄行列 for(int i=0,x,y;i<c;i++) { cin>>x>>y; row[x]++; col[y]++; } //計算行的最小交換次數 if(c%n==0) { //求平均值 int rowi = c/n; int x1; //從1開始,x,y都是大於1的 for(int i = 2 ; i <= n ; i++) tmp[i] = tmp[i-1] + rowi -row[i]; //排序 sort(tmp+1,tmp+n+1); x1 = tmp[(n+1)/2]; //求距離和 for(int i = 1 ; i <= n ; i++) res1 += abs(x1 - tmp[i]); } //計算列的最小交換次數 if(c%m==0) { //求平均值 int coli = c/m; int x1=0; //從1開始,x,y都是大於1的 for(int i = 1 ; i <= m ; i++) tmp[i] = tmp[i-1] + coli -col[i]; //排序 sort(tmp+1,tmp+m+1); x1 = tmp[(m+1)/2]; //求距離和 for(int i = 1 ; i <= m ; i++) res2 += abs(x1 - tmp[i]); } if(res1&&res2) cout<<"both "<<res1+res2; else if(res1) cout<<"row "<<res1; else if(res2) cout<<"column "<<res2; else cout<<"impossible"; return 0; }
quetion
七夕祭 題目 提交記錄 討論 題解 視訊講解 七夕節因牛郎織女的傳說而被扣上了「情人節」的帽子。 於是 TYVJ 今年舉辦了一次線下七夕祭。 Vani 同學今年成功邀請到了 cl 同學陪他來共度七夕,於是他們決定去 TYVJ 七夕祭遊玩。 TYVJ 七夕祭和 11 區的夏祭的形式很像。 矩形的祭典會場由 N 排 M 列共計 N×M 個攤點組成。 雖然攤點種類繁多,不過 cl 只對其中的一部分攤點感興趣,比如章魚燒、蘋果糖、棉花糖、射的屋……什麼的。 Vani 預先聯絡了七夕祭的負責人 zhq,希望能夠通過恰當地佈置會場,使得各行中 cl 感興趣的攤點數一樣多,並且各列中 cl 感興趣的攤點數也一樣多。 不過 zhq 告訴 Vani,攤點已經隨意佈置完畢了,如果想滿足 cl 的要求,唯一的調整方式就是交換兩個相鄰的攤點。 兩個攤點相鄰,當且僅當他們處在同一行或者同一列的相鄰位置上。 由於 zhq 率領的 TYVJ 開發小組成功地扭曲了空間,每一行或每一列的第一個位置和最後一個位置也算作相鄰。 現在 Vani 想知道他的兩個要求最多能滿足多少個。 在此前提下,至少需要交換多少次攤點。 輸入格式 第一行包含三個整數 N 和 M 和 T,T 表示 cl 對多少個攤點感興趣。 接下來 T 行,每行兩個整數 x,y,表示 cl 對處在第 x 行第 y 列的攤點感興趣。 輸出格式 首先輸出一個字串。 如果能滿足 Vani 的全部兩個要求,輸出 both; 如果通過調整隻能使得各行中 cl 感興趣的攤點數一樣多,輸出 row; 如果只能使各列中 cl 感興趣的攤點數一樣多,輸出 column; 如果均不能滿足,輸出 impossible。 如果輸出的字串不是 impossible, 接下來輸出最小交換次數,與字串之間用一個空格隔開。 資料範圍 1≤N,M≤100000, 0≤T≤min(N∗M,100000), 1≤x≤N, 1≤y≤M 輸入樣例: 2 3 4 1 3 2 1 2 2 2 3 輸出樣例: row 1