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

#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. 今天开通博客,记录我作为一个小菜鸟在iOS学习中的点点滴滴

    一直以来都是默默的关注各位同仁,没有为网站作什么贡献. 现在借开始学习iOS开发的这个机会开博,集中于介绍这个过程,激励我自己. 谢谢大家!

  2. CentOS 7 rsync

    CentOS 7 rsync 1)软件简介 Rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件.Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.s ...

  3. ueditor浏览器 无法上传文件.问题

    dll也都引用了 路径绝对tmd没问题 最后 我一点一点的调试发现了问题 草tmd百度程序员 */UE.ajax = function() { //创建一个ajaxRequest对象 var fnSt ...

  4. 109.110.100.56 samba用户名 PAS, 密码 111111

    如果修改文件夹名字, 需要更改 cd /etc/samba/smb.conf 然后重启samba service smb restart 如果要修改文件夹权限 chmod -R 777 folder ...

  5. 《Head.First设计模式》的学习笔记(9)--外观模式

    意图:为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 结构: 例子: 假设你有一套杀手级的家庭影院系统,内含DVD播放器.投影仪.自 ...

  6. MySQL事件【转载】

    在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQL语句.对于linux系统熟悉的人都知道linux的cron计划任务,能很方便地实现定期运行指定命令的功能.Mysql在5.1以后推出了 ...

  7. 设计模式C#(一)

    引言 模式(pattern) 一种方案,利用这种方案 完成某种工作. 一种途径,通过这种途径达到某个目的. 一种技术,利用他有效的完成某项工作. 某些领域的从业人员会产生该领域的习惯用语(行话),用语 ...

  8. PhotoShop纸张大小

    1*标准打印纸 A4:210mm*297mm A3: 420mm*297mm 一张全开纸切成多少份 大度16开:210mm*285mm(度:切的意思) 大度8开:420*285mm 2*传统印刷纸 A ...

  9. spring 分散配置

    Spring简化了加载资源文件的配置,可以通过<context:property-placeholder去加载,这个元素的写法如下: <context:property-placehold ...

  10. dsplay:table页面合并表格

    在实际项目中经常会遇到合并表格的情形,现在我将自己合并的方法写出来,供大家教参一下,顺便自己也作个备忘. <%@ page language="java" contentTy ...