bzoj 3310: [Usaco2013 Nov]Empty Stalls

版权声明:本文为博主原创文章,转载请联系博主。 https://blog.csdn.net/everlasting_20141622/article/details/76695900

题目链接

看那个著名的“USACO被虐记”说的是按照题意搞一搞就好了

但是无比之弱的我还是T了两发

按照题意暴力搞什么的都是骗人的qwq


不能每次都暴力处理每个牛

先把所有的牛都安放在他喜欢的位置上

然后从头到尾最多扫两边就好了

因为保证牛的数量至多为n-1

每次把多的牛往♂后♂搞


一个很弱的代码:

#include<iostream>
#include<cstdio>

using namespace std;

int n,k;
int f[3000030];

void cal(int x,int y,int a,int b){
	int num=b;
	for(int i=1; i<=y; i++){
		num+=a;
		num%=n;
		f[num]+=x;
	}
}

int main(){
	scanf("%d%d",&n,&k);
	for(int i=0; i<k; i++){
		int x,y,a,b;
		scanf("%d%d%d%d",&x,&y,&a,&b);
		cal(x,y,a,b);
	}
	for(int i=0; i<n-1; i++)if(f[i]>1)f[i+1]+=f[i]-1,f[i]=1;
	if(f[n-1]>1){
		f[0]+=f[n-1]-1,f[n-1]=1;
		for(int i=0; i<n-1; i++)if(f[i]>1)f[i+1]+=f[i]-1,f[i]=1;
	}
	for(int i=0; i<n; i++){
		if(!f[i]){
			printf("%d\n",i);
			return 0;
		}
	}
	
	return 0;
}


阅读更多
换一批

没有更多推荐了,返回首页