2016百度之星资格赛E题

2023-12-10 09:09
文章标签 百度 2016 之星 资格赛

本文主要是介绍2016百度之星资格赛E题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem E

Accepts: 129
Submissions: 629
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description

小度熊是一个尽职尽责的程序熊,每天产出数千行的代码,代码当中存在很多判断条件。度熊想让自己代码中的这些条件不存在交集。为了简化问题,一个条件可以是一个『简单条件』或者是一个『复合条件』,简单条件由『变量』、『比较符』和『运算数』组成,其中『变量』是用小写字符表示的一串字符,『运算数』仅为整数,『运算符』包括:<、>、<=、>=、==。分别代表:小于、大于、小于等于、大于等于和等于关系。简单条件的格式固定,左边为变量名,中间为操作符,右边为数字。若干个『简单条件』中间通过英文逗号组成一个『复合条件』,各『简单条件』之间是逻辑与的关系,例如: 简单条件: a > 100 复合条件: duxiong < 1000 , a > 100

Input

这里包括一组测试数据,第一行一个正整数 N(1N1000) ,接下来 N 行,每行一个条件,条件可能是一个『简单条件』或者是一个『复合条件』。其中『变量』不会超过30个字符,『运算数』的绝对值在10,000以内。测试数据中,不同变量的数量不会超过30个。其中『变量』、『比较符』和『运算数』之前和之后都有可能出现若干空格字符。所有简单规则都是按照『变量』『比较符』『运算数』这样的顺序定义的,没有特例。

Output

对于第 i 个条件,输出其与前 i1 个条件是否存在交集非空的情况。如果不存在交集非空的其他条件,输出一行字符串:『unique』。否则按照从小到大的顺序输出与其存在非空交集的条件的编号,编号之间用空格分隔,最后一个编号末尾不加空格。各条件从 1N 编号。

Sample Input
4
a < 100
c > 99
b > 100 , b == 99 , c < 98
a < 1000, a >= 99
Sample Output
unique
1
unique
1 2

http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=690&pid=1005

#include<iostream>

#include<cstdio>
#include<cstring>
using namespace std;
#define inf 10010
struct hi
{
int flag;
int count;
char one[40][40];
int two1[40],two2[40];
int three[40];
hi()
{
flag=0;
count=0;
for(int i=1;i<=35;i++)
{
two1[i]=-inf;
two2[i]=inf;
}
}
}a[1010];
void Union(char temp2[40],int temp4,int i,int x)
{
if(strcmp(temp2,"==")==0)
{
if(temp4>=a[x].two1[i] && temp4<=a[x].two2[i])
a[x].two1[i]=a[x].two2[i]=temp4;
else
a[x].flag=1;
}
else if(strcmp(temp2,">")==0)
{
temp4++;
if(temp4>=a[x].two1[i] && temp4<=a[x].two2[i])
a[x].two1[i]=temp4;
else if(temp4<a[x].two1[i]);
else
a[x].flag=1;
}
else if(strcmp(temp2,">=")==0)
{
if(temp4>=a[x].two1[i] && temp4<=a[x].two2[i])
a[x].two1[i]=temp4;
else if(temp4<a[x].two1[i]);
else
a[x].flag=1;
}
else if(strcmp(temp2,"<")==0)
{
temp4--;
if(temp4>=a[x].two1[i] && temp4<=a[x].two2[i])
a[x].two2[i]=temp4;
else if(temp4>a[x].two2[i]);
else
a[x].flag=1;
}
else
{
if(temp4>=a[x].two1[i] && temp4<=a[x].two2[i])
a[x].two2[i]=temp4;
else if(temp4>a[x].two2[i]);
else
a[x].flag=1;
}
}
void deal(char temp1[40],char temp2[40],char temp3[40],int x,int num)
{
int len=strlen(temp3),i;
int temp4=0;
i=0;
if(temp3[0]=='-')
i=1;
for(;i<len;i++)
temp4=10*temp4+temp3[i]-'0';
if(temp3[0]=='-')
temp4*=-1;
for(i=1;i<=num;i++)
if(strcmp(a[x].one[i],temp1)==0)
{
Union(temp2,temp4,i,x);
break;
}
if(i==num+1)
{
a[x].count++;
strcpy(a[x].one[i],temp1);
Union(temp2,temp4,i,x);
}
}
void ans(int x)
{
int arg[1010],l=0,sign;
if(a[x].flag==1)
{
printf("unique\n");
return;
}
for(int i=1;i<x;i++)
{
sign=0;
if(a[i].flag==1)
continue;
for(int j=1;j<=a[x].count;j++)
{
for(int k=1;k<=a[i].count;k++)
if(strcmp(a[x].one[j],a[i].one[k])==0)
if(a[x].two2[j]<a[i].two1[k] || a[i].two2[k]<a[x].two1[j])
{
sign=1;
break;
}
if(sign==1)
break;
}
if(sign==0)
arg[l++]=i;
}
if(l==0)
{
printf("unique\n");
return;
}
else
{
for(int i=0;i<l;i++)
if(i==l-1)
printf("%d\n",arg[i]);
else
printf("%d ",arg[i]);
}
}
int main()
{
int n,where;
char b[300],temp1[40],temp2[40],temp3[40];
cin>>n;
getchar();
for(int i=1;i<=n;i++)
{
gets(b);
where=0;
int len=strlen(b);
for(int j=0;j<len;)
{
if(b[j]==' ' || b[j]==',')
{
j++;
continue;
}
if(where==0)
{
int k=0;
while(j<len && b[j]!=' ' && b[j]!=',')
temp1[k++]=b[j++];
temp1[k]='\0';
where=1;
}
else if(where==1)
{
int k=0;
while(j<len && b[j]!=' ' && b[j]!=',')
temp2[k++]=b[j++];
temp2[k]=0;
where=2;
}
else
{
int k=0;
while(j<len && b[j]!=' ' && b[j]!=',')
temp3[k++]=b[j++];
temp3[k]=0;
where=0;
if(a[i].flag==0)
deal(temp1,temp2,temp3,i,a[i].count);
}
}
ans(i);
}
return 0;
}

