先特判掉-1,-2
如何?? 對a和b分別求一下字首和,如果sum[i]==sum[i+k]則說明這個區間(i-k)和為0
考慮修改其實就是把a的字首和相鄰兩個元素交換順序
那麼問題轉化為把1-n的排列a通過最少的交換次數得到給定的排列b,求最少方案數
這個問題用樹狀陣列求(或歸併排序)
#include#include#include#includeusing namespace std;
typedef long long ll;
ll read()
while(ch>='0'&&ch<='9')
return x*f;
}const ll n=1e5+100;
ll a[n],b[n],s1[n],s2[n],s3[n],s4[n];
ll x[n],y[n];
ll c[n];
ll lb(ll x)
void modify(ll x)
}ll query(ll x)
return ret;
}int main()
for(i=1;i<=n;i++)
sort(s1+1,s1+1+n);
sort(s2+1,s2+1+n);
bool flag1=0;
bool flag2=0;
for(i=1;i<=n;i++)
if(s1[i]!=s2[i])
if(flag1&&flag2)
}if(flag1)
if(flag2)
for(i=1;i<=n;i++)
for(i=1;i<=n;i++)
for(i=1;i<=n;i++)
for(i=1;i<=n;i++)
ll cnt=0;
for(i=1;i<=n;i++)
cout<
return 0;
}
使用t2t來編寫文件
txt2tags 示例 zh sample zh.html 看這個就能很快熟悉相關語法了 教程 zh manpage zh.html txt2tags學習 bluefrog bluefrog.wu gmail.com date m d y encoding utf 8 target html 一級標...
7 24校內交流賽 T1 T2
乙個腦洞很大的題,將輸入的所有數異或起來輸出就好了 話說我為什麼這麼喜歡用異或啊 結論題 當某個字串長度恰巧為3 k 1時,從它往下的第3 k 1行恰好只決定於這個字串的左右兩個端點的值 includeusing namespace std inline intread intn,l char a ...
NOIPD2T2 寶藏 題解
填坑,史前巨坑。題意 對於一張圖,確定乙個點為根,構建乙個生成樹。求代價最小值。代價的定義 樹中每一條邊的權值與較淺點深度的乘積 之和。考場上沒有想清楚就草草碼了乙個prim然後交了,但是因為你代價和深度有關,所以貪心地prim是錯誤的。因為 n 很小,這應當引導我們想到狀壓。套路 答案與深度有關,...