时间限制 1000 ms 内存限制 65536 KB

题目描述

果园大咖圣哲有12个棵树,其中有且仅有一个是有病的,有病的树比真的或轻或重,给出3次天平测量重量的结果,每次告知左侧和右侧的树各有哪几个,以及天平的平衡状态,问第几棵树是生病的,并且请准确说出这棵树是轻是重。

数据保证每次天平的左右两边树数量相等。

输入格式

输入有多组数据,第一行有一个整数T(T≤15)。

每组的数据有三行:

每一行分别为三个字符串S1,S2,S3
S1表示天平左侧放置的树,S2表示天平右侧放置的树,S3表示天平平衡后右侧的状态up,down,even。

S1,S2由ABCDEFGHIJKL组成,分别以此表示12棵树。

输出格式

每组数据输出独占一行,输出是三种可能中的一种:

X is light.

X is heavy.

cannot judge.

输入样例

2
A B up
B A down
A C even
AB CD even
EF GH even
I J even

输出样例

B is light.
cannot judge.

分析

法一:数据小,可以直接暴力枚举病树,以及是轻是重,当只有一种情况符合三次天平结果则有答案。

法二:even时,两边的都是健康的,up时,可能右边的有轻的,或者左边的有重的,down,相反。

  v[i]记录第i棵树可能重或者可能轻的次数,up时,就给天平右边的v[i]--,左边的v[i]++。最后找除了健康的树以外,v[i]绝对值最大的,如果只有一个,那就是答案。健康的数的v[i]赋一个能区分开的值,比如v[i]设为9,如果第一次是even,后面最多减两次,为7,而可能不健康的数v最大为3,这样就可以区分开。

代码

#include<iostream>
#include<cmath>
#include<cstring>
#define l v[s1[j]-'A']
#define r v[s2[j]-'A'] using namespace std; int t,v[];
char ch;
string s1,s2,s3,ans; void solve(int f)
{
for(int j=; j<s1.size(); j++)
{
l+=f;
r-=f;
}
} void judge()
{
ch=;
int max=,maxi=-,t;
for(int i=; i<; i++)
if(v[i]<)
{
t=abs(v[i]);
if(t==max) maxi=-;
else if(t>max)
{
max=t;
maxi=i;
}
}
if(maxi>=)
{
ch=maxi+'A';
if(v[maxi]<) ans=" is light.\n";
else ans=" is heavy.\n";
}
}
int main()
{
cin>>t;
while(t--)
{
memset(v,,sizeof v);
for(int i=; i<; i++)
{
cin>>s1>>s2>>s3;
if(s3=="up") solve();
else if(s3=="down") solve(-);
else for(int j=; j<s1.size(); j++)l=r=;
}
judge();
if(ch) cout<<ch<<ans;
else cout<<"cannot judge.\n";
}
return ;
}

【kAri OJ604】圣哲的树的更多相关文章

  1. 【kAri OJ】621. 廖神的树

    时间限制 3000 ms 内存限制 65536 KB 题目描述 廖神和男神在植树节的时候准备玩一个奇怪的游戏,他们现在有一个被分割成n*n个格子的矩形土地,他们现在准备往这个地里种树,但这个种树游戏必 ...

  2. 【kAri OJ】wzt的树

    时间限制 1000 ms 内存限制 65536 KB 题目描述 改革春风吹满地,中国人民真争气!家庭联产承包责任制以后,全国人民争想发家致富.wzt于是包了一个山头来种植金丝楠木,花了好几年种了N棵树 ...

  3. 【kAri OJ 616】Asce的树

    时间限制 1000 ms 内存限制 65536 KB 题目描述 作为一个东北大老爷们,大A熊以力气大著称,现在有一颗半径为r的树,剖面图如黑色的圆,大A熊决定搬几个半径为R的圆柱形桶将其围住,剖面图如 ...

  4. 【kAri OJ605】陈队的树

    时间限制 1000 ms 内存限制 65536 KB 题目描述 陈队有N棵树,有一天他突然想修剪一下这N棵树,他有M个修剪器,对于每个修剪器给出一个高度h,表示这个修剪器可以把某一棵高度超过h的树修剪 ...

  5. 【kAri OJ620】winoros的树

    时间限制 1000 ms 内存限制 65536 KB 题目描述 winoros 是一个热爱大自然的萌妹子,在植树节的时候,她打算带着集训的朋友们一起去种树. 到了种树的地方,学校给了她们四个不可弯曲. ...

  6. B树——算法导论(25)

    B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...

  7. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  8. 再讲IQueryable<T>,揭开表达式树的神秘面纱

    接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...

  9. HDU1671——前缀树的一点感触

    题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceed ...

随机推荐

  1. UVALive 6450 Social Advertising DFS解法

    题意:一些人有朋友关系,在某个人的社交网站上投放广告可以被所有该人的直接朋友看到,问最小投放多少个广告使给出的人都看到广告.(n<=20) 解法:看到n的范围可以想到用二进制数表示每个人被覆盖与 ...

  2. RabbitMQ 一二事 - 简单队列使用

    消息队列目前流行的有三种 1. RabbitMQ 2. ActiveMQ 3. Kafka 这三种都非常强大,RabbitMQ目前用的比较多,也比较流行,阿里也在用 ActiveMQ是阿帕奇出品,但是 ...

  3. Unity3D 多平台 预编译 宏定义

    平台定义 UNITY_EDITOR 编辑器调用. UNITY_STANDALONE_OSX 专门为Mac OS(包括Universal,PPC和Intelarchitectures)平台的定义. UN ...

  4. HBuilder打包ios应用

    1先安装itunes在电脑上 2,在HBuilder的工具栏上的"工具"选项卡上安装ios插件

  5. 查询各个商品分类中各有多少商品的SQL语句

    SELECT goods_category_id ,count(*) FROM `sw_goods` group by goods_category_id

  6. Linux网络共享管理(ssh,nfs,samba)

    OpenSSH服务器: ssh协议:提供安全的ssh环境用于远程管理,默认端口:22: 服务名称:sshd openssh-server包的安装文件: 使用ssh客户端程序: 连接目标主机: ssh ...

  7. C语言 文件操作5--文件的常用函数

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //stdin:标准输入文件指针,系统 ...

  8. 使用ajax跨域withCredentials的作用

    默认情况下,跨源请求不提供凭据(cookie.HTTP认证及客户端SSL证明等).通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据.如果服务器接收带凭据的请求,会用 ...

  9. 流程引擎Activiti系列:在eclipse中搭建咖啡兔的Activiti演示工程中的各种坑及其解决方法(kft-activiti-demo-no-maven)

    近期在学习activiti,打算基于现有的框架,比如activiti-explorer或者咖啡兔的示例工程 kft-activiti-demo,在此基础上添加自己的业务流程,看看是否可以走通,以及这个 ...

  10. Windows10+Ubuntu双系统安装[多图]

    最近因为毕设重新回归Ubuntu,手头有一台装了Win10的ThinkPad X240s,最终成功完成了Windows 10 教育版和Ubuntu Kylin 15.10 的双系统配置,下文(多图慎入 ...