在平面上以圓周等分排列著n個帶標號(標號為1~n)的點,你需要計算有多少個三元組(a,b,c),滿足a
分布順序為順時針的意思是,從標號為a的點出發,順時針在圓上遍歷一圈,標號為b的點先遍歷到,標號為c的點後遍歷到(a
第一行乙個整數n表示點數。
第二行n個整數表示乙個1~n的排列,按順時針順序描述圓上點的標號。
僅一行乙個整數表示答案
約定20%的資料:n≤100n≤100
60%的資料:n≤5000n≤5000
100%的資料:3≤n≤2∗1053≤n≤2∗105
solution
好題,xiaoyao巨
顯然點的大小關係應為123 231 312
123很好統計
231=**1-321 這兩個也很好統計
312=3**-321 這也很好統計
就結束了
#include#include#include#include#include#include#define maxn 200005
using namespace std;
int n,s[maxn],a1[maxn],a2[maxn],b1[maxn],b2[maxn];
int tr[maxn];
void add(int i)
int ask(int i)
int main()
memset(tr,0,sizeof tr);
for(int i=n;i>=1;i--)
long long ans=0,tmp;
for(int i=1;i<=n;i++)
cout
}
朗格拉日計數 counter
在平面上以圓周等分排列著n個帶標號 標號為1 n 的點,你需要計算有多少個三元組 a,b,c 滿足a 分布順序為順時針的意思是,從標號為a的點出發,順時針在圓上遍歷一圈,標號為b的點先遍歷到,標號為c的點後遍歷到 a 第一行乙個整數n表示點數。第二行n個整數表示乙個1 n的排列,按順時針順序描述圓上...
Foreign 朗格拉日計數 暴力
僅一行乙個整數表示答案。將乙個排列圍成乙個環,每個點有乙個值a i 若順時針三個點a b c 滿足 a a 我們不考慮環,從序列考慮,顯然可以統計的就是類似這種 123 231 312這個樣子的。我們考慮容斥,顯然123這種是可以直接計算的,231就是xx1 321,312就是3xx 321。顯然我...
Python學習 Counter 計數工具
counter是實現的dict的乙個子類,可以用來方便地計數。舉個計數的例子,需要統計乙個檔案中,每個單詞出現的次數。實現方法如下 普通青年 d with open etc passwd as f for line in f for word in line.strip split if word ...