[20191003机房测试] 天空龙

奥西里斯之天空龙很喜欢颜色,有一天他找到了三种颜色——红黄蓝
奥西里斯有 a 个红色,b 个黄色,c 个蓝色,他想画出最好的画,
可是需要至少 x 个红色,y 个黄色和 z 个蓝色,似乎并不够。
别担心,奥西里斯会魔法!
他可以把任何两个同种颜色转化为一个另一种颜色!
请问他能不能完成呢?

这题目描述让我感受到面对机翻的恐惧……
这又不是外语翻译过来的啊喂!什么语文水平?

很显然,如果有多余的颜色,把它们分别÷2,就是可以转换的数量
然后再与差的颜色比较,得出答案

代码:

#include<bits/stdc++.h>
using namespace std;

int T,delta,need;
struct Color
{
    int x,y;
}a[5];

bool cmp(Color a,Color b) {return (a.x-a.y)>(b.x-b.y);}

template<class T>inline void read(T &res)
{
    char c;T flag=1;
    while((c=getchar())<'0'||c>'9')if(c=='-')flag=-1;res=c-'0';
    while((c=getchar())>='0'&&c<='9')res=res*10+c-'0';res*=flag;
}

int main()
{
    freopen("osiris.in","r",stdin);
    freopen("osiris.out","w",stdout);
    read(T);
    while(T--)
    {
        delta=need=0;
        for(register int i=1;i<=3;++i) read(a[i].x);
        for(register int i=1;i<=3;++i) read(a[i].y);
        for(register int i=1;i<=3;++i)
            if(a[i].x>a[i].y)
                delta+=(a[i].x-a[i].y)>>1;
        for(register int i=1;i<=3;++i)
            if(a[i].x<=a[i].y)
                need+=a[i].y-a[i].x;
        if(delta>=need) puts("YES");
        else puts("NO");
    }
    return 0;
}

原文地址:https://www.cnblogs.com/tqr06/p/11619760.html

时间: 2024-10-05 05:50:11

[20191003机房测试] 天空龙的相关文章

[CSP-S模拟测试]:天空龙(模拟)

题目描述 奥西里斯之天空龙很喜欢颜色,有一天他找到了三种颜色——红黄蓝.奥西里斯有$a$个红色,$b$个黄色,$c$个蓝色,他想用画出最好的画,可是需要至少$x$个红色,$y$个黄色和$z$个蓝色,似乎并不够.别担心,奥西里斯会魔法!他可以把任何两个同种颜色转化为一个另一种颜色!请问他能不能完成呢? 输入格式 第一行一个正整数$t$表示数据组数.接下来$t$行每行六个整数分别表示$a,b,c,x,y,z$. 输出格式 每组数据输出一行,如果可以就输出$"YES"$,否则输出$"

[20191003机房测试] 太阳神

太阳神拉很喜欢最小公倍数,有一天他想到了一个关于最小公倍数的题目 求满足如下条件的数对(a,b)对数: a,b 均为正整数且 a,b<=n 而lcm(a,b)>n 其中的 lcm 当然表示最小公倍数 答案对 1,000,000,007取模 数据范围是1e10的,打表找了半天规律发现没用-- 那就莫比乌斯反演呗 题目求: \[\sum_{i=1}^{n}\sum_{j=1}^{n}[lcm(i,j)> n]\] 但是大于的太多了,那我们就反过来求,最后用总的来减 也就是求: \[\sum_

csp-s模拟测试57(10.2)「天空龙」&#183;「巨神兵」&#183;「太阳神」

题目是古埃及神话??? A. 天空龙 傻逼模拟,看来没有滑天下之大稽QAQ,也没有打错快读(大雾...) B. 巨神兵 难度爆增,一脸懵比..... 60分状压: 因为是求有向图,关于有向图好像拓扑用的很多,考虑到每个图的拓扑序是一定的 那么我们可以借此转移,设f[i][j]为当前点的状态为i,出度为零的点的度数为j 向下一层转移时枚举下一层的点集,那么点集S中每个点一定要和j连边,可以和i中除j以外的点连边 然后对于每个点cnt1,表示除j以外与i的连边,cnt2表示与j的连边,该点的贡献为2

Host1Plus主机商8个机房测试IP体验

Host1Plus商家也算是比较老的海外主机商(英国),当初进入中国市场也是比较早的,记得那时候支持支付宝的海外主机商尤其的深受用户喜欢.因为我 们大部分网友.站长最多有一个支付宝,很少有双币信用卡或者贝宝支付美元的能力.不过后来几年,HOST1PLUS商家逐渐的落寞,主要原因在于其他商家 的出现,以及他们本身营销能力和产品的策略. 尤其是提供的虚拟主机和VPS主机,价格和方案不是太符合中国用户的口味,配置比较低,而且机房较 少.不过商家应该意识到这一点,在最近2年改动挺大的,今天公司业务正好有

[20191004机房测试] ZGY的早餐

ZGY 每天早上要从宿舍走路到机房,顺便从学校小卖部购买早饭,当然机智的 ZGY 一定会走最短路 学校的路可以看成一无向联通张图,图上有 n 个点,m 条边,每一个点都有一个唯一的编号 1~n 每一条边有一个边权,表示两个点之间的距离,ZGY 的宿舍在 S 点,机房在 T点,而小卖部在 H 点 现在 ZGY 想知道从宿舍经过小卖部到达机房的最短距离 不过因为在这个世界上有 Q个 ZGY,所以你必须回答 Q 个问题 很棒的数据分治题 读入里面说了会读入测试点编号-- 其实是很明显的暗示了-- 一半

机房测试9.22

题解之前 中秋只有一天假! build 以为并查集水题,发现有历史版本,于是可持久化并查集一波(爆0了) 其实有简单点的做法:用二元组记录每一次变化的siz和fa,二分查询即可. 我还在肝可持久并查集,所以就没有代码了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; co

机房测试9.23

题解之前 今天还行啊. Set 肯定要取模. 开始还在想vector这种操作,后来一个dalao发现一定有解,然后有发现一定有一种答案是连续的一段区间,于是就切掉了. 看了题解才发现我们只是运气好. 前缀和如果有n取值,就选%n=0的那一个,不然至多只剩n-1个取值,然而又有n个前缀和. 所以必然有两个相等,输出这之间的下标即可. #include<cstdio> #include<cctype> #include<cstring> #define FN "s

机房测试10.6

砖块 很简单的水题,写起来也很简单. 模拟写的很短,是否也是码力的体现? #include<cstdio> #include<cstring> #include<map> #define FN "block" int mp[1105][1105],dao,ans; char s[105]; int x,y,dx[4]={0,0,-1,1},dy[4]={1,-1,0,0}; std::map<char,int> m; void init(

[机房测试]数字谜题

小 X 同学有很强的计算能力,现在他正在玩一个游戏. 现在有一个正整数 x,每次操作他会将当前的数变为这个数写成二进制后 1 的个数 小 X 不断的进行操作,直到这个数变成 1 为止 由于小 X 的计算能力很强,他现在给出一 n 他想知道有多少不超过 n 的正整数会在 k 次操作后变成 1 由于答案可能很大,请对 1000000007 取模 因为数据范围是\(2^{1000}\),所以一次操作后最多就只有1000个1了 因此直接暴力处理出1~1000所有数变为1的操作次数,把次数为 \(k-1\