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",& ...
随机推荐
- java8 Stream常用方法和特性浅析
有一个需求,每次需要将几万条数据从数据库中取出,并根据某些规则,逐条进行业务处理,原本准备批量进行for循环或者使用存储过程,但是for循环对于几万条数据来说效率较低:存储过程因为逻辑非常复杂,写起来 ...
- Linux网络技术管理及进程管理(week2_day4)--技术流ken
OSI七层模型和TCP/IP四层模型 OSI七层模型:OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联 ...
- hosts文件的作用
hosts文件的作用 hosts文件是一个没有扩展名的系统文件,可以用记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一 ...
- [转]Windows10中Virtualbox没办法选择和安装64位的Linux系统
本文转自:https://blog.csdn.net/strivenoend/article/details/78290325 明明在公司的WIN7系统中使用Virtualbox就可以安装64位的Ub ...
- Spring Cloud中Feign如何统一设置验证token
代码地址:https://github.com/hbbliyong/springcloud.git 原理是通过每个微服务请求之前都从认证服务获取认证之后的token,然后将token放入到请求头中带过 ...
- C# 以函数Action/Func/Task作为方法参数
以Action.Func.Task作为方法参数,mark一下 以Action为参数 public void TestAction() { //Action参数 ExecuteFunction(() = ...
- java的设计模式 - Builder模式
Builder 模式的目的? 构造对象的方式过于复杂,不如将之抽离出来.比如,构造器参数过多 这样说也有点抽象,举个例子吧. 举个例子 比如 非常热门的消息队列RabbitMQ 的 AMQP.Basi ...
- 15个常用的javaScript正则表达式
1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) ,}$/; //输出 true console.log(uPattern.test("iFat3")); 2 ...
- 升级WIN10 (9879)后IE无响应的解决办法
身为程序猿,当然有了新系统就要尝尝鲜,有WIN8时,哥是朋友圈第一个用的,有WIN8.1时哥也是第一个升级的. 现在WIN10来了,当然也得赶紧尝尝鲜.直接下载了 9879版的预览版本安装. 要说WI ...
- 5分钟入门LingaScript-尝鲜中文版TypeScript
续前文转载: 中文輸進去,程式出得來,開發者發大財 -LingaScript:中文化TypeScript, 虽然其中例程使用了繁体中文语法, 但它同时也支持简体中文语法. 注: 此文中VS Code的 ...