之前不知道為什麼,我yy了乙個n^2的做法,但是沒能寫出來。。sad
然後看了題解才發現這題好神。。
為什麼一定要照著題意找兩個點然後算呢?這就是問題所在。。。
我們可以觀察每乙個點,發現他的貢獻恰好是左邊比他小的數和右邊比他大的數組成的順序對,那麼一共有l*r對,所以答案就加上l*r
這種題的思想很好啊。。以後做這些題可以用個體來想整體,orz
(還有這題他們說lgn使用樹狀陣列維護l和r,怎麼維護啊qaq
#include #include #include #include #include #include #include using namespace std;#define rep(i, n) for(int i=0; i<(n); ++i)
#define for1(i,a,n) for(int i=(a);i<=(n);++i)
#define for2(i,a,n) for(int i=(a);i<(n);++i)
#define for3(i,a,n) for(int i=(a);i>=(n);--i)
#define for4(i,a,n) for(int i=(a);i>(n);--i)
#define cc(i,a) memset(i,a,sizeof(i))
#define read(a) a=getint()
#define print(a) printf("%d", a)
#define dbg(x) cout << (#x) << " = " << (x) << endl
#define printarr2(a, b, c) for1(_, 1, b)
#define printarr1(a, b) for1(_, 1, b) cout << a[_] << '\t'; cout << endl
inline const int getint()
inline const int max(const int &a, const int &b)
inline const int min(const int &a, const int &b)
printf("%lld\n", ans);
return 0;
}
給定乙個序列a,a中任意兩個元素都不等。如果i第一行乙個數n,表示序列a中元素的個數。
第二行n個數,第i個數表示a[i]。
輸出乙個數,序列a中所有順序對的值的和。
51 5 3 4 2
1
每個測試點2s。
對於100%的資料,2<=n<=5000,a[i]<=10^9。
sql排序,對欄位指定值排序順序
我們知道在sql sever中排序主要兩種,順序,降序。問題簡述如下 字段值 1 4 8 6,公升序是1 4 6 8,降序是 8 6 4 1,怎麼讓他排成4 8 6 1。語句1 selectid from table where id in 1,4,8,6 order by charindex co...
對左值和右值的理解
來自 今天在csdn上看到乙個關於左值和右值討論貼,順便說下自己的理解 左值 必須要有明確的名字來代表這個值 右值 如果沒有明確的名字來代表這個值,那麼這個就是只能是右值 舉例 int a 1 a,a 2,a都可以是左值 而1,a 就不能作為左值,只能是右值 關於a a a 是先取a的乙個副本,然後...
pandas對缺失值的處理
pandas對缺失值的處理 判斷是否為空 刪除or丟棄 填充空值 pandas使用這些函式處理缺失值 isnull 和 notnull 檢驗是否是空值,可用於series和df dropna 丟棄 刪除缺失值 axis 刪除行還是列,default 0 how 如果等於any則任何值為空都刪除,如果...