gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,
1195: 相信我这是水题
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 821 Solved: 219
Description
GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,萌萌的师弟师妹们们经常会让pigofzhou帮他们Debug,因为师弟师妹们打代码使用编程语言的种类千奇百怪,pigofzhou为此很头疼。现在假设师弟师妹们只喜欢Java或者C++或者C,因为他希望所有人都学相同的编程语言,只有这样pigofzhou教的时候才相对轻松,经过彻夜研究发现,他可以通过自己的花言巧语使两个不同爱好的人的爱好变成另一个爱好(比如他对一个喜欢Java的和一个喜欢C++的人使用花言巧语,那么这两个人都会喜欢C语言) 那么问题来了,聪明的pigofzhou能否通过若干次花言巧语来让所有人都学同一门编程语言。
Input
第一行包含了一个整数T-----表示输入数据为T组(T <= 100)。 每组测试样例有3个数字a,b,c;分别代表喜欢Java,喜欢C++,喜欢C的人数。(输入数据范围为int型)
Output
如果pigofzhou能够通过若干次改变使得所有人学相同的编程语言,输出“YES”,否则输出“NO”(不带引号);
Sample Input
Sample Output
HINT
人数范围为int型
Source
1 /* gdutcode 1195 ____________________
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
#define pb(x) push_back(x)
#define ss(x) scanf("%s",x)
#define sd(x) scanf("%d",&x)
#define sll(x) scanf("lld",&x)
typedef unsigned long long ull;
#define mem(A, X) memset(A, X, sizeof A)
#define ford(i,l,u) for(ll (i)=(ll)(l);(i)>=(ll)(u);--(i))
#define foreach(e,x) for(__typeof(x.begin()) e=x.begin();e!=x.end();++e)
#define fori(i,l,u) for(ll (i)=(ll)(l);(i)<=(ll)(u);++(i))
#define delete_this freopen("in.txt","r",stdin)
#define sd2(x,y) scanf("%d%d",&x,&y)
#define slf(x) scanf("%lf",&x)
#define sc(x) scanf("%c",&x)
typedef pair<int,int> pii;
#define sec second
#define fir first const ll mod=1e9+7;
const ll maxn=1e5+10; int main()
{
delete_this;
int tc;
while(cin>>tc)
{
fori(kase,1,tc)
{
int a,b,c;
cin>>a>>b>>c; int flag=0; int t=abs(b-c);
if(t%3==0) flag=1; t=abs(a-c);
if(t%3==0) flag=1; t=abs(a-b);
if(t%3==0) flag=1; //if(a==c||a==b||b==c) flag=1; if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl; }
}
return 0;
} /*__________
analysis: 一句话:只要存在两种语言的差值能够拆分成若干个3就可以通过依次分解这若干个3使其到达yes。 否则不能。
设三种分别为a,b,c,考虑三个数字的两两之差t1,t2,t3,(现在ti的差有非常多的可能,下面简化分类。)
考虑存在ti取哪些值能够yes, 只要有一个ti=0 yes,下面考虑当ti=1,2 ,3....
事实上ti=3 6 9.。。 为其充分必要条件。
充分: 先证差为3: 设 x x+3 y(y>=0)
则可以在前两个中均取x个,状态转化为 0 3 y+2x
若y+2x==0,已经yes.否则,从y+2x和3中各取1个,状态转化为 2 2 y+2x-1 显然yes.
现在考虑差为6 9 ... 同样的设: x x+3+3+3+3... y
同样的均取x, 0 3+3+3... y+2x
同样,y+2x=0,yes.否则,先考虑单个3,从y+2x与3中各取1,状态2 y+2x 2+3+3...
此时,取第一个和第三个中的2,状态转化为0 y+2x+4 0+3+3...,
分析这部分的效果: 三的个数被这一操作减少了一,即差值多个三
可以不断执行这个操作,最终到达上面的差值一个三的状态。 必要性: 反证:将a b c 对3取模以后划归,只考虑不存在两个数字相等的情况,只有0 1 2 这一种情况,
于是,0 1 2 只能转移到 2 0 1 等价于未转移。所以只要在证可以取模即可:3x 3y+1 3z+2
每次只洗脑2个人是最基本的操作(所以很多人的情况是这基本操作的多次执行),
1 2 3x-1 3y 3z+3+1
1 3 3x-1 3y+3 3z+1
2 3 3x+2 3y 3z+1 都可以写成3u+2 3v 3w+1,也就是说所有可能转移到的状态始终维持
在这种类似(0 1 2)的状态,所以永远转移不到yes.
debug :
note :
*/
gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,的更多相关文章
- Codeforces Round #368 (Div. 2) A. Brain's Photos (水题)
Brain's Photos 题目链接: http://codeforces.com/contest/707/problem/A Description Small, but very brave, ...
- POJ 3176 Cow Bowling (水题DP)
题意:给定一个金字塔,第 i 行有 i 个数,从最上面走下来,只能相邻的层数,问你最大的和. 析:真是水题,学过DP的都会,就不说了. 代码如下: #include <cstdio> #i ...
- Codeforces Gym 100286G Giant Screen 水题
Problem G.Giant ScreenTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/con ...
- Codeforces Beta Round #9 (Div. 2 Only) B. Running Student 水题
B. Running Student 题目连接: http://www.codeforces.com/contest/9/problem/B Description And again a misfo ...
- hdu4791水题
题意: 打印东西,给你区间和每个区间的价格,然后输入任务张数,输出最少花费.. 题解: 昨晚的小测试就有这个题目,当时蒙B了,怎么也读不懂题目,一直纠结怎么把150拆成1 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- HDOJ 2317. Nasty Hacks 模拟水题
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- ACM :漫漫上学路 -DP -水题
CSU 1772 漫漫上学路 Time Limit: 1000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
- ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)
1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 154 Solved: 112[ ...
随机推荐
- spring通过静态方法获得properties文件的值
获得spring bean方法 @Component public class BeanUtils implements ApplicationContextAware { private stati ...
- APC注入(Ring3层)
/* 步骤: 1.提权(GrantDebugPrivileges) (1)获得令牌token,OpenThreadToken(),OpenProcessToken () WINADVAPI BOOL ...
- Vsftp精解之安装配置及原理(一)
简介 Vsftp(Very Secure FTP)是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,是一款小巧而又易用FTP服务器程序,Vsftpd 在安全性.高性能及稳定性三个方面有很好 ...
- VMware下利用ubuntu13.04建立嵌入式开发环境之三
系统环境建立完成后就要安装和配置嵌入式开始需要的工具和服务. 一般我们在交叉编译是需要的服务有:smb.tftp.telnet.nfs.ssh和x11等.下面一步步,介绍如何安装这些服务. 一.smb ...
- 简单几句话总结Unicode,UTF-8和UTF-16
概念 先说一说基本的概念,这包括什么是Unicode,什么是UTF-8,什么是UTF-16. Unicode,UTF-8,UTF-16完整的说明请参考Wiki(Unicode,UTF-8,UTF-16 ...
- linux密码的更改
找到UTF-8,在后面空格后输入init=/bin/sh 然后CHRL+X启动 进入到这个界面,输入mount -o remount,rw / 再输入touch / .autorelabel ,然后 ...
- windows系统c盘占满/linux系统磁盘block、inode占满处理
windows系统 下载c盘清理.bat到服务器,双击bat文件将自动清理 linux系统 先远程ssh登录上服务器,登录教程:http://www.west263.com/faq/list.asp? ...
- maven 问题解决 tools以及jconsole两个jar包 无效
在SVN上下载项目,结果完成后出现两个jar包不存在的情况 如下图: 然后,第一步就是去查看POM.xml文件是否配置了这两个文件,结果并没有,于是就更加奇怪了 所以怀疑是不是其他maven下载的ja ...
- 静态方法中的this
1using System; 2using System.Web.Script.Serialization; 3 4namespace Demo 5{ 6 /**//// <summary ...
- Maven 标签详解
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...