直接暴力模拟 。以每次还未被删除的cnt[i]为一周期进行暴力模拟

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <cctype>
#include <cstdio>
#include <string>
#include <vector>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define PI 3.1415926535897932626
using namespace std;
int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}
int lcm(int a, int b) {if (a < b) swap(a,b);int tmp = gcd(a,b); return a / tmp * b;}
#define MAXN 1010
int N;
int cnt[MAXN];
int src[MAXN][20];
bool killed[MAXN];
int kill(int day)
{int ans = 300,num = 0,st;for (int i = 1; i <= N; i++)if (!killed[i]){int val = src[i][day % cnt[i]];if (val == ans) num++;if (val < ans){ans = val;st = i;num = 1;}}if (num == 1) return st;return 0;
}
int main()
{int T;scanf("%d",&T);while (T--){scanf("%d",&N);for (int i = 1; i <= N; i++){scanf("%d",&cnt[i]);for (int j = 1; j < cnt[i]; j++)scanf("%d",&src[i][j]);scanf("%d",&src[i][0]);}memset(killed,false,sizeof(killed));int tot = 0, st = 1, ed,ans = 0;while (true){bool flag = false;int tmp = 1;for (int i = 1; i <= N; i++)if (!killed[i]) tmp = lcm(tmp,cnt[i]);ed = st + tmp - 1;for (int i = st; i <= ed; i++){int k = kill(i);if (k){killed[k] = true;//printf("%d %d\n",k,i);tot ++;ans = i;flag = true;}}st = ed + 1;if (!flag || tot >= N) break;}printf("%d %d\n",N - tot,ans);}return 0;
}

转载于:https://www.cnblogs.com/Commence/p/4019966.html

UVA 10273 Eat or not to Eat?相关推荐

  1. java定义一个eat方法_Java继承概念详细解读

    继承与合成基本概念 继承:可以基于已经存在的类构造一个新类.继承已经存在的类就可以复用这些类的方法和域.在此基础上,可以添加新的方法和域,从而扩充了类的功能. 合成:在新类里创建原有的对象称为合成.这 ...

  2. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  3. 【面向对象编程】(4) 类的继承,重构父类中的方法

    各位同学好,今天和大家分享一下面向对象编程中,类的三大特征之继承.主要介绍:子类继承父类的基本方法:重写父类的类方法:重构父类的初始化方法:super() 方法.本节主要是单继承,多继承在下一节中介绍 ...

  4. 深入理解 python 元类

    一.什么的元类 # 思考: # Python 中对象是由实例化类得来的,那么类又是怎么得到的呢? # 疑问: # python 中一切皆对象,那么类是否也是对象?如果是,那么它又是那个类实例化而来的呢 ...

  5. python中的协程(二)

    协程 1.协程: 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地,该线程内的其他 ...

  6. python学习点滴记录-Day10-线程

    多线程 协程 io模型 并发编程需要掌握的点: 1 生产者消费者模型2 进程池线程池3 回调函数4 GIL全局解释器锁 线程 理论部分 (摘自egon老师博客) 一.定义: 在传统操作系统中,每个进程 ...

  7. 数据结构与算法:04 C#面向对象设计 II

    04 C#面向对象设计 II 知识结构: 5.属性 例1:属性概念的引入(问题) public class Animal {public int Age;public double Weight;pu ...

  8. 数据结构与算法:03 C#面向对象设计 I

    03 C#面向对象设计 I 知识结构: 1.类与对象 类:用高级程序语言实现的一个ADT描述. 对象:通过类声明的变量. 2.封装 2.1 什么是封装 把类的内部隐藏起来以防止外部看到内部的实现过程. ...

  9. Java面向对象三大特征 之 多态性

    1.理解多态性:可以理解为一个事物的多种形态 2.对象的多态性:父类的引用指向子类的对象(子类的对象赋给父类的引用) 3.多态的使用:虚拟方法的调用 子类中定义了与父类同名同参数的方法(重写),在多态 ...

最新文章

  1. Win10网页打不开提示DNS_PROBE_POSSIBLE错误解决
  2. R语言对dataframe(data.table)数据分层随机抽样实战
  3. 李开复:发明期已过,AI科学家创业需谨慎(附演讲视频)
  4. 网站能拿到其他网站的cookie_如何设计网站能让网站建设的更有吸引力
  5. Hadoop2.6.0的Intellij Idea 插件
  6. 发送结构化网络数据Server端
  7. 套接字(Windows)
  8. C语言数组和指针的区别
  9. docker自动部署脚本
  10. i7 10510u相当于什么处理器
  11. 服务器显示阵列卡升级,Systemx服务器在BIOS中刷新阵列卡微码
  12. freeswitch拨打分机号
  13. win7电脑计算机上配置无线网,Win7无线网络共享设置方法
  14. MATLAB之自动控制原理(1)
  15. ValueError: empty range for randrange() (0, 0, 0)
  16. DSX2-8000如何校准?校准流程?
  17. 一对一培训之视频免费分享-2018-03-19-第 04 阶段-部署-基础-环境
  18. 欧洲杯第五周的比赛闲聊
  19. (一)虚拟化及云原生基本概念及原理解析
  20. 计算机辅助数学教学论文,计算机辅助数学教学论文

热门文章

  1. muduo学习笔记 - 第3章 多线程服务器的适合场合与常用编程模型
  2. HDU 2050 折线分割平面
  3. c++ primer 习题13.39自己做的答案
  4. 比赛结果预测_决策树_随机森林(通用 数据挖掘入门与实践-实验5)
  5. 递归与分治——二分查找算法(折半查找算法)
  6. bootstrap form表单提交_[Selenium]28. 处理表单元素
  7. input type=text 无法使用.html(),input type=”text” (Elements) – HTML 中文开发手册
  8. html设置excel打开新窗口,怎么在excel的大页面上设置第几页第几页的
  9. linux最基础安装,Linux Nginx最基础的十大安装步骤(2)
  10. 3GPP Release、TSG、RAN等概念介绍