求助,TLE on #33
查看原帖
求助,TLE on #33
724676
Iwara_qwq楼主2022/8/29 09:29
#include<bits/stdc++.h>
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
using namespace std;
namespace Yorihime_Nao{
	template<class T> T MAX(T x,T y){
		return x>y?x:y;
	}
	template<class T> T MIN(T x,T y){
		return x<y?x:y;
	}
	template<class T,class ... Arg> T MAX(T x,T y,Arg ... arg){
		return MAX(x>y?x:y,arg...);
	}
	template<class T,class ... Arg> T MIN(T x,T y,Arg ... arg){
		return MIN(x<y?x:y,arg...);
	}
	template<class T> T lowbit(T x){
		return x&-x;
	}
	template<class T> void SWAP(T &x,T &y){
		T qwq;
		qwq=x;
		x=y;
		y=qwq;
		return;
	}
}
using namespace Yorihime_Nao;
const ll MAXN=505;
ll n,k;
ll a,b,sum;
ll dp[2][MAXN]; 
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>k;
	for(int i=0;i<k;i++)dp[0][i]=-0x7f7f7f7f7f;
	dp[0][0]=0;
	for(int i=1;i<=n;i++){
		for(int j=0;j<k;j++)dp[i&1][j]=-0x7f7f7f7f7f;
		cin>>a>>b;
		for(int p=0;p<k;p++){
			ll lst_b=(sum%k+k-p)%k;
			for(int q=0;q<MIN(k,a+1);q++){
				ll now_b=((a+b)%k+k-q)%k;
				if(now_b>b)continue;
				dp[i&1][(p+q)%k]=MAX(dp[i&1][(p+q)%k],dp[(i&1)^1][p]+(p+q)/k+(lst_b+now_b)/k+(a+b-now_b-q)/k);
			}
		}
		sum+=(a+b);
	}
	ll ans=0;
	for(int i=0;i<k;i++)ans=MAX(ans,dp[n&1][i]);
	cout<<ans; 
	return 0;
}
2022/8/29 09:29
加载中...