簽到題,**可真短。
題意:給n個數,對於每個連續子串行求區間內不同數字的個數的和。
做法:一開始列舉每個區間的右端點i,判斷每個數字在區間左端點為1~i這個範圍內對右端點i的貢獻,然後累加答案,然後超時了。
之後想到,每次變化範圍只會變乙個數字,只會改變乙個數字的貢獻,所以開了乙個sum記錄所有數字的貢獻就好了。
#includeusingview codenamespace
std;
const
int maxn=1e5+10
;#define ll long long
intmaxx[maxn];
intmain()
printf(
"%lld
",ans);
}
題意:給個m(m為2的冪次方),構造m*m的矩陣,使每個矩陣的任意不同的兩行滿足:一 一對應列的元素相乘在相加,和為0;
思路:對於乙個為2*2的矩陣,構成4*4的矩陣,只需將2*2矩陣放在第一象限,第二和第三象限,第四象限反轉值,這樣可以保證,第一第二象限值對應相等,第三和第四互不相等,同時滿足,任意倆行相同個數等於不相同的個數。
#includeusingview codenamespace
std;
int a[5000][5000
];int
main()
}for(int i=1; i<=m; i++)
}
簽到題
#includeusingview codenamespace
std;
const
int maxn=1e5+10
;char
s[maxn];
intmain()}}
printf("%d
",ans);
}
2019牛客多校第八場
求所有極大全一矩陣的個數。created by keane on 2019 8 10.include using namespace std typedef long long ll const int n 3050 int a n n int n,m char s n 每個1向下延伸 int dw...
2019 牛客 多校賽 第八場
乙個區間的貢獻為這個區間的不同數字的個數,求所有子區間的貢獻和 反向思考,計算乙個數字在子區間 現的次數,當區間的左端點在這個數字上一次出現位置和當前位置之間,並且右端點在當前位置之後,這個數字都產生了貢獻,所以當前位置的數字的貢獻就是左端點數量 右端點數量,然後遍歷一遍。include defin...
2019牛客多校第八場題解 A
a 給你乙個n m的01矩陣,求出所有最大全1矩陣的數量,保證任意兩個矩陣不相互包含。考慮單調棧求最大矩形面積的做法。對於矩陣 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 我們先預處理h i j 為以該行為底的最大高度。那麼我們只要知道這個矩形最左邊的能夠到達的位...