参考大佬代码

题目大意

nnn个顾客,mmm种画妆品,每一个顾客会给mmm种化妆品一个值,这个值代表这个化妆品在他心中的排名,排名越小越喜欢,如果这个值为0说明最不喜欢这一种化妆品(值为0理解为无穷大)

现在定义d(x,y)d(x,y)d(x,y)表示第xxx种化妆品和第yyy种化妆品之间,喜欢第xxx种化妆品的人数

定义一个序列C1,C2,C3,…,CkC_1,C_2,C_3,\dots,C_kC1​,C2​,C3​,…,Ck​,其中保证d(Ci,Ci+1)>d(Ci+1,Ci)d(C_i,C_{i+1})>d(C_{i+1},C_i)d(Ci​,Ci+1​)>d(Ci+1​,Ci​),而这个路径有一个值(序列值)代表d(Ct,Ct+1),1≤t<kd(C_t,C_{t+1}),1\leq t<kd(Ct​,Ct+1​),1≤t<k的最小值。

定义S(x,y)S(x,y)S(x,y),对于上述所有序列C1=xC_1=xC1​=x,Ck=yC_k=yCk​=y即以xxx为开头,yyy结尾的序列中,序列值的最大值

如果对于一个化妆品xxx来说的S(x,i)≥S(i,x),(1≤i≤m,i≠x)S(x,i)\ge S(i,x),(1\leq i\leq m,i\ne x)S(x,i)≥S(i,x),(1≤i≤m,i​=x)对于上述条件的iii都成立,那么它就是“好”的化妆品。

现在求出所有“好”化妆品的编号?

首先暴力求出d(i,j)d(i,j)d(i,j),然后floyd暴力求出S(i,j)=max(S(i,j),min(d(i,k),d(k,j)))S(i,j)=max(S(i,j),min(d(i,k),d(k,j)))S(i,j)=max(S(i,j),min(d(i,k),d(k,j)))
最后暴力比较求出答案。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<random>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=510;
int n,m;
int a[N][N],d[N][N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>m>>n;for(int i=1;i<=n;i++)   for(int j=1;j<=m;j++){cin>>a[i][j];if(a[i][j]==0) a[i][j]=1e8;}for(int i=1;i<=m;i++)   for(int j=i+1;j<=m;j++){for(int k=1;k<=n;k++){if(a[k][i]<a[k][j]) d[i][j]++;if(a[k][i]>a[k][j]) d[j][i]++;}int x=d[i][j],y=d[j][i];if(x>=y) d[j][i]=0;if(y>=x) d[i][j]=0;}for(int k=1;k<=m;k++)   for(int i=1;i<=m;i++)for(int j=1;j<=m;j++){if(!d[i][k]||!d[k][j]) continue;d[i][j]=max(d[i][j],min(d[i][k],d[k][j]));}vector<int> ans;for(int i=1;i<=m;i++){bool ok=1;for(int j=1;j<=m;j++){if(i==j) continue;if(d[i][j]<d[j][i]) ok=0;}if(ok) ans.push_back(i);}for(auto t:ans) cout<<t<<' ';cout<<'\n';}return 0;
}

总结:首先需要暴力理解题意

2018 ACM ICPC Asia Regional - Seoul B.Cosmetic Survey相关推荐

  1. Problem 1002-2017 ACM/ICPC Asia Regional Shenyang Online

    网络赛:2017 ACM/ICPC Asia Regional Shenyang Online 题目来源:cable cable cable Problem Description: Connecti ...

  2. 2015 ACM/ICPC Asia Regional Shenyang Online题解

    以下所有AC题解程序来自"仙客传奇"团队. AC题数:7/13 ABCFGJL A. Traversal AC的C++语言程序: #include <bits/stdc++. ...

  3. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  4. 2014 ACM/ICPC Asia Regional Guangzhou Online C题Wang Xifeng's Little Plot(dfs)

    Wang Xifeng's Little Plot Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  5. The 36th ACM/ICPC Asia Regional Dalian Site 1006 Dave

    Dave Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65768/65768K (Java/Other) Total Submissi ...

  6. 2013 ACM/ICPC Asia Regional Chengdu Online We Love MOE Girls 字符串STL 的应用

    题目来源: http://acm.hdu.edu.cn/showproblem.php?pid=4730 分析1:string s.substr(pos, n) 从 pos 开始 截取n个 字符 代码 ...

  7. 2016 ACM/ICPC Asia Regional Shenyang Online

    I:QSC and Master 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5900 题意: 给出n对数keyi,vali表示当前这对数的键值和权值 ...

  8. hdu 5023 poj 2777(线段染色)2014 ACM/ICPC Asia Regional 广州 Online

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5023 http://poj.org/problem?id=2777 题意:给出一个长度为N的线段,分 ...

  9. 2016 ACM/ICPC Asia Regional Qingdao Online 1005 Balanced Game

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5882 Problem Description Rock-paper-scissors is a ze ...

最新文章

  1. 使用 ChatterBot 库制作一个聊天机器人
  2. 测试php程序运行时间
  3. java求职_Java 求职怎么积累知识才可以找到工作
  4. java线程带来的异常,java多线程练习之捕获子线程异常例子
  5. java 双等号(==) 与equals方法的介绍和区别
  6. git detached head
  7. 【Spark Summit EU 2016】Glint: Spark的异步参数服务器
  8. 数百GitHub私有代码库被黑客清空:不交赎金就公开源码!
  9. 转载——python字符串常用操作(加案例)
  10. Arcgis Android 基本概念 - 浅谈
  11. 【读书笔记《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建
  12. lumion制作海上明月5.29
  13. IT职场人士值得关注的十大博客之二:人人都是产品经理
  14. epoll与reactor模式
  15. wd 文件服务器客服电话,wd 云服务器
  16. redis 交集、并集、差集
  17. 三味眼中的十二“最”……
  18. 无需注解快速生成API文档,跟SpringBoot绝配
  19. 没有内存,怎么还能跑程序呢
  20. 软件发展新方向-新技术革命

热门文章

  1. python opencv 图像添加噪声_opencv+python同时加椒盐噪声和随机杂点噪声
  2. [Java网络编程基础]端口,协议
  3. [Java基础]哈希值
  4. C++ 泛型编程 实现红黑树RBTree
  5. hash table(全域散列法实现的哈希表)
  6. linux加大ram 内核需要,Linux 5.1内核发布:io_uring接口+支持持久性内存用作RAM
  7. all()与any()
  8. Leetcode动态规划 不同路径
  9. 经典排序算法(4)——折半插入排序算法详解
  10. github 创建文件夹