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

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

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

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

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

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<deque>
#include<map>
#include<queue>
#include<cstdlib>
using namespace std;
typedef long long INT;
const int maxn = ;
INT f[][],ans,visit[],que[maxn+];
INT judge(int *A)
{
INT sum = ;
for(int i = ;i <= ;++i)
for(int j = i+;j <= ;++j)
sum += f[A[j]][A[i]];
return sum;
}
void dfs(int* A,int deep)
{
if(deep > )
{
ans = min(ans,judge(A));
}
for(int i = ;i <= ;++i)
if(!visit[i])
{
visit[i] = ;
A[deep] = i;
dfs(A,deep+);
visit[i] = ;
}
} int main()
{
int n,A[]; while(scanf("%d",&n)!=EOF)
{
for(int i = ;i < n;++i)
scanf("%lld",&que[i]);
INT e[];
memset(e,,sizeof(e));
memset(f,,sizeof(f));
for(int i = ;i < n;++i)
{
for(int j = ;j <= ;++j)
f[j][que[i]] += e[j];
e[que[i]]++;
}
for(int i = ;i <= ;++i)
f[i][i] = ;
ans = 0x7ffffffffff;
memset(visit,,sizeof(visit));
dfs(A,);
printf("%lld\n",ans);
}
return ;
}

华中邀请赛现场赛F题 Seats的更多相关文章

  1. 2014西安现场赛F题 UVALA 7040

    地址 题意:求在m种颜色中挑选k种颜色,给n个花朵涂色有几种方法. 分析:画图可以发现,基本的公式就是k ×(k-1)^(n-1).但这仅保证了相邻颜色不同,总颜色数不超过k种,并没有保证恰好出现k种 ...

  2. codeforces 100548F (西安现场赛F题):容斥原理

    题目大意: 对n个排成一排的物品涂色,有m种颜色可选. 要求相邻的物品颜色不相同,且总共恰好有K种颜色,问所有可行的方案数 分析: 从m种颜色中选出k种,有c(m,k)种方法,那么我们只用考虑 k种颜 ...

  3. CF GYM100548 (相邻格子颜色不同的方案数 2014西安现场赛F题 容斥原理)

    n个格子排成一行,有m种颜色,问用恰好k种颜色进行染色,使得相邻格子颜色不同的方案数. integers n, m, k (1 ≤n, m ≤ 10^9, 1 ≤ k ≤ 10^6, k ≤ n, m ...

  4. 19秦皇岛现场赛F题 dfs

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6736 如果环的边长为k,那么环的删边方案数是2k-1.如果链的边长为k,那么链的删边方案数是2k.环的 ...

  5. 2013杭州现场赛B题-Rabbit Kingdom

    杭州现场赛的题.BFS+DFS #include <iostream> #include<cstdio> #include<cstring> #define inf ...

  6. 2013年山东省赛F题 Mountain Subsequences

    2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从 ...

  7. ACM-ICPC 2019南昌网络赛F题 Megumi With String

    ACM-ICPC 南昌网络赛F题 Megumi With String 题目描述 给一个长度为\(l\)的字符串\(S\),和关于\(x\)的\(k\)次多项式\(G[x]\).当一个字符串\(str ...

  8. Gym101981D - 2018ACM-ICPC南京现场赛D题 Country Meow

    2018ACM-ICPC南京现场赛D题-Country Meow Problem D. Country Meow Input file: standard input Output file: sta ...

  9. HDU 4800/zoj 3735 Josephina and RPG 2013 长沙现场赛J题

    第一年参加现场赛,比赛的时候就A了这一道,基本全场都A的签到题竟然A不出来,结果题目重现的时候1A,好受打击 ORZ..... 题目链接:http://acm.hdu.edu.cn/showprobl ...

随机推荐

  1. 华为笔试——C++平安果dp算法

    题目:平安果 题目介绍:给出一个m*n的格子,每个格子里有一定数量的平安果,现在要求从左上角顶点(1,1)出发,每次走一格并拿走那一格的所有平安果,且只能向下或向右前进,最终到达右下角顶点(m,n), ...

  2. Vigenere加密

    Vigenere加密法原理很简单,实现起来也不难.与普通的单码加密法不同,明文经过加密之后,每个字母出现的频率就不会有高峰和低峰. 密钥中字母代表行和明文中的字母代表行.在vigenere表中找到对应 ...

  3. 结对&词频统计

    结对编程 Pathner 濮成林(博客:http://www.cnblogs.com/charliePU/) 1.词频统计 环境依赖: 开发环境.myeclipse 2013, jdk1.7.0_04 ...

  4. uc浏览器app点评

    uc浏览器app我经常用,是我接触的第一款手机浏览器,感觉还不错的,uc浏览器新闻更新速度有点慢,有时候还闪退,以前在搜索栏粘贴文字后,如果想改后面的文字,根本就不行,用uc浏览器下东西速度比较慢,现 ...

  5. Linux内核分析 实验一 ——by王玥

    一.实验内容 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码, ...

  6. 《Linux内核设计与实现》 第三周 读书笔记

    第一章 Linux内核简介 1. Unix的历史 Unⅸ虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最优秀的系统. Unix强大的根本原因: 简洁 在Unix中所有的东西都被 ...

  7. blob下载出现多余乱码内容

    blob需要单独获取,,不能通过map来获取 jdbcTemplate.query(sqlcontent, new Object[] {id},     new AbstractLobStreamin ...

  8. Fast R-CNN论文阅读笔记

    论文地址:Fast R-CNN R-CNN的缺陷 (1)训练是一个多级的流水线.R-CNN首先在候选目标上微调一个卷积神经网络,使用log loss.然后使用SVMs充当目标分类器,以取代softma ...

  9. Beta博客集合

    Beta博客集合 Task1:beta冲刺准备 冲刺准备 Task2:Beta阶段冲刺合集 Beta阶段冲刺一 Beta阶段冲刺二 Beta阶段冲刺三 Beta阶段冲刺四 Beta阶段冲刺五 Task ...

  10. DELPHI 数据集在内存中快速查询方法

    1.Bookmark var p:pointer; procedure TForm1.Button1Click(Sender: TObject);//加个标签 begin   p:=cxGrid1DB ...