uva 10273 Eat or Not to Eat?

点击打开链接uva 10273

思路: 暴力求解
分析:
1 题目要求没有吃掉的奶牛的个数已经最后一次吃掉奶牛的天数
2 没有其它的方法只能暴力,对于n头牛的n个周期求最小公倍数,然后在2个公倍数之内暴力求解

代码:

#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 1010;

int n , lcm;
vector<int>v[MAXN];
bool isEat[MAXN];

int gcd(int a , int b){
    return b == 0 ? a : gcd(b , a%b);
}

void init(){
    memset(isEat , false , sizeof(isEat));
    for(int i = 0 ; i < MAXN ; i++)
        v[i].clear();
}

void solve(){
    int index = 0;
    int notEat = n;
    int numDay = 0;
    while(index < 2*lcm){
        int min = 1<<30;
        int minIndex = -1;
        for(int i = 0 ; i < n ; i++){
           if(!isEat[i]){
               int size = v[i].size();
               int tmp = v[i][index%size];
               if(min > tmp){
                  min = tmp;
                  minIndex = i;
               }
               else{
                  if(min == tmp)
                      minIndex = -1;
               }
           }
        }
        index++;
        if(minIndex != -1){
           notEat--;
           numDay = index;
           isEat[minIndex] = true;
        }
    }
    printf("%d %d\n" , notEat , numDay);
}

int main(){
    int Case , m , x;
    scanf("%d" , &Case);
    while(Case--){
         scanf("%d" , &n);
         init();
         bool isFirst = true;
         for(int i = 0 ; i < n ; i++){
             scanf("%d" , &m);
             if(isFirst){
                lcm = m;
                isFirst = false;
             }
             lcm = lcm/gcd(lcm , m)*m;
             while(m--){
                  scanf("%d" , &x);
                  v[i].push_back(x);
             }
         }
         solve();
    }
}
时间: 2024-08-03 09:54:10

uva 10273 Eat or Not to Eat?的相关文章

iOS消息转发机制

    在Objective-C中,使用对象进行方法调用是一个消息发送的过程(Objective-C采用"动态绑定机制",所以所要调用的方法直到运行期才能确定).     方法在调用时,系统会查看这个对象能否接收这个消息(查看这个类有没有这个方法,或者有没有实现这个方法.),如果不能并且只在不能的情况下,就会调用下面这几个方法,给你"补救"的机会,你可以先理解为几套防止程序crash的备选方案,我们就是利用这几个方案进行消息转发,注意一点,前一套方案实现后一套方法就

php设计模式 — 抽象工厂模式

在什么情况下应当使用抽象工厂模式: 1.一个系统不应当依赖于产品类实例如何被创建.组合和表达的细节,这对于所有的形态的工厂模式都是重要的. 2.这个系统的产品有多余一个的产品族,而系统只消费其中某一个族的产品. 3.同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来. 4.系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现.     案例1: 还是以农场为例. 我们的农场分了多个产品线,一个是专门卖北方的蔬菜水果.一个专门卖南方的蔬菜水果.大家可

一个用PHP和MYSQL写的定饭系统

mysql 前台html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>定饭</title> <meta name="GENERATOR" content="Microsoft FrontPage 3.0"> <met

在Flash中用数组建地图的贪吃蛇游戏

数组 演示效果:(说明文章的后面有本文中涉及到的所有源码打包下载) 第二个下面有源码解析: 8月28日5:45分更新,有游戏地图,速度选择: 第一帧:AS: Stage.showMenu=false;//不显菜单 stop(); //---------------start帧AS------------------- var s_total = 500;//总蛇数 var w_col = 30;//行,宽数 var w_row = 30; var w_w = 15;//每个方块象素 var my

Java中的外观模式

外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用. 解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的 接口,是设计模式中一种比较简单的设计思想,但是,也是最常用的一种设计模式. 举例: 当 你想吃橘子的时候,你需要做那几件事呢? 1:去买橘子 2:剥橘子 3:吃橘子 这样去一步一步的调用各个方法是不是觉得很麻烦呢?所以,我们需要做的工作就是简化这些步骤,把它封装 在一个方法中实现. 实现: 下面给出实现代码的UML图.

Java 编程要点之并发(Concurrency)详解

本文详细介绍了 Java 并发(Concurrency)的基础用法和原理. 计算机用户想当然地认为他们的系统在一个时间可以做多件事.他们认为,他们可以工作在一个字处理器,而其他应用程序在下载文件,管理打印队列和音频流.即使是单一的应用程序通常也是被期望在一个时间来做多件事.例如,音频流应用程序必须同时读取数字音频,解压,管理播放,并更新显示.即使字处理器应该随时准备响应键盘和鼠标事件,不管多么繁忙,它总是能格式化文本或更新显示.可以做这样的事情的软件称为并发软件(concurrent softw

java中的匿名内部类详细总结_java

匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 复制代码 代码如下: abstract class Person {     public abstract void eat(); } class Child extends Person {     public void eat() {         System.out.printl

【桥接模式】【辣椒、不辣 牛肉、猪肉 面 组合】

/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Da

Runtime 方法替换 和 动态添加实例方法 结合使用

前言: 方法替换,可以替换任意外部类的方法,而动态添加方法只能实现在被添加类创建的对象里,但是将方法替换和动态添加方法结合使用,可以实现,对任意外部类动态添加需要的方法,这个方法可以是类方法也可以是实例方法,这个外部类也可以是没有任何方法声明和实现的类. 主要思路: 使用运行时的方法替换将在外部类将自定义方法hy_resolveInstanceMethod或hy_resolveClassMethod(用hy_前缀表示是我自定义的方法)和需要被添加的类中的resolveInstanceMethod