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

#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. Java学习笔记之类和对象

    1.类是对象的抽象,对象是类的实例. 2.一个.java 文件,只能有一个公有类. 3.Java的默认访问权限是:default,即不加任何访问修饰符,该权限设置只能在同一包访问.   当前类 同一包 ...

  2. 转 Oracle 12c 使用scott等普通用户的方法

    一.前言 最近电脑上安装了oracle 12c数据库,想体验下新特性.安装完后,便像11g一样在dos窗口进行下面的操作: SQL*Plus: Release 12.1.0.2.0 Productio ...

  3. HTML+CSS Day06 超链接的样式与搭配

    1.格式 a:link    {} 普通的.未被访问的链接 a:visited {}  用户已访问的链接 a:hover  {} 鼠标指针位于链接的上方 a:active{} 链接被点击的时刻 2.常 ...

  4. UIScreen的scale属性

    用来表示显示屏的像素密度与点坐标系统之间的关系.通过该属性,我们可以把视图中逻辑坐标系统里的点坐标转换成设备的物理像素坐标.在配有Retina显示屏的设备中,scale值是2.0,而在非Retina显 ...

  5. sql快速参考

    SQL 语句 语法 AND / OR SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition ALTER TABLE A ...

  6. java 数据结构 队列的实现

    java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java ...

  7. [转]SSL协议与数字证书原理

    1 SSL(Secure Socket Lclientyer)是netscclientpe公司设计的主要用于weserver的安全传输协议.这种协议在WESERVER上获得了广泛的应用. SSL在TC ...

  8. struts2+ajax实现异步验证

    由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在 ...

  9. Python文件打包成EXE文件

    工具:pyinstaller 安装:pip install pyinstaller 使用: 1 将依赖文件集中到一个文件夹:           pyinstaller -D -w xxx.py    ...

  10. Image File Execution Options(转)

    今天公司的一台计算机无法正常工作送来维修,经简单判断是感染了很多病毒,即使在安全模式下也无法清除:于是将硬盘摘下挂到另外一台机器上,用卡巴斯基对病毒进行了查杀,再次启动计算机后发现很多系统维护程序以及 ...