RT,我的代码(应该,如果我没有手残或者眼花的话),应该和大部分题解一样是 O(n2LlogM) 的。
姑且所说的“虽然复杂度看上去挺离谱但是跑的飞快”是真的,但是为什么我的就T了呢嘤嘤嘤。
不开O2 80pts,开了90pts 呜呜呜。
看了几遍代码大概没什么问题(?,感觉有点不能接受.jpg
麻烦大伙看看咱这次有没有sb qwq。
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
#define repp(i,a,b) for(int i=(a);i<(b);++i)
#define perr(i,a,b) for(int i=(a);i>(b);--i)
using namespace std;
const int maxn = 20;
int C[ maxn ], P[ maxn ], L[ maxn ];
inline void exgcd( int a, int b, int &x, int &y, int &g ) {
if( !b ) {
x = 1; y = 0; g = a;
return ;
}
exgcd( b, a % b, y, x, g );
y -= a / b * x;
}
inline bool check( int x, int y, int M ) {
int a = P[ x ] - P[ y ], b = M, c = C[ y ] - C[ x ], X, Y, g;
exgcd( a, b, X, Y, g );
if( c % g ) return false;
b /= g; c /= g;
X = ( X * c % b + abs( b ) ) % b;
return X <= min( L[ x ], L[ y ] );
}
int main ( ) {
if( fopen( "yl.in", "r" ) ) {
freopen( "yl.in", "r", stdin );
freopen( "yl.out", "w", stdout );
}
ios::sync_with_stdio( false );
cin.tie( NULL );
int n, st = 0;
cin >> n;
rep( i,1,n ) cin >> C[ i ] >> P[ i ] >> L[ i ], st = max( st, C[ i ] );
rep( m,st,1e6 ) {
bool flg = true;
rep( i,1,n ) rep( j,i+1,n )
if( check( i, j, m ) ) {
flg = false;
break;
}
if( flg ) {
cout << m << '\n';
break;
}
}
return 0;
}