題目:
分析:置換群.
首先理解題意:b1,b2,..bn是無限制的,並非連續,並非遞增,隨便選。於是可以形成若干個環,乙個環的花費是這個環包含的元素個數。
所以,最小花費就是多少個人不在應在的位置上。
再,多少個人不在應在的位置上=n-最多多少人在應在的位置上。
然後,這個可以用偏移量求,求偏移量中包含元素最多的,這個就是最多多少人在應在的位置上。
用n減去這個值就是答案
因為是乙個環沒有方向,所以初始狀態1..n和n..1都要算一遍。
**:
#include
#include
#include
using
namespace
std;
const
int tmax=1000005;
int n,m,w[tmax],v[tmax],l[tmax],r[tmax],tmaxw;
long
long
int s,sumn[tmax],sumv[tmax];
long
long
int check(int num)
for(i=1;i<=m;i++)
ans+=(sumn[r[i]]-sumn[l[i]-1])*(sumv[r[i]]-sumv[l[i]-1]);
return s-ans;
}void work()
printf("%lld",min(abs(check(l)),check(l+1)));
return ;
}int main()
for(i=1;i<=m;i++)
scanf("%d%d",&l[i],&r[i]);
work();
return
0;}
Noip2005 篝火晚會
佳佳剛進高中,在軍訓的時候,由於佳佳吃苦耐勞,很快得到了教官的賞識,成為了 小教官 在軍訓結束的那天晚上,佳佳被命令組織同學們進行篝火晚會。一共有nnn個同學,編號從111到nnn。一開始,同學們按照1,2,n1,2,n1,2,n的順序坐成一圈,而實際上每個人都有兩個最希望相鄰的同學。如何下命令調整...
NOIP 2005 篝火晚會
額 對這組題感興趣的具體的解題報告可以戳戳這裡 問題描述 佳佳剛進高中,在軍訓的時候,由於佳佳吃苦耐勞,很快得到了教官的賞識,成為了 小教官 在軍訓結束的那天晚上,佳佳被命令組織同學們進行篝火晚會。一共有n個同學,編號從1到n。一開始,同學們按照1,2,n的順序坐成一圈,而實際上每個人都有兩個最希望...
NOIp2005 篝火晚會
luogu1053 首先要發現乙個事實 對於每個不再正確位置上的人,我們都要花費1的代價來讓他正確 然而我沒有發現 todo 證明這個事實。然後就可以轉化問題為 最多有多少個人不用動。那麼那些人不用動呢?就是那些與目標位置距離相等的人的集合,即斷環為鏈之後,不用右移就在目標位置的人 右移一次到達目標...