这篇关于2016百度之星资格赛E题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/476673

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

Imageview在百度地图中实现点击事件

1.首先第一步,需要声明的全局有关类的引用 private BMapManager mBMapMan; private MapView mMapView; private MapController mMapController; private RadioGroup radiogroup; private RadioButton normalview; private RadioBu

百度之星 2015 复赛 1001 (数长方形)

数长方形    Accepts: 595    Submissions: 1225  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形

百度之星 2015 初赛(1) 1002 找连续数

找连续数      Accepts: 401      Submissions: 1911  Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是

百度之星初赛1002(二分搜索)

序列变换    Accepts: 816    Submissions: 3578  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 给定序列 A={A1,A2,...,An} , 要求改变序列A中

百度之星初赛1006(计算几何:能包含凸包的最小矩形面积)

矩形面积    Accepts: 717    Submissions: 1619  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些

实践课堂|2016成都站|报名开始啦!

Hi,QingCloud 的小伙伴们,欢迎参加史上最有营养的云知识讲堂。 QingCloud 实践课堂系列开始于 2014 年末,在深圳、上海、广州、成都、杭州、北京六个城市,QingCloud 的研发工程师们同近千名 CIO 、架构师、开发者、运维工程师……分享了 QingCloud 的技术理念、功能特性和使用技巧,还有来自人民网、融云、泰捷视频、杏树林、友好速搭、百姓网、冰点、顺丰速运、洋葱

【python 百度指数抓取】python 模拟登陆百度指数,图像识别百度指数

一、算法思想 目的奔着去抓取百度指数的搜索指数,搜索指数的爬虫不像是其他爬虫,难度系数很高,分析之后发现是图片,坑爹的狠,想了下,由于之前做过身份证号码识别,验证码识别之类,豁然开朗,不就是图像识别麽,图像识别我不怕你,于是就有了思路,果然有异曲同工之妙,最后成功被我攻破了,大致思路如下: 1、首先得模拟登陆百度账号(用selenium+PhantomJS模拟登陆百度,获取cookie) 2

百度智能云向量数据库创新和应用实践分享

本文整理自第 15 届中国数据库技术大会 DTCC 2024 演讲《百度智能云向量数据库创新和应用实践分享》 在 IT 行业,数据库有超过 70 年的历史了。对于快速发展的 IT 行业来说,一个超过 70 年历史的技术,感觉像恐龙一样,非常稀有和少见。 但是数据库之所以有这么长的生命力,核心是在不停的变更和创新。 简单回顾一下数据库的历史,在过去的 70 年里面,数据库一直跟着底层基础设

mhtml图片提取 百度图片下载

如果你需要找一些图片,可以先去百度一下,待相关网页加载完成后,点击保存,即可得到一个mhtml文件。这个文件里的图片会用base64进行存储,只需要找到他们并转化就可以。目前在美篇之类的网站上效果还一般,需要继续排查问题。 效果 代码 大概分为提取所有base64、转化为图片两步。 import base64from io import BytesIOfrom PIL import