题目链接:http://acm.whu.edu.cn/land/problem/detail?problem_id=1552

解题报告:题目意思应该很清楚,就是有n个人,分别属于7个班级,然后他们坐成一排,现在要通过相邻的两个人做交换,使得所有同一个班的人都坐到一起,问这个交换的次数最少是多少?

比赛的时候第一个就是看这题,因为题意简单,但是看完了一点想法都没有,所以果断换了一题,看了题解才知道怎么做。

首先如果我们知道最后的排列是怎么样的,那么求一共要交换多少次就只要求初始状态跟最后的排列的逆序对的个数就可以了,然后因为班级最多只有7个,所以可以枚举7个班级的全排列,数据量也不大,一共才5040种情况。然后枚举出排列之后就是求有多少个逆序对了,对于这个有一个很巧妙的做法,利用到了这个题目中班级数少的特点,就是首先定义一个

f[i][j]二维数组,然后将初始的排列扫一遍,f[i][j] 的含义是所有排在   j 班同学前面的   i 班同学的人数,然后在求逆序对的时候只要班级的平方次计算就可以很快得出逆序对的个数,这个原理我想了好久,一开始不懂为什么这样可以,唉,还是太菜了啊。。。慢慢领悟吧

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<cmath>
 6 #include<deque>
 7 #include<map>
 8 #include<queue>
 9 #include<cstdlib>
10 using namespace std;
11 typedef long long INT;
12 const int maxn = 100000;
13 INT f[10][10],ans,visit[10],que[maxn+5];
14 INT judge(int *A)
15 {
16     INT sum = 0;
17     for(int i = 1;i <= 7;++i)
18     for(int j = i+1;j <= 7;++j)
19     sum += f[A[j]][A[i]];
20     return sum;
21 }
22 void dfs(int* A,int deep)
23 {
24     if(deep > 7)
25     {
26         ans = min(ans,judge(A));
27     }
28     for(int i = 1;i <= 7;++i)
29     if(!visit[i])
30     {
31         visit[i] = 1;
32         A[deep] = i;
33         dfs(A,deep+1);
34         visit[i] = 0;
35     }
36 }
37
38 int main()
39 {
40     int n,A[10];
41
42     while(scanf("%d",&n)!=EOF)
43     {
44         for(int i = 0;i < n;++i)
45         scanf("%lld",&que[i]);
46         INT e[10];
47         memset(e,0,sizeof(e));
48         memset(f,0,sizeof(f));
49         for(int i = 0;i < n;++i)
50         {
51             for(int j = 1;j <= 7;++j)
52             f[j][que[i]] += e[j];
53             e[que[i]]++;
54         }
55         for(int i = 1;i <= 7;++i)
56         f[i][i] = 0;
57         ans = 0x7ffffffffff;
58         memset(visit,0,sizeof(visit));
59         dfs(A,1);
60         printf("%lld\n",ans);
61     }
62     return 0;
63 }

View Code

转载于:https://www.cnblogs.com/xiaxiaosheng/p/3683898.html

