zoj 3601
链接
[https://vjudge.net/contest/293343#problem/B]
题意
就是n男m女。然后给出他们喜欢那些人
再给出q次询问
每次参加party的人
让你找出某个人满足喜欢在场的所有人而且在场所有人都不喜欢他
如果不存在输出0;
分析
首先这题目的样例是给出一个信息。就是他们可以搞基同性恋
就直接模拟就好了。关键怎样模拟使得更高效,就是查找更高效
你得保存每个人喜欢的人。直接把名字映射成数字就好了
map<string,int> 名字对应的数字
vector a[] 为啥不用vector a[] 用来保存每个人喜欢的人
他喜欢的人还没map过就gg了
下面为了更方便地查找你得
在把喜欢的关系映射一下、
map < pair<int,int>,int > P
后面舞会就查找了
给两份代码 一份是MLE的
具体看代码吧
代码
MLE
#include<bits/stdc++.h>
using namespace std;
#define ll long long
map<string,int> ma;
map<int,string> is;
vector<string> ve[70000];
map<pair<int,int>,int > mp;
int pa[70000];
int main(){
int t,m,n,k,q;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&q);
for(int i=0;i<n+m;i++){
ve[i].clear();
string l,bl;
cin>>l;
scanf("%d",&k);
ma[l]=i,is[i]=l;
//cout<<"i "<<i<<endl;
for(int j=0;j<k;j++)
{
cin>>bl;
ve[i].push_back(bl);
}
}
for(int i=0;i<n+m;i++)
for(int j=0;j<ve[i].size();j++)
mp[make_pair(i,ma[ve[i][j]])]=1;
while(q--){
scanf("%d",&k); string s;
for(int i=0;i<k;i++)
{
cin>>s;
pa[i]=ma[s];
}
bool flag;
for(int i=0;i<k;i++){
flag=1;
for(int j=0;j<k;j++){
if(i!=j){
if(mp[make_pair(pa[i],pa[j])]==0||mp[make_pair(pa[j],pa[i])]==1){
flag=0;
break;
}
}
}
if(flag) {
printf("1 ");
cout<<is[pa[i]]<<"\n";
break;
}
}
if(!flag) puts("0");
}
cout<<endl;
}
return 0;
}
AC代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
map<string,int> ma;
map<int,string> is;
vector<string> ve[70000];
map<pair<int,int>,int > mp;
string str[70000];
int pa[70000];
int main(){
int t,m,n,k,q;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&q);
mp.clear();
ma.clear();
for(int i=0;i<n+m;i++){
ve[i].clear();
string l,bl;
cin>>l;
scanf("%d",&k);
ma[l]=i;
for(int j=0;j<k;j++)
{
cin>>bl;
ve[i].push_back(bl);
}
}
for(int i=0;i<n+m;i++)
for(int j=0;j<ve[i].size();j++)
mp[make_pair(i,ma[ve[i][j]])]=1;
while(q--){
scanf("%d",&k); string s;
for(int i=0;i<k;i++)
{
cin>>str[i];
pa[i]=ma[str[i]];
}
bool flag;
for(int i=0;i<k;i++){
flag=1;
for(int j=0;j<k;j++){
if(i!=j){
if(mp[make_pair(pa[i],pa[j])]==0||mp[make_pair(pa[j],pa[i])]==1){
flag=0;
break;
}
}
}
if(flag) {
cout<<1<<" "<<str[i]<<"\n";
break;
}
}
if(!flag) puts("0");
}
puts("");
}
return 0;
}
zoj 3601的更多相关文章
- ZOJ 3601 Unrequited Love 浙江省第九届省赛
Unrequited Love Time Limit: 16 Seconds Memory Limit: 131072 KB There are n single boys and m si ...
- ZOJ 3601 Unrequited Love 【STL__pair_的应用】
下面这个例子就是 STL:pair 的用法 #include <iostream> #include <utility> #include <string> usi ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
- ZOJ Problem Set - 1049 I Think I Need a Houseboat
这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...
- ZOJ Problem Set - 1006 Do the Untwist
今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...
- ZOJ Problem Set - 1001 A + B Problem
ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...
随机推荐
- .NET Core 性能分析: xUnit.Performance 简介
xunit-performance 是xUnit的一个扩展, 使用它可以对.NET Core项目进行性能测试. 官网:https://github.com/Microsoft/xunit-perfor ...
- Java〜slf4日志框架的使用
slf4日志可以支持注解的方式开启它,然后在使用时直接使用占位符,而不需要手动拼接字符串,这点在性能上也做到了最好. 一 build.gradle依赖项 compileOnly('org.projec ...
- Python3+unitest自动化测试初探(上篇)
目录 1.概念介绍 2.准备工作 3.一个简单的例子 4.test fixture 5.测试套 1.概念介绍 unit test:单元测试,可以简单粗暴地理解成用一段代码去测试另外一段代码.unitt ...
- Spring Cloud番外篇-001
熔断监控:Hystrix Dashboard Hystrix Dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard可以直观地看到个Hystrix Com ...
- 获得当前EIP的值
VS2017 内联汇编 __asm { call NEXT NEXT: pop eax }
- SpringCloud微服务如何优雅停机及源码分析
目录 方式一:kill -9 java进程id[不建议] 方式二:kill -15 java进程id 或 直接使用/shutdown 端点[不建议] kill 与/shutdown 的含义 Sprin ...
- WPR003N变成尸体的后记
这是一个很悲哀的标题,尽管本来不想说还是打算写出来. 应小便的要求本文不加任何字体变化,不设置玄关来等大家破解,只是很自然的把悲剧和大家分享一下. 自上回2019 Valentine's Day 圣地 ...
- EF Core 快速上手——EF Core 入门
EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用 本文是对 ...
- img transform:scale 放大在ios下变模糊
/*img标签放大再缩小*/ img { width: 400%; transform: translate3d(-50%, -50%, 0) scale(0.25, 0.25); -webkit-t ...
- vue 模板template
入门 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...