array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 B. Drazil and His Happy Friends - 爱码网

这是 Codeforces Round #292 (Div. 2)的一道题,原题在这里,题意就是:

小明有n个男同学(编号为 0 ~ n-1)和m个女同学 (编号为 0 ~ m-1),小明要安排男女之间约会,如何安排约会呢,假设时间是i (i >=0) ,小明在 i 天就邀请 i % n 号男同学,和 i % m 号女同学约会,如果男女同学之间有一个是快乐的,那么两个人都是快乐的,那么问题来了,小明能否使他们全部都快乐?

我当时是这样想的,要是n和m相等的话,那么要是在编号区间 [0, n)之间都有人快乐,例如,

例a:

      要是n = m = 3, n 中快乐的有 0、1, m 中快乐的有 2,那么全部人在约会后都会快乐。

要是n 和 m 不想等呢? 问题来了,然后这个时间要怎么联系起来?

我当时想不出,模拟这个约会的过程,用O(n * m) 的方法,结果被hack了一下,水爆了 = =、 看了editorial后才明白的。

好了,回到问题,要是n 和m 不想等的时候呢,假设n = 2 , m = 3,则在时间 i  = 2 后,在男生中 2%2 = 0 号男生与 2%3 = 2 号女生约会,可以把m 中的2 号女生看作一个,与 两个男生约会,问题就变成了 n = 2, m = 1, 之所以要这么做,是为了找出一个区间,这个区间满足,每个编号都有人快乐, 就像前面例a 一样。然后继续,n = 2, m = 1时,在时间i = 1 时,男生中 1 % 2 = 1 号男生与 1 % 1 = 0 号女生约会,把 n 中的1 号男生看作一个,与1个女生约会,问题就编程了 n = m = 1, 这样,就达到了之前说的一个目的,找到区间[0, 1) 要是这个内对应的编号都有人快乐,那么全部人都会快乐。先设 c 是 n 和 m 的最大公约数,在 n = 2, m = 3, i = 2 时,这样变换, n = 2, m = m % n = 1, i 在累加时也这样做,最后把问题变换为 n = m = 1, 这样,只要区间之间

[0, 1) 之间对应的编号都有人快乐,那么全部人都会快乐。是不是很像gcd,在例子a 中,因 0、1 号是快乐的,那么0 % 1 = 0,  1 % 1 = 1,会因为他们而快乐,所以,每个快乐的人的编号去模n和m的公约数,就求出因为他们而快乐的人的编号。好了,说了一大堆没有逻辑的话,该上代码了。

#include <stdio.h>
#include <iostream>
#include <map>
#include <string.h>
using namespace std;
  
int gcd(int a, int b){
    int c, d;
    d = max(a, b); c = min(a, b);
    if(d%c == 0) return c;
    else return gcd(d%c, c);
}
int pep[101];
int main(){
    int n, m, b, g, c, i, cnt = 0, id;
    // freopen("e:/in.txt", "r", stdin);
    memset(pep, 0, sizeof(pep));
    cin >> n >> m;
    c = gcd(n, m);
    cin >> b;
    for( i = 0; i < b; i++ ){
	    cin >> id;
	    if(!pep[id%c]) pep[id%c] = 1, cnt++; 
    }
    cin >> g;
    for( i = 0; i < g; i++ ){
	    cin >> id;
	    if(!pep[id%c]) pep[id%c] = 1, cnt++;
    }
    
    if(cnt == c) cout << "Yes";
    else cout << "No";
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章: