→题目链接←
看那个著名的“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;
}