UVA 10273 - Eat or Not to Eat?(暴力)

原创 2013年12月02日 16:35:14

Problem E
Eat or not to Eat?
 Standard Input
Output: Standard Output

A young farmer has N cows, but they produced really really a very very small amount of milk. John cannot live on the milk they made, so he's planning to eat some of the 'worst' cows to get rid of hunger. Each day, John chooses the cow that produces the LEAST amount of milk on that day and eat them. If there are more than one cow with minimal milk, John will be puzzled and will not eat any of them (Yeah! That's GREAT!!).

The i-th cow has a cycle of production Ti. That means, if it produces L unit milk on one day, it will also produce L unit after Ti days -- If it will not be eaten during these day :-). Though John is not a clever man, he doubts whether the cows will be eventually eaten up, so he asks for your help. Don't forget that he will offer you some nice beef for that!


The first line of the input contains a single integer T, indicating the number of test cases. (1<=T<=50) Each test case begins with an integer N(1<=N<=1000), the number of cows. In the following N lines, each line contains an integer Ti(1<=Ti<=10), indicating the cycle of the i-th cow, then Ti integers Mj(0<=Mj<=250) follow, indicating the amount of milk it can produce on the j-th day.


For each test case in the input, print a single line containing two integers C, D, indicating the number of cows that will NOT be eaten, and the number of days passed when the last cow is eaten. If no cow is eaten, the second number should be 0.

Sample Input

4 7 1 2 9
1 2
2 7 1
1 2

Sample Output

2 6




#include <stdio.h>
#include <string.h>
#define INF 0x3f3f3f3f
const int N = 1005, M = 15, MAXT = 2520;

int T, n, t[N], pro[N][M], day, vis[N];

void init() {
    memset(vis, 0, sizeof(vis));
    scanf("%d", &n);
    for (int i = 0; i < n; i ++) {
	scanf("%d", &t[i]);
	for (int j = 0; j < t[i]; j ++)
	    scanf("%d", &pro[i][j]);

void solve() {
    int sum = 0, dayv = -1;
    for (day = 0; day - dayv <= MAXT; day ++) {
	int Min = INF, count = 0, index = 0;
	for (int i = 0; i < n; i++) {
	    if (vis[i]) continue;
	    if (Min > pro[i][day % t[i]]) {
		Min = pro[i][day % t[i]];
		count = 1;
		index = i;
	    else if (Min == pro[i][day % t[i]]) {
		count ++;
	if (count == 1) {
	    vis[index] = 1;
	    sum ++;
	    dayv = day;
    printf("%d %d\n", n - sum, dayv + 1);

int main() {
    scanf("%d", &T);
    while (T --) {
    return 0;


UVa10273 Eat or Not to Eat?


ZOJ-1236 Eat or Not to Eat?

Eat or Not to Eat? Time Limit: 10 Seconds      MemoryLimit: 32768 KB A young farmer ha...

How to eat more Banana

How to eat more Banana 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述A group of researchers are...

nyoj232 How to eat more Banana (LIS变形)


air jordan pas cher not only did not eat hot dogs behavior for extra points

the Central Commission for Discipline Inspection announced the state-owned enterprise responsible fr...



UVa 10469 To Carry or not to Carry (异或)

10469 - To Carry or not to Carry Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?opti...

Eat pray love

您举报文章:UVA 10273 - Eat or Not to Eat?(暴力)