尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:CF351B Jeff and Furik

题解:CF351B Jeff and Furik
📅 发布时间:2026/6/19 1:53:01

题目传送门

题意

给定一个排列,有两个人轮流操作,第一个人每次可以减少一个逆序对,第二个人每次有 \(50\%\) 的概率减少一个逆序对,也有 \(50\%\) 的概率增加一个逆序对,求让这个序列不含逆序对的最小操作期望。

思路

显然,我们可以列出转移方程:

\[f_i=2+0.5\times f_i+0.5\times f_{i-2} \]

\(f_i\) 表示含有 \(i\) 个逆序对的最小操作期望。我们把两个人都操作一次设为一组,那么每组操作有 \(50\%\) 的概率使逆序对数量不变,有 \(50\%\) 的概率使逆序对的数量减少两个,所以 \(f_i=2+0.5\times f_i+0.5\times f_{i-2}\)。

最后我们可以用 \(O(n^2)\) 的复杂度求出有多少逆序对,再 \(O(1)\) 计算即可。设 \(ans\) 为逆序对数,如果 \(ans\) 是偶数,那么答案即为 \(ans\times 2\),如果是奇数,那么就是 \(ans\div 2\times 4+1\)

注意边界条件,\(f_0=0\),\(f_1=1\) 因为只有一个逆序对时,第一个人可以直接更改,所以只操作一次。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1010101;
ll n,a[N],ans,dp[N];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)if(a[i]>a[j])ans++;cout<<(ans&1)+(ans)/2*4;return 0;
}

相关新闻

  • js和vue的数据类型
  • python解释器位数与电脑的关系
  • 高级模糊测试技术:挖掘隐藏端点的漏洞挖掘实战

最新新闻

  • 2026苏州钻石回收实测|国标4C定级,全城无套路靠谱门店变现指南 - 薛定谔的梨花猫
  • C语言宽字符处理:wmemcmp、wmemcpy、wprintf核心函数详解与实战
  • 多模态大语言模型LISA
  • 2026长沙回收百达翡丽手表门店分级指南,一线标杆店铺评级,区分正规与小作坊 - 名奢变现站
  • 如何通过WeChatMsg实现微信聊天记录的本地化解析与数据主权保护?
  • 告别GUI开发噩梦:用Dear ImGui在30分钟内为C++项目添加专业界面

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号