华中邀请赛现场赛F题 Seats相关推荐

  1. HDU 4126 Genghis Khan the Conqueror MST + 树形DP 2011年福州现场赛F题

    题目大意: 就是现在给出一个图, N个点, M条边, N <= 3000, M <= N*N, 但是没有重边, 每条边都有一个权值, 图中没有自环 现在给出Q次询问, 每次询问表示如果更改 ...

  2. 2023美赛F题全部代码+数据+结果 数学建模

    2023年美赛F题全部思路 数据代码都已完成 全部内容见链接:https://www.jdmm.cc/file/2708700/ 1.根据文献选的GGDP的指标,发现GGDP与水资源等有关,由此可以筛 ...

  3. 2020电赛F题回顾——简易无接触温度测量与身份识别装置

    2020电赛F题回顾--简易无接触温度测量与身份识别装置 第一次参加电赛,已经大三了,这也有可能是我的最后一次,不禁感慨时间过得真快.在实验室一起奋斗的夜晚既辛苦又幸福,感谢陪伴在我身边一起做电赛的同 ...

  4. 2021年美赛F题总结

    2021年美赛F题总结 肝到了早上六点20分才算是把F题的论文交上去了呜呜,最后把论文发给官方的时候3个人紧张死了,检查了7,8遍就怕出一点错,官方不接收我们的文章,那个点已经神志不清了,又在官网不停 ...

  5. 2021电赛F题视觉教程+代码免费开源

    2021电赛F题视觉教程+代码免费开源 最近好多要电赛题的源码,其他csdn营销号下载都需要会员或钱,正好最近课设又要做一遍电赛小车题,哥们先把代码开源了,饿死营销号 电赛宝藏链接: 四天三夜,那布满 ...

  6. 2021美赛F题解题思路

    新队伍,大家都差不多是小白,借鉴的博客:(19条消息) 2021年美赛F题总结_wzu_cza123的博客-CSDN博客_美赛2021f题 一.数据的查找和处理 二.TOPSIS 1.TOPSIS熵权 ...

  7. 2021电赛F题-智能送药小车-国一

    2021电赛F题-智能送药小车-国一 B站视频链接:https://www.bilibili.com/video/BV1u44y1e7qk/ (这大概是b站第一个双车视频吧,嘿嘿

  8. 关于2022年TI省赛--F题信号调制度测量装置

    关于2022年TI省赛--F题信号调制度测量装置 赛题分析 理论分析 AM信号处理方案 方案一: 方案二: FM信号处理方案 方案一: 方案二: FFT快速傅里叶变换与逆变换算法 带通抽样定律采样算法 ...

  9. 2021电赛F题(智能送药小车)参赛总结【视觉部分】

    2021电赛F题(智能送药小车)参赛总结[视觉部分] 前言 在2021年全国大学生电子设计竞赛中,我们小组做的是F题(智能送药小车).我在小组中主要负责小车视觉功能的实现,所以在本篇参赛总结中只会涉及 ...

最新文章

  1. HijackThis日志细解【简明教程增强版】(五)
  2. Redis持久化:AOF和RDB
  3. tomcat错误:The page you tried to access (/manager/login.do) does not exist
  4. Spring Cloud的架构
  5. Django从理论到实战(part18)--配置templates文件夹路径
  6. Apache ECharts顺利毕业,成为ASF顶级项目
  7. html之属性的定义
  8. “12306”的架构到底有多6?
  9. hadoop临时文件 jar包_hadoop之Mapper/reducer源码分析之二
  10. vasp和ms_科学网—VASP如何计算铁磁和考虑强关联作用 - 叶小球的博文
  11. gitlab更新配置无效_Gitlab 快速的搭建
  12. Spark SQL 1.3.0 DataFrame介绍、使用及提供了些完整的数据写入
  13. 本地搭建easy-mock
  14. 滚动页面一定距离后固定导航条
  15. 什么是恶意软件?病毒,蠕虫,特洛伊木马等有害程序
  16. 【详细解读】知识图谱的这一人工智能技术分支的概念、技术、应用、与发展趋势
  17. lcd驱动移植的分析linux3.2内核,chipsee为例,液晶屏AT070TN92
  18. springboot如何自定义starter
  19. 无人驾驶虚拟仿真(四)--通过ROS系统控制小车行走
  20. zstuoj 4246 萌新吃果果

热门文章

  1. matlab检查错误 函数,检查代码中的错误和警告
  2. 《DeepXDE:a deep learning library for solving differential equations》梳理
  3. 业余学习python有用吗_对于那些不做编程工作的小伙伴来说,学习Python有什么用呢?...
  4. numpy 矩阵求逆_numpy 矩阵运算
  5. android开发模仿文件管理器_2020 Web界面开发:DevExtreme全新的Diagram控件、文件管理器...
  6. 在java 中调c_在Java中调用C
  7. 2021高考达州二诊成绩查询,2021二诊成绩怎样换算高考分 分数相差多少
  8. 用MVC来实现javaScript的时间效果
  9. mysql与php驱动程序_用PHP和MySQL构建一个数据库驱动的网站_php
  10. python中的ls是什么意思_Python学习之旅:使用Python实现Linux中的ls命令