UVa10273 Eat or Not to Eat?

来源:互联网 发布:淘宝零食推荐知乎健康 编辑:程序博客网 时间:2024/05/01 23:19

        题意:N头奶牛,第i头牛产奶有周期Ti,即第d天产量等于第d+Ti天产量。每天主人杀掉产量最少的牛,如果多头产量最少,则不会杀掉。问最后能剩下多少牛,以及最后一次杀牛的天数。

        思路:模拟。如果连续若干天牛不被杀,以后就不会被杀了。那到底是连续多少天呢,直接用1~10的最小公倍数2520。。。


#include <iostream>#include <stdio.h>#include <cmath>#include <algorithm>#include <iomanip>#include <cstdlib>#include <string>#include <memory.h>#include <vector>#include <queue>#include <stack>#include <ctype.h>#define INF 1000000using namespace std;int cyc[10010];int cow[10010][12];bool eat[10010];int main(){int T;cin>>T;int N;while(T--){memset(eat,0,sizeof(eat));cin>>N;for(int i=1;i<=N;i++){cin>>cyc[i];for(int j=0;j<cyc[i];j++){cin>>cow[i][j];}}int b=0;int count=0;int last;for(int day=1;;day++){int tmp=INF;bool flag=false;int k;for(int i=1;i<=N;i++){if(eat[i])continue;if( cow[i][(day-1)%cyc[i]]<tmp ){tmp=cow[i][(day-1)%cyc[i]];k=i;flag=true;}else if( cow[i][(day-1)%cyc[i]]==tmp ){flag=false;}}if(b>2520)break;if(flag){b=0;eat[k]=true;count++;last=day;}else{b++;}}if(count){cout<<N-count<<" "<<last<<endl;}else{cout<<N-count<<" "<<0<<endl;}}return 0;}


0 0