Description
xxxxxyt学姐经常一个人在家,难免会感到寂寞,于是学姐养了n只可爱的宠物,比
如皮皮虾、大蟒蛇、藏狐、安康鱼…但即便如此学姐还是感到无聊。突然有一天,学姐想到
了让宠物们互相对战的消遣方法(请不要给动物保护协会打电话!)。学姐让宠物们两两进
行对战,n*(n-1)/2场对战后,学姐得到了一张相生相克图,然后又根据自己的喜好,把
宠物们分成了一队与二队。就在队伍分好后,学姐的强迫症又犯了,她希望自己的两支队伍
都满足这样一个性质:存在某种排列,使得排在后面的宠物能够击败排在前面的所有宠物。
但学姐的懒惰大家都是知道的,所以她找到了你,希望你能告诉她这两支队伍是否均满足要
求,如果是,她还希望你告诉她最多可以从二队中抽出多少只宠物放在一队,使得两支队伍
仍然满足要求。努力解决问题吧,而xxxxxyt学姐,瘫躺。
Input
第一行输入两个数字n和m,分别表示学姐有n只宠物,其中被分到一队的宠物有m
只。
接下来n行每行n个数字,ai,j
表示第i只宠物是否能战胜第j只宠物,保证ai,i=0
且ai,j=!aj,i

接下来一行m个数字,表示有哪些宠物被分到了一队。
Output
如果两支队伍均不能让xxxxxyt满意,则输出“NO”;否则输出“YES”,并输出一个
最大的k,使得从二队中非任意地抽出k只宠物放入一队后,两支队伍仍然满足条件。详细
格式见样例输出。
Sample Input 1
3 2
0 1 1
0 0 1
0 0 0
3 1
Sample Output 1
YES 1
Sample Input 2
4 3
0 1 0 1
0 0 1 1
1 0 0 1
0 0 0 0
1 2 3
Sample Output 2
NO
Sample Input 3
4 2
0 1 0 1
0 0 1 1
1 0 0 1
0 0 0 0
1 2
Sample Output 3
YES 1
Hint
注意:
宠物们的实力是相对的,也就是可能会出现A战胜B,B战胜C,C又战胜A的
情况。
数据范围:
20%的数据1<=m<n<=10
60%的数据1<=m<n<=100

100%的数据1<=m<n<=100

显然一个序列的规则是满足拓扑排序的,故可以用拓扑排序check,且合法的排列方法唯一,即拓扑序。现在问题就变成了有一队二队两条有向链,问二队链中至多有多少个可以合法地插入一队链,用f[i][j]表示一队链讨论到第i个二队
链讨论到第j个,二队链中至多插入f[i][j]个,转移为:

f[i][j]=max{f[i-1][j],f[i][j-1],f[i][j-1]+1(二队中第j个宠物弱于一队中1...i强于i+1...m)}
直接转移暴力判断复杂度为O(n^3)
因此对二队中第j个宠物是否弱于一队中1...i强于i+1...m进行预处理,便可在复杂度O(n2)下得到答案

#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=1005,inf=1e9;
inline void _read(int &x){char t=getchar();bool sign=true;while(t<'0'||t>'9'){if(t=='-')sign=false;t=getchar();}for(x=0;t>='0'&&t<='9';t=getchar())x=x*10+t-'0';if(!sign)x=-x;
}
int n,m,type[maxn],du[maxn],f[maxn][maxn];
int s1[maxn],s2[maxn],l[maxn][maxn],r[maxn][maxn];
int map[maxn][maxn];
bool topsort(int s[],int kind,int sum){queue<int>q;int i,j,t=0;bool mark[maxn];memset(mark,0,sizeof(mark));for(i=1;i<=n+m;i++)if(type[i]==kind&&(!du[i])){q.push(i);s[++t]=i;mark[i]=1;}while(q.size()){int x=q.front();q.pop();for(i=1;i<=n+m;i++)if(!mark[i]&&type[i]==kind){if(map[x][i]&&du[i])du[i]--;if(!du[i]){q.push(i);mark[i]=1;s[++t]=i;}}}return t==sum;
}
int main(){int i,j,x;_read(n);_read(m);for(i=1;i<=n;i++){for(j=1;j<=n;j++)_read(map[i][j]);type[i]=2;}for(i=1;i<=m;i++){_read(x);type[x]=1;}for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(type[i]==type[j]&&map[i][j])du[j]++;n-=m;swap(n,m);   if(!topsort(s1,1,n)||(!topsort(s2,2,m))){puts("NO");return 0;}for(j=1;j<=m;j++){l[0][j]=r[n+1][j]=1;for(i=1;i<=n;i++)l[i][j]= map[s1[i]][s2[j]]&&l[i-1][j];for(i=n;i;i--)r[i][j]= map[s2[j]][s1[i]]&&r[i+1][j];}for(i=0;i<=n;i++)for(j=0;j<=m;j++){if(j)f[i][j]=max(f[i][j],f[i][j-1]);if(i)f[i][j]=max(f[i][j],f[i-1][j]);if(j&&l[i][j]&&r[i+1][j])f[i][j]=max(f[i][j],f[i][j-1]+1);}cout<<"YES"<<" "<<f[n][m];
}

NKOI 3747 宠物相关推荐

  1. FastAI 课程学习笔记 lesson 1:宠物图片分类

    文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...

  2. 2022-2028年中国宠物用药行业市场前瞻与投资战略规划分析报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国宠物用药行业市场行业相关概述.中国宠物 ...

  3. java宠物医院_java宠物医院管理系统

    今天和一个朋友共同完成了一个基于java的宠物医院管理系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他.和往常一样选用简单又便 ...

  4. Java项目:宠物医院预约挂号系统(java+JSP+Spring+SpringBoot+MyBatis+html+layui+maven+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能包括: 用户分为宠物,医生,管理员,宠物主人可进行注册选择医生挂号,选择日期,选择号源,医生可进行宠物接诊,管理员可对宠物 ...

  5. 【云计算的1024种玩法】回忆经典,用虚拟主机重建复古DZ和无心宠物

    前言 在移动互联网和大型网游没有普及前,很多地方论坛或者专业性论坛都会有一个 -- "无心宠物" 插件来引流和吸引用户,可以说是当下网页游戏的老前辈了.还记得我以前就是为了玩这个游 ...

  6. 旷视推出鼻纹识别,用AI寻找丢失宠物

    来源 | 转载自旷视城市大脑(ID:MEGVII_CityBrain) 导读:随着人工智能技术(AI)的大热,基于深度学习方法的人脸识别技术已成熟落地,在解锁.支付.认证.摄像等生活方方面面,各个大厂 ...

  7. Nature替宠物正名了:宝宝身体好,猫狗或真不可少!

    本文转载自"态昌基因",己获授权. 又到了可以陪家人朋友宠物的周末啦 作为家里有两只橘猪的资深猫奴,小昌的日常生活就是上班吃饭撸猫铲屎.萌萌的小动物让家闹腾了许多,也温馨了许多. ...

  8. 从“人脸”到“狗脸”,AI也要去宠物经济分杯羹?

    原标题:从"人脸识别"到"狗脸识别",人工智能也要去宠物经济分杯羹? 美国学者尼葛洛庞帝在其 1996 年出版的<数字化生存>(Being Digi ...

  9. 产品经理也能动手实践的AI(二)- 做个识别宠物的AI

    https://www.toutiao.com/a6673604688056680972/ 上一篇产品经理也能动手实践的AI(一)- FastAI介绍,介绍了为什么选择FastAI,为什么适合产品经理 ...

最新文章

  1. Keep Moving blog改版
  2. hr2000 光谱Matlab,HR4000 HR2000 HR2000+ 光纤光谱仪 CG HC-1光栅 消除高阶衍射滤光片-广州标旗...
  3. 2021-11-04Oracle19c 图形化安装,在windoes上)
  4. Android中用图片自定义一个进度条(实现蒙板效果)
  5. Linux 问题分析,性能优化
  6. Nginx中如何配置中文域名?
  7. Acer 4750 安装黑苹果_安装黑苹果,你需要注意哪几点
  8. SkyEye图形化界面使用技巧篇(一)
  9. day048 BOM和DOM
  10. MariaDB 10之并行复制--延迟测试结果
  11. mysql报错22_运行 mysql 遇到的两个报错
  12. WP7开发平台介绍及开发注意事项【WP7学习札记之二】
  13. linux常用命令示例
  14. windows内核驱动开发(WDK环境搭建)
  15. gradle教程java_gradle入门到精通视频教程 下载
  16. android 歌曲的流派信息,音乐流派分类介绍.doc
  17. HAL库中外设驱动的实现(任意外设通用)
  18. python神经网络预测股票组合_神经网络预测股票市场
  19. 工业物联网在制造业中有哪些用途?以数网星工业物联网平台为例
  20. 华为MA5626-8密码恢复

热门文章

  1. 远程桌面通过RDP文件进行自动登录
  2. easyconnect连接不上服务器
  3. 【邢不行|量化小讲堂系列23-Python量化入门】不用再自己写技术指标了 | TA-lib视频教程
  4. 山东春季高考计算机可以报考的本科学校,山东春季高考可以报考的本科学校
  5. 黑白点的匹配(Problem Set 1714)-贪心算法-
  6. 互联网早报:前程无忧将上线“简历下载水印”等功能,可显示简历流向路径
  7. vs2019创建c语言,Visual Studio 2019创建一个C语言控制台项目
  8. linux 应用命令
  9. tar之多线程解压缩
  10. 2n皇后问题C语言实现