LINK

考虑对aia_iai​进行排序,然后把相同的aia_iai​对应的索引都浓缩起来

假设有kkk个人的aia_iai​值都相同,他们的位置分布在[l,r][l,r][l,r]的座位范围内

我们能做的只是让他们内部调整座位而已

如果[l,r][l,r][l,r]的座位都在同一行内,显然我们根据这kkk个人的序号从大到小,一次从左到右放下去比较好

如果[l,r][l,r][l,r]的座位分布在多行,那么有

[l,s1][l,s_1][l,s1​]位于同一行,且s1s_1s1​位置位于该行的结尾位置

[s1+1,s2−1][s_1+1,s_2-1][s1​+1,s2​−1]这些位置,恰好占据满了中间的若干行

[s2,r][s_2,r][s2​,r]位于同一行,且s2s_2s2​位置位于该行的开头位置

容易发现结论,[l,s2−1][l,s_2-1][l,s2​−1]的所有座位,由于都在行的末尾处,不会影响其他人的不便利程度

而[s2,r][s_2,r][s2​,r]会影响,所以让索引最大的那些人坐在[s2,r][s_2,r][s2​,r]的位置比较好

然后对于每一行,都是按照每个人索引大到小从左往右放

#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e5+10;
int n,m,top,pos[309*309],vis[309][309];
typedef pair<int,int>p;
p a[maxn];
vector<int>vec[maxn];
void init()
{for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)vis[i][j] = 0, pos[(i-1)*m+j] = 0;for(int i=1;i<=top;i++)    vec[i].clear();top = 0;
}
int main()
{int t; cin >> t;while( t-- ){cin >> n >> m;for(int i=1;i<=n*m;i++){int x; cin >> x;a[i] = {x,i};}sort( a+1,a+1+n*m );for(int i=1;i<=n*m;i++){if( a[i].first!=a[i-1].first ) top++;vec[top].push_back( a[i].second );//第top批加入的人 }int las = 1;for(int i=1;i<=top;i++){sort( vec[i].begin(),vec[i].end(),[](int a,int b){ return a<b; } );int siz = vec[i].size(), now = siz-1, L = las, R = las+siz-1;int x = L/m+( L%m!=0 ), y = L-(x-1)*m;int nx = R/m+( R%m!=0 ), ny = R-(nx-1)*m;for(int j=nx;j>=x;j--){int l = 1, r = m;//给第j行[l,r]的格子赋值 if( j==nx ) r = ny;if( j==x )    l = y;for(int w=l;w<=r;w++) pos[vec[i][now--]] = (j-1)*m+w;}las = las+siz;}int ans = 0;for(int i=1;i<=n*m;i++){int x = pos[i]/m+( pos[i]%m!=0 ), y = pos[i]-(x-1)*m;for(int j=1;j<y;j++)  ans += vis[x][j];vis[x][y] = 1;}cout << ans << endl;init();}
}

Global Round 16D2. Seating Arrangements (hard version)(模拟,贪心)相关推荐

  1. Codeforces Global Round 12 C2. Errich-Tac-Toe (Hard Version)(思维)

    题目描述 The only difference between the easy and hard versions is that tokens of type O do not appear i ...

  2. codeforces global round 23

    constest :codeforces global round 23 contest time:2022.10.16 contest grade: 2800 contest rating chan ...

  3. Codeforces Global Round 1 晕阙记

    Codeforces Global Round 1 晕阙记 我做这场比赛的时候晕得要死.做这三道题做太久了,rating涨不起来啊! A 如果愿意的话你可以看做是膜2意义下的运算,写快速幂等各种膜运算 ...

  4. Codeforces Global Round 3

    Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...

  5. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai​,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau​+av​≥x ...

  6. Codeforces Global Round 1

    Codeforces Global Round 1 题解:The Editorial of the First Codeforces Global Round A:其实mod 2计算一下就行了 B:删 ...

  7. 【Codeforces Global Round 23】B. Rebellion

    Codeforces Global Round 23中B. Rebellion Codeforces比赛记录 文章目录 题目链接: 一.B. Rebellion 题目意思: 上思路: 总结 B. Re ...

  8. Codeforces Global Round 4-D. Prime Graph(伯特兰-切比雪夫定理)

    题目:Codeforces Global Round 4-D. Prime Graph 题意:给出n(顶点的个数),要求所得图满足: 1.无平行边和自环 2.边的总数是个质数 3.每个点的度(也就是点 ...

  9. 【CodeForces Round #550】A-F | 模拟 | 贪心 | 高精 | BFS | 二分图 | E

    今年怎么没有愚人节比赛了   CF你看看人家洛谷   唉鸭原来那边还没到愚人节呢- 愚人节比赛还是有的,在今晚 qwq [CodeForces 1144   A-F] Tags:模拟 贪心 BFS 高 ...

  10. 1739 - 放置盒子 - 模拟 - 贪心 - 数学

    欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 文章目录 题目描述 题目描述 题目剖析&信息挖掘 解题思路 方法一 模拟+贪心+数学 分析 思路 注意 知识点 复杂度 ...

最新文章

  1. donsker定理_中心极限定理和Donsker定理
  2. 快速完整的基于点云闭环检测的激光SLAM系统
  3. 第二讲 词向量表示 word2vec
  4. php中RGB转十六进制、十六进制转RGB
  5. 非微信打开不显示页面
  6. 我月入过万,送着外卖写着诗
  7. python集合类型_Python 的集合(set)类型
  8. 【专升本计算机】专升本计算机期末考试复习题(B卷附答案)
  9. 介绍org.eclipse.core.runtime中工具类
  10. Modifier ‘public‘ is redundant for interface methods错误
  11. window 平台高性能多国语解决方案
  12. Atitit.视频文件加密的方法大的总结 java c# php
  13. 话里话外:个体时间管理的二三事
  14. 一文搞懂I2C总线通信
  15. 项目管理-项目整体计划Excel表格绘制
  16. 马哥Linux第52期-第四周作业
  17. Three.js-物理引擎(Physics)
  18. Python绘图 \ 数据可视化
  19. js 格式化UTC日期
  20. 平面设计在现实生活中有哪些用途

热门文章

  1. 计算机usb 不显示错误的是,电脑插入U盘不显示USB Mass storage device感叹号
  2. 2353563-50-3,Thalidomide-O-PEG4-Acid一种鱼精蛋白连接物,在活化剂EDC或HATU存在下可与含胺部分反应
  3. nodejs websocket 聊天应用
  4. 自然语言处理(一)——中英文分词
  5. cocos2dx 精灵触摸
  6. Up in the Air-19
  7. 打印ie浏览器去除页眉页脚问题
  8. java实现生命游戏(2维元胞自动机)
  9. 使用python计算与你投缘与无缘的生肖
  10. Codeforces1221 C. Perfect Team