CodeForces 645 B.Mischievous Mess Makers(水~)
2017-04-28 14:27
323 查看
Description
1~n按顺序排好组成一个序列,每次操作可以交换任意两个数位置,问经过不超过k次操作得到的新序列的逆序对数最大值
Input
两个整数n和k(1<=n,k<=1e5)
Output
输出移动k个数后得到新序列的最大逆序对数
Sample Input
5 2
Sample Output
10
Solution
至多经过n/2次交换就可以把序列变成n~1,所以首先令k=min(k,n/2),之后第i次把第i大的数和第i小的数交换,产生2*(n-2*i)+1个逆序对
Code
1~n按顺序排好组成一个序列,每次操作可以交换任意两个数位置,问经过不超过k次操作得到的新序列的逆序对数最大值
Input
两个整数n和k(1<=n,k<=1e5)
Output
输出移动k个数后得到新序列的最大逆序对数
Sample Input
5 2
Sample Output
10
Solution
至多经过n/2次交换就可以把序列变成n~1,所以首先令k=min(k,n/2),之后第i次把第i大的数和第i小的数交换,产生2*(n-2*i)+1个逆序对
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 1111 int main() { int n,k; while(~scanf("%d%d",&n,&k)) { ll ans=0; k=min(k,n/2); for(int i=1;i<=k;i++)ans+=2*(n-2*i)+1; printf("%I64d\n",ans); } return 0; }
相关文章推荐
- codeforces 655B B. Mischievous Mess Makers(贪心)
- 【CROC 2016 - Elimination RoundB】【贪心】Mischievous Mess Makers 全排列1到n交换k次最多逆序数
- CROC 2016 - Elimination Round (Rated Unofficial Edition) B. Mischievous Mess Makers 贪心
- CROC 2016 - Elimination Round (Rated Unofficial Edition) B. Mischievous Mess Makers 贪心
- (CROC 2016 - Elimination Round (Rated Unofficial Edition))B. Mischievous Mess Makers(贪心)
- 题解:Mischievous Mess Makers
- CodeForces 645 A.Amity Assessment(水~)
- codeforces 645 E. Intellectual Inquiry
- CodeForces 645 C.Enduring Exodus(水~)
- CodeForces 645 D.Robot Rapping Results Report(二分+dfs)
- codeforces 645 D. Robot Rapping Results Report 二分+拓扑排序
- codeforces 645 D Robot Rapping Results Report 【树形dp】
- CodeForces 645 E.Intellectual Inquiry(dp+贪心)
- codeforces 490D Chocolate 数论
- Codeforces 617A-Elephant
- Codeforces-448【A数学函数ceil】【B思维】【D二分】
- Codeforces 669D Little Artem and Dance【思维】好题!好题!
- Codeforces 834C The Meaningless Game【思维】
- CodeForces 364 A.Matrix(组合数学)
- CodeForces 487A Fight the Monster