UVA 10273 Eat or Not to Eat?
这个题目一直以为是要用图论知识来做,可是一点建图的思绪都没有,后来知道暴力便可破之。由于牛的产奶周期最大为10,1.2.3.....10的最小公倍数是MT = 2520,所以把MT作为最大的周期,然后枚举这个周期内的每一天,看产奶量最小的牛是否唯一,然后杀掉是唯一的最少产奶的那头牛,知道遇到一个周期内没有牛被杀掉。这样就到达了一个稳定的最终状态,统计剩下的牛,和杀掉最后一头牛用去的时间。注意一头牛都不杀的情况应该输出天数为0.
不过这题还有更加标准的做法,刘汝佳黑书中提到,将周期相同的奶牛产奶情况用一个堆来维护,每次用一个最小的代表去和其他周期的奶牛比较。删除操作效率比较高。
代码:
#include <iostream>
#include <cstdio>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#define esp 1e-6
#define pb push_back
#define in freopen("in.txt", "r", stdin);
#define out freopen("out.txt", "w", stdout);
#define print(a) printf("%d\n",(a));
#define bug puts("********))))))");
#define Rep(i, c) for(__typeof(c.end()) i = c.begin(); i != c.end(); i++)
#define inf 0x0f0f0f0f
using namespace std;
typedef long long LL;
typedef vector<int> VI;
typedef vector<int>:: iterator IT;
typedef pair<int, int> pii;
#define N 2000
#define M 30
#define MT 2520
int vis[N], a[N][M], T[N], num[N];
int n;
int main(void)
{
int t;
scanf("%d", &t);
while(t--)
{
memset(vis, , sizeof(vis));
for(int i = scanf("%d", &n) - ; i < n; i++)
{
for(int j = scanf("%d", T + i) - ; j < T[i]; j++)
scanf("%d", &a[i][j]);
}
int nT = , nNum = n, nDay = , last, temp, k;
while()
{
int Min,j;
temp = ;
for(int i = ; i < MT; i++)
{
memset(num, , sizeof(num));
for(j = , k = -, Min = inf; j < n; j++)
if(!vis[j])
{
if(Min == a[j][i % T[j]])
{
num[k]++;
}
else if(Min > a[j][i % T[j]])
{
Min = a[j][i % T[j]];
k = j;
num[j]++;
}
}
if(k >= && num[k] == )
{
temp++;
vis[k] = ;
nNum--;
last = i;
}
}
if(temp)
{
if(nT)
nDay += MT;
}
else
{
if(nT)
nDay += last + ;
break;
}
nT++;
}
printf("%d %d\n", nNum, nDay);
}
return ;
}
UVA 10273 Eat or Not to Eat?的更多相关文章
- UVA 10273
		我是用暴力过的,虽然网上说刘汝佳出的这道题考的是堆,我不太懂,..用暴力时间复杂度高一些,但是一样能过 所要注意的就是周期问题,因为只要同时存在某一天超过一头牛产奶量最小,就不会杀牛,而每头牛的周期和 ... 
- UVA题目分类
		题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ... 
- 用spm2构建seajs项目的过程
		前言 Javascript模块化规范有CommonJs规范,和主要适用于浏览器环境的AMD规范,以及国内的CMD规范,它是SeaJs遵循的模块化规范.因为以前项目中用SeaJs做过前端的模块管理工具, ... 
- java中的匿名内部类总结
		原文地址: http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内 ... 
- 自己对js对原型链的理解
		js对象分为2种 函数对象和普通对象 函数对象 比如 function Show(){}var x=function Show2(){}var b=new Function("show3&q ... 
- java基础知识(五)java类
		类是java的核心和本质,是java语言的基础. 一.java中的类 1.类class 一个类可以包含局部变量.实例变量.类变量(静态变量) 一个类至少有一个构造方法,如果没有,系统会默认给出一个无参 ... 
- PHP延迟静态绑定
		类可以自下往上调用父类方法,如果需要在父类中根据不同的子类,来调用子类的方法,那么就需要延迟静态绑定.延迟静态绑定用的是保留关键词static. 所谓延迟静态绑定,顾名思义,静态调用时::符号左侧的部 ... 
- Python全栈开发【面向对象】
		Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ... 
- java-并发-保护代码块
		浏览以下内容前,请点击并阅读 声明 线程经常需要协调其动作,最常用的协调方法就是保护代码块,该代码块以一个条件判断开始,当判断为true时才能开始执行. 假设一个方法guradedJoy必须等到变量j ... 
随机推荐
- 使用 ICharpCode.SharpZipLib 压缩指定目录结构
			今天做项目中遇见一个压缩问题,我的目录结构是树形菜单,文件在服务器存储是平面存储,没有目录结构,所以在下载指定目录的时候要构建目录结构,如下: 当我右键点击下载b目录文件夹的时候要Download ... 
- ASP.Net Core 运行在Linux(Ubuntu)
			这段时间一直在研究asp.net core部署到linux,今天终于成功了,这里分享一下我的部署过程. Linux Disibutaion:Ubuntu 14.04 Web Server:nginx. ... 
- .NET 进程和线程
			一.进程:需要有用Process类用法一:Process.Start("calc");该方法弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误用法二:/ ... 
- Javascript中函数调用和this的关系
			例子先行: var myObject={ foo:"bar", func:function(){ var self=this; console.log("outerfun ... 
- Meteor:用户账号管理添加密码和微博weibo账号系统支持
			Meteor账户系统构建与accounts-base包之上,并为publish和methods提供userId的顶层支持.核心包提供的功能有:数据库中的用户记录支持:额外的包提供密码安全验证:第三方登 ... 
- asp.net 中使用不同的数据源绑定gridview
			第一种,使用SqlDataReader绑定gridview.代码如下: public SqlDataReader bind() { SqlConnection con = new SqlConnect ... 
- Oracle Text Slowly
			When oracle text more and more slowly, execute the following script: ANALYZE TABLE Table_Name COMPU ... 
- dapper关联关系查询小测试
			测试实体类(表结构) public class User { public int user_id { get; set; } public string user_name { get; set; ... 
- Oracle PL/SQL 事物处理 银行转账
			Oracle数据库中的事务处理:添加,修改,删除时需要使用事务处理(显示事务). 1.事务的分类显示事务(添加,修改,删除)和隐式事务(除了添加,修改,删除). 2.事务的执行方式:自动提交(jdbc ... 
- [数据结构] 成都磨子桥技工学校 Challenge Series
			Challenge 0: 第一次裸写竟然WA了.... Challenge 1: 不想写了. 
