【kAri OJ604】圣哲的树
题目描述
果园大咖圣哲有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】圣哲的树的更多相关文章
- 【kAri OJ】621. 廖神的树
时间限制 3000 ms 内存限制 65536 KB 题目描述 廖神和男神在植树节的时候准备玩一个奇怪的游戏,他们现在有一个被分割成n*n个格子的矩形土地,他们现在准备往这个地里种树,但这个种树游戏必 ...
- 【kAri OJ】wzt的树
时间限制 1000 ms 内存限制 65536 KB 题目描述 改革春风吹满地,中国人民真争气!家庭联产承包责任制以后,全国人民争想发家致富.wzt于是包了一个山头来种植金丝楠木,花了好几年种了N棵树 ...
- 【kAri OJ 616】Asce的树
时间限制 1000 ms 内存限制 65536 KB 题目描述 作为一个东北大老爷们,大A熊以力气大著称,现在有一颗半径为r的树,剖面图如黑色的圆,大A熊决定搬几个半径为R的圆柱形桶将其围住,剖面图如 ...
- 【kAri OJ605】陈队的树
时间限制 1000 ms 内存限制 65536 KB 题目描述 陈队有N棵树,有一天他突然想修剪一下这N棵树,他有M个修剪器,对于每个修剪器给出一个高度h,表示这个修剪器可以把某一棵高度超过h的树修剪 ...
- 【kAri OJ620】winoros的树
时间限制 1000 ms 内存限制 65536 KB 题目描述 winoros 是一个热爱大自然的萌妹子,在植树节的时候,她打算带着集训的朋友们一起去种树. 到了种树的地方,学校给了她们四个不可弯曲. ...
- B树——算法导论(25)
B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- 再讲IQueryable<T>,揭开表达式树的神秘面纱
接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...
- HDU1671——前缀树的一点感触
题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceed ...
随机推荐
- hdu-5496 Beauty of Sequence(递推)
题目链接: Beauty of Sequence Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java ...
- POJ 2263 Heavy Cargo 多种解法
好题.这题可以有三种解法:1.Dijkstra 2.优先队列 3.并查集 我这里是优先队列的实现,以后有时间再用另两种方法做做..方法就是每次都选当前节点所连的权值最大的边,然后BFS搜索. ...
- MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 安卓内存不足(删除data/dalvik-cache目录)
alvik-cache alvik-cache名词解释: 在系统data/dalvik-cache文件夹里有很多安装卸载文件(优化过的字节码),这些文件是当你安装好一个应用程序后,系统会自动生成的一个 ...
- linux服务器报Too many open files的解决方法
linux 上tomcat 服务器抛出socket异常“文件打开太多”的问题 java.net.SocketException: Too many open filesat java.net.Plai ...
- brainfuck
/阅读这样的代码就像在强奸你的大脑 #include<stdio.h> #include<ctype.h> #include<stdlib.h> #include ...
- Volley(三)—— ImageRequest & Request简介
Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...
- Entity Framework版本历史概览
转自:http://www.cnblogs.com/fecktty2013/archive/2014/09/26/entityframework-overview.html EF版本 .net fra ...
- VMware 不可恢复错误(svga)”解决方法
虚拟机VMware 文件在迁移到另一台计算机时出现"VMware Workstation 不可恢复错误(svga)" 将另一台机器的 VMware 文件拷贝至本机,打开虚拟机出现 ...
- UTF-8 带签名和不带签名的区别
就和字面上一样,带签名的UTF-8文件比不带签名的,在文件开头的地方就多了几个16进制字符--[EF BB BF ],这9个字符就是"签名",这样做的好处是让文本处理工具或者浏览器 ...