Codeforces 433 C Ryouko's Memory Note
2014-07-07 22:47
218 查看
存下每个数旁边的数字
将 i 旁边的数中从小到大排序取中位数
将 i 替换 中位数
算翻的页数
求出 ans值与mi比较大小
将 i 旁边的数中从小到大排序取中位数
将 i 替换 中位数
算翻的页数
求出 ans值与mi比较大小
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <vector> using namespace std; const int N = 100000+10; vector<int>ber ; __int64 minn(__int64 a,__int64 b) {return a<b?a:b;} int main() { int n,m,i,j; __int64 sum=0; int a ; scanf("%I64d%I64d",&n,&m); for(i=0;i<m;i++){ scanf("%I64d",&a[i]); } for(i=1;i<m;i++){ sum+=abs(a[i]-a[i-1]); if(a[i]!=a[i-1]) { ber[a[i]].push_back(a[i-1]); ber[a[i-1]].push_back(a[i]); } } __int64 mi=sum; for(i=1;i<=n;i++) { vector<int> x=ber[i]; if(x.size()==0) continue; sort(x.begin(),x.end()); int po=x[x.size()/2]; __int64 ans=sum; for(j=0;j<x.size();j++) { ans+=abs(po-x[j])-abs(i-x[j]); } mi=minn(mi,ans); } printf("%I64d\n",mi); return 0; }
相关文章推荐
- Codeforces 433 C. Ryouko's Memory Note
- Codeforces 433 C. Ryouko's Memory Note
- Codeforces 433 C. Ryouko's Memory Note
- Codeforces 433 C Ryouko's Memory Note
- Codeforces Round #248 (Div. 1)——Ryouko's Memory Note
- Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note
- CF 248 C. Ryouko's Memory Note
- Codeforces Round #248 (Div. 2) C.Ryouko's Memory Note
- CF 433C Ryouko's Memory Note
- Codeforces RoundC. Ryouko's Memory Note
- C. Ryouko's Memory Note
- Codeforces Round #248 (Div. 2) C - Ryouko's Memory Note
- Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note (vector 替换)
- Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note
- Ryouko's Memory Note
- codeforces #433C Ryouko's Memory Note
- Ryouko's Memory Note(书本翻页)
- Codeforces Round #248 (Div. 1)——Ryouko's Memory Note
- codeforces 434A A. Ryouko's Memory Note(数学)
- CodeForces 433C Ryouko's Memory Note-暴力