简单模拟题,耐心写就能过。

#include <stdio.h>
#include <math.h>
#include<cstring>
#include<cmath>
#include<map>
#include<string>
#include<algorithm>
#include<vector>
using namespace std; const int INF=;
int n;
struct X
{
char s[];
int L[],R[];
} h[+]; map<string,int>m;
int cnt;
char tmp[]; char Na[];
int op,num;
int L,R; void get()
{
memset(Na,,sizeof Na);
int i;
for(i=; tmp[i]; i++)
{
if(tmp[i]==' ') continue;
else break;
} int g=;
for(; tmp[i]; i++)
{
if(tmp[i]>='a'&&tmp[i]<='z') Na[g++]=tmp[i];
else break;
} for(; tmp[i]; i++)
{
if(tmp[i]==' ') continue;
else break;
} if(tmp[i]=='<')
{
if(tmp[i+]=='=') op=;
else op=;
}
if(tmp[i]=='=') op=;
if(tmp[i]=='>')
{
if(tmp[i+]=='=') op=;
else op=;
} num=;
int u=;
for(; tmp[i]; i++)
{
if(tmp[i]=='-') u=-;
if(tmp[i]>=''&&tmp[i]<='') num=num*+tmp[i]-'';
}
num=num*u; if(op==) L=R=num;
else if(op==) L=-INF,R=num-,op=;
else if(op==) L=-INF,R=num;
else if(op==) L=num,R=INF;
else if(op==) L=num+,R=INF,op=;
} bool check(int a,int b)
{
for(int i=; i<=; i++)
{
if(h[a].L[i]==-) return ;
if(h[b].L[i]==-) return ;
} for(int i=; i<=; i++)
{
if(h[a].R[i]<h[b].L[i]) return ;
if(h[a].L[i]>h[b].R[i]) return ;
}
return ;
} int main()
{
while(~scanf("%d",&n))
{
getchar();
m.clear();
cnt=;
for(int i=; i<=n; i++) gets(h[i].s);
for(int i=; i<=n; i++)
{
int len=strlen(h[i].s);
char name[];
int tot=;
memset(name,,sizeof name);
for(int j=; j<len; j++)
{
if(h[i].s[j]>='a'&&h[i].s[j]<='z') name[tot++]=h[i].s[j];
else
{
if(name[]==) continue;
if(m[name]==) m[name]=++cnt;
tot=;
memset(name,,sizeof name);
}
}
} for(int i=; i<=n; i++)
{
int len=strlen(h[i].s);
int pos=;
memset(tmp,,sizeof tmp);
int f=; for(int j=; j<=; j++) h[i].L[j]=-INF,h[i].R[j]=INF; while(pos<=len)
{
if(h[i].s[pos]==','||h[i].s[pos]==)
{
get(); if(h[i].L[m[Na]]!=-)
{
if(op==)
{
if(R<h[i].L[m[Na]]) h[i].L[m[Na]]=h[i].R[m[Na]]=-;
else h[i].R[m[Na]]=min(h[i].R[m[Na]],R);
}
if(op==)
{
if(h[i].L[m[Na]]<=L&&L<=h[i].R[m[Na]]) h[i].L[m[Na]]=h[i].R[m[Na]]=L;
else h[i].L[m[Na]]=h[i].R[m[Na]]=-;
}
if(op==)
{
if(L>h[i].R[m[Na]]) h[i].L[m[Na]]=h[i].R[m[Na]]=-;
else h[i].L[m[Na]]=max(h[i].L[m[Na]],L);
}
}
memset(tmp,,sizeof tmp);
f=;
}
else tmp[f++]=h[i].s[pos];
pos++;
}
} for(int i=; i<=n; i++)
{
bool fail=;
vector<int>v; for(int j=; j<i; j++)
if(check(j,i))
{
fail=;
v.push_back(j);
} if(fail==) printf("unique\n");
else
{
for(int j=; j<v.size(); j++)
{
printf("%d",v[j]);
if(j<v.size()-) printf(" ");
else printf("\n");
}
}
}
}
return ;
}

2016"百度之星" - 资格赛(Astar Round1) Problem E的更多相关文章

  1. HDU 5688:2016"百度之星" - 资格赛 Problem D

    原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others)    ...

  2. HDU 5686:2016"百度之星" - 资格赛 Problem B

    原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others)    ...

  3. HDU 5685:2016"百度之星" - 资格赛 Problem A

    原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others)    ...

  4. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

  5. 2016"百度之星" - 资格赛(Astar Round1) Problem C

    字典树. 插入的时候update一下节点出现的次数. delete的时候,先把前缀之后的全删了.然后看前缀最后一个节点出现了几次,然后前缀上每个节点的次数都减去这个次数. 前缀从上到下再检查一遍,如果 ...

  6. 2016"百度之星" - 资格赛(Astar Round1) Problem D

    排个序,map直接搞. #include <stdio.h> #include <math.h> #include<cstring> #include<cma ...

  7. 2016"百度之星" - 资格赛(Astar Round1) Problem B

    规律题,斐波那契数列,数据有毒,0的时候输出换行.会爆longlong,写个大数模板或者Java搞. import java.io.BufferedInputStream; import java.m ...

  8. 2016"百度之星" - 资格赛(Astar Round1) Problem A

    保存前缀乘,询问的时候输出c[ri]/c[li-1]即可,因为是除法,所以计算一下c[li-1]的逆元. #include <stdio.h> #include <math.h> ...

  9. 2016"百度之星" - 资格赛(Astar Round1)

    逆元 1001 Problem A 求前缀哈希和逆元 #include <bits/stdc++.h> typedef long long ll; const int MOD = 9973 ...

随机推荐

  1. jax-rs的客户端完整实例

    本地接口: @Override    public Response formsubGet(String accountContent, char inputContent,            S ...

  2. JavaScript 伪造 Referer 来路方法

    Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题, ...

  3. springmvc权限拦截器

    配置文件spring-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  4. 批量删除实现js+springmvc

    前台的控件 <input type='checkbox' name='isSelect' value='"+data[i].id+"' ></input>& ...

  5. pro文件常用内容

    qmake生成的pro文件中常用变量 SUBDIRS 指定子目录 TARGET 指定生成的应用程序名(默认为项目名) DEPENDPATH 指定程序编译时依赖的相关路径 INCLUDEPATH 指定头 ...

  6. Spring AOP面向切面编程的实现

    1.涉及到的几个概念 切面类.被切对象.切入点.切入时间.切入内容:(自己命的名,好理解点) 2.看配置文件 <?xml version="1.0" encoding=&qu ...

  7. 【jsp/servlet】 javaweb中的一些简单问题整理

    1 jsp工作原理 答: 动态网页技术标准blabla...jsp程序的工作方式为请求/响应模式,客户端发出http请求,jsp程序收到请求后进行处理,并返回处理的结果. jsp程序需要运行在特定的w ...

  8. popoverController(iPad)

    一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. 1 //1.新建一个内容控制器 2 YYMenuViewController *menuVc=[[YYMenuViewCont ...

  9. JSTL标签库---SUN公司开发的标签库

    JSTL里的标签包含五大类标签: 核心标签库 国际化标签 JSTL函数(EL函数) 数据库标签// 操作数据库的,用不到了 XML标签//操作XML的,用不到了 都在jstl.jar,standar. ...

  10. Swift 使用Extension 场景 浅析

    别人一看到我的 Swift 代码,立刻就会问我为什么如此频繁的使用 extension.这是前几天在我写的另一篇文章中收到的评论: 我大量使用 extension 的主要目的是为了提高代码可读性.以下 ...