第一问置换群裸题。

第二问单独考虑某个循环,任意交换两个元素,稍微画一下就会发现,把该循环拆成了2个,剩下所需的交换次数减少了1,也就是说,第一步我们任意交换,都能够保证交换次数最少。于是一个循环的答案就是n*(n-1)/2,把所有的加起来即可。

进而我们发现,在剩下的步骤里面,我们只需在拆出来的两个循环里任意交换即可。

#include<cstdio>
using namespace std;
#define N 50001
bool vis[N];
int n,op,a[N],sumv,sum2;
int main()
{
scanf("%d%d",&n,&op);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
for(int i=1;i<=n;++i)
if(!vis[i])
{
vis[i]=1;
int cnt=1;
int U=a[i];
while(U!=i)
{
vis[U]=1;
U=a[U];
++cnt;
}
sumv+=(cnt-1);
sum2+=(cnt*(cnt-1)>>1);
}
if(op==1)
printf("%d\n",sumv);
else
printf("%d\n%d\n",sumv,sum2);
return 0;
}

最新文章

  1. slidedoor滑动门特效
  2. 对Android开发者有益的40条优化建议
  3. 说说WeakReference弱引用
  4. circle and bar
  5. java正则表达式之java小爬虫
  6. android应用程序如何调用支付宝接口(转)
  7. rails使用 rake db:migrate 提示 Migrations are pending; run &#39;rake db:migrate RAILS_ENV=development&#39; to resolve this issue.
  8. The 6th Zhejiang Provincial Collegiate Programming Contest-&gt;ProblemK:K-Nice
  9. POJ 2955 Brackets 区间合并
  10. Apache Rewrite url重定向功能的简单配置
  11. 【Java】数据库连接池技术
  12. Neutron/ML2学习
  13. [Immutable.js] Lightning Fast Immutable.js Equality Checks with Hash Codes
  14. 平方根的C语言实现(二) —— 手算平方根的原理
  15. QT 中setUserData和setProperty问题
  16. [SDOI 2008]仪仗队
  17. Kafka简介及使用PHP处理Kafka消息
  18. Windows server 2012 install .net core sdk 2.2.103
  19. nginx配置tp5的pathinfo模式并隐藏后台入口文件
  20. QT 应用程序测试

热门文章

  1. taotao单点登录的用户Controller、service(注册、登录、验证是否登录方法)
  2. yaf的安装
  3. 报错!!!!!!!!!!!org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;springSessionRepositoryFilter&#39; is defined
  4. 【Mysql优化】MySQL Profiling 的使用
  5. 转:Python网页解析:BeautifulSoup vs lxml.html
  6. python基础===正则表达式(转)
  7. css3带你实现酷炫效果
  8. H5智能表单
  9. UI变化之动画效果
  10. Centos下yum update与yum upgrade的区别