子序列问题sequence(【CCF】NOI Online能力测试2 提高组第二题 )
游戏match(【CCF】NOI Online能力测试2 提高组第三题 )

题目背景

1s 256M

题目描述

你有 1020个格子,它们从 0 开始编号,初始时所有格子都还未染色,现在你按如下规则对它们染色:
编号是 p1 倍数的格子(包括 00 号格子,下同)染成红色。
编号是 p 2倍数的格子染成蓝色。
编号既是 p1倍数又是 p 2倍数的格子,你可以选择染成红色或者蓝色。
其中 p1和 p2是给定的整数,若格子编号是 p1或 p2的倍数则它必须要被染色。在忽略掉所有未染色格子后,你不希望存在 kk 个连续的格子颜色相同,因为你认为这种染色方案是无聊的。现在给定 p1 , p2, k,你想知道是否有一种染色方案不是无聊的。

输入格式

本题包含多组数据。

第一行一个整数 T表示数据组数。

每组数据一行三个正整数 p1 , p2 , k,变量意义见题目描述。

输出格式

对于每组数据,输出一行一个字符串,若存在一种染色方案不是无聊的,则输出 YES,否则输出 NO。

选手程序输出结果与样例或题面中的一种格式相符即可,即不区分大小写。例如,如果标准答案为 YES ,则输出结果 YES/Yes/yes 都视为正确。

输入样例

4
2 10 4
2 3 6
1 4 7
1 1 2

输出样例

No
Yes
Yes
Yes

输入样例

8
370359350 416913505 3
761592061 153246036 6
262185277 924417743 5
668232501 586472717 2
891054824 169842323 6
629603359 397927152 2
2614104 175031972 68
924509243 421614240 4

输出样例

Yes
Yes
Yes
No
No
No
Yes
Yes

思路分析:

1.设p1<p2,且互质,如果不互质,两边除 gcd(p1,p 2) 即可,
则最坏的情况,也就是从 kp2+1 到 (k+1)p2-1这个连续串内塞 p1所对应的颜色,这样就有(p2-2)/p1+1 个连续块,将其与 k比较即可。
2.注意,当k=1时,无论怎么涂都是No!!!

C++代码如下:

#include <iostream>
using namespace std;
long long p1,p2,k,t;
long long gcd(long long a,long long b)return !b?a:gcd(b,a%b);
int main()
{cin>>t; while (t--){cin>>p1>>p2>>k;if (k==1){cout<<"NO"<<endl;continue;}if (p1>p2)swap(p1,p2);long long x=gcd(p1,p2);p1/=x;p2/=x;if(p2>2 && (p2-2)/p1+1>=k)cout<<"NO"<<endl;elsecout<<"YES"<<endl;} return 0;
}

其他的想法

算法一

• 当 格 子 数 到 达 Icm(p1,p2)时,如果在0〜lcm(p1,p2)中搜到
一种方案使得涂色不无聊,后面的格子可以效仿 0 ~ lm( p1 , p2 )来 涂 色 使 得 所 有 的 格 子 都 不 无 聊 。 ( 就 是 格
子的染色方案有循环的意思)
•可以暴力了!
•枚举每一个既可以涂红色又可以涂蓝色的格子的颜色。
• 时间复杂度:O(T*2max(p1,p2))
• 期望得分:15分

算法二

•考虑不那么暴力的做法
• 发 现 最终 连 续 的 颜 色 一 定 是 间 距 较 小 的 那 个 。
•间距较大的两个颜色之间一定会涂上一个间距较小的颜色从而将间距较大的颜色隔幵
• 那 么 既可 以 涂 红 色 又 可 以 涂 蓝 色 的 格 子 一 定 染 上 的 是 间较大的颜色。这样可以尽可能的断开所有染上间隔较小的颜色的格子从 而使得连续段最短 。
• 如 何 判 定 ? 暴 力 出 1~lm( p1 , p2 ) 的格子的颜色 , 然后直数颜色就可以了。
• 时间复杂度:O(T*lcm(p1,p2))
• 期望得分:25分

算法三

•我们可以设p1>p2
•根据算法二,发现红色之间的蓝色个数可以直接计算
•时间复杂度:O(T*min(p1,p2))
•期望得分:60分

算法四

• 同 样 , 我 们 设 p1>p2
•其实我们只需要求出两种颜色什么吋候相邻的最小而又不重叠。 这 吋候是最有可能出现连续的k个蓝色的 ,因为我们只关心间隔中最大的蓝色数量。
• 等 价 ax-by=c(等同于ax mod b= c) 求 c的 M小值(c>0)
•看到这个式子,或许会想到扩展欧几里得算法
• 要 使 得 这个式子有解需要满足gcd( a, b)|c ( 贝 祖 定 理 )
• 所 以 这 里 的 c最 小 值 就 是 gcd( a, b) 。
• 最后就是判定当与上一个的间隔为gcd( a, b) 时是否满足条件。
•时间复杂度:O(Tlogn)
•期望得分:100分

涂色游戏color(【CCF】NOI Online 能力测试2 提高组第一题 )相关推荐

  1. 子序列问题sequence(【CCF】NOI Online能力测试2 提高组第二题 )

    本题代码稍后加入 题目背景 2s 512M 题目描述 给定一个长度为 n的正整数序列 A1, A2, ⋯, An .定义一个函数 f(l,r) 表示:序列中下标在 [l,r]范围内的子区间中,不同的整 ...

  2. 未了(endless)(【CCF】NOI Online 能力测试2 入门组第一题 )

    时间限制: 1.0 秒 空间限制: 256 MB 题目描述 由于触犯天神,Sisyphus 将要接受惩罚. 宙斯命 Sisyphus 推一块巨石上长度为 L的山坡.Sisyphus 匀速向上推的速度为 ...

  3. 游戏match(【CCF】NOI Online能力测试2 提高组第三题 )

    题目背景 1s 512M 题目描述 小 A 和小 B 正在玩一个游戏:有一棵包含 n=2m个点的有根树(点从1∼n 编号),它的根是 1 号点,初始时两人各拥有 m 个点.游戏的每个回合两人都需要选出 ...

  4. 优秀子序列(【CCF】NOI Online能力测试3 提高组)

    题目描述 现在请你求出 A 的所有优秀子序列的价值之和,答案对 10^9+7 取模. 输入格式 第一行一个正整数 n 表示序列长度. 第二行 n 个用空格分隔的非负整数,表示 a1​,a2​,⋯,an ...

  5. 魔法值(【CCF】NOI Online能力测试3 提高组)

    题目描述 H 国的交通由 n 座城市与 m 条道路构成,城市与道路都从 1 开始编号,其中 1 号城市是 H 国的首都.H 国中一条道路将把两个不同城市直接相连,且任意两个城市间至多有一条道路. H ...

  6. NOI Online #2 提高组 第一题:涂色游戏

    NOI Online #2 提高组 第一题:涂色游戏 前言 题目 解析 代码 前言 呦呵,这道题我竟然爆零了 而且我的暴力dfs死循环了!\bold{\Large\xcancel\text{而且我的暴 ...

  7. 建设城市(city)(【CCF】NOI Online 能力测试2 入门组第三题 )

    时间限制: 1.0 秒 空间限制: 256 MB 题目描述 球球是一位建筑师.一天,他收到市长的任务:建设城市.球球打算建造 2n 座高楼.为了保证城市美观,球球做出了如下计划: 球球喜欢整齐的事物. ...

  8. luogu P6476 [NOI Online 2 提高组]涂色游戏color

    题面传送门 考虑一下,其实只要管一个两个倍数点到另一个两个倍数点就好了. 设p1<p2p_1<p_2p1​<p2​ 贪心一下,发现两个倍数点都赋值p2p_2p2​就是最优的. 对于任 ...

  9. 观星(【CCF】NOI Online能力测试3 入门组)

    题目描述 Jimmy 和 Symbol 约好一起看星星,浩瀚的星空可视为一个长为 N.宽为 M 的矩阵,矩阵中共有 N×M 个位置,一个位置可以用坐标 (i,j)(1≤i≤N,1≤j≤M)来表示.每个 ...

最新文章

  1. 深度学习的多个loss如何平衡?
  2. 【已解决】IDEA 配置tomcat后,javaweb项目报404
  3. Squid 访问控制配置
  4. ssh框架常见错误与解决方法
  5. php 判断 跳转url参数,怎么通过链接获取跳转后的url参数
  6. html div findchild,javascript – JQuery查找父div子标签
  7. 如何将c语言编译成动态链接库,将C语言源代码编译成动态链接库
  8. **汉服有哪些基本形制呢**
  9. 人民币大写转换-Java 8
  10. uv纹理坐标设定与贴图规则
  11. 商务个人邮箱、VIP邮箱哪个最好用?外贸安全邮箱又怎么选?
  12. linux刻录光盘空间不足,Linux下的光盘刻录技巧
  13. JRebel激活与配置
  14. 视频人员行为识别(Action Recognition)
  15. html em加粗,HTML5 :b/strong加粗,i/em倾斜区别
  16. 如何高效的配置Nginx
  17. java输出GPA_使用ENUM和switch case的循环Java GPA计算器
  18. python使用大漠插件教程_python调用大漠插件教程05字库
  19. 织梦插件织梦CMS百度收录查询及批量推送未收录插件
  20. 【Demo3d】Visual类对象操作常用方法

热门文章

  1. java applet 输出多行_java – 在Applet中列出输入和输出音频设备
  2. 等保2.0 | 网站信息系统安全等级保护需要哪些步骤?
  3. 苹果要求开发者归还DTK Mac mini,可获得200美元M1 Mac抵用券
  4. DTK Barcode Reader SDK,支持各种文档和图像格式
  5. 用VS2019进行RTKLIB2.4.3调试的两种方法
  6. Linux命令:grep命令 | egrep命令
  7. AI行业者必看!领先时代的智能资讯机器人步步逼近!
  8. 一加手机怎么root权限_一加7怎么root 官方内核代码开源是关键
  9. [转]从博士毕业的去向看要不要读博
  10. Kode Reviews:危机中的项目自救