QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#186089#5667. Meeting PlacesaestheticTL 1916ms129140kbC++206.3kb2023-09-23 06:06:072023-09-23 06:06:08

Judging History

你现在查看的是最新测评结果

  • [2023-09-23 06:06:08]
  • 评测
  • 测评结果:TL
  • 用时:1916ms
  • 内存:129140kb
  • [2023-09-23 06:06:07]
  • 提交

answer

#include "bits/stdc++.h"
#define endl '\n'
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define rep(i, a, b) for (int i = (a); i < (b); ++i)
std::mt19937 rng((int) std::chrono::steady_clock::now().time_since_epoch().count());
using namespace std;
#define int long long
 
#define dbg_loc() cerr << __PRETTY_FUNCTION__ << " : " << __LINE__ << "\n"
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p){ 
	return os << '(' << p.first << ", " << p.second << ')'; 
}
template<typename T_container,typename T=typename enable_if<!is_same<T_container,string>::value, typename T_container::value_type>::type> 
ostream& operator<<(ostream &os, const T_container &v){ 
	os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; 
}
void dbg_out() { cerr << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T){ 
	cerr << ' ' << H; 
	dbg_out(T...); 
}
#define LOCAL
#define LOCAL
#ifdef LOCAL 
#define dbg(...) cerr<<"(" << #__VA_ARGS__<<"):" , dbg_out(__VA_ARGS__) , cerr << endl
#else
#define dbg(...)
#endif
#define per(i, a, b) for(int i = b-1; i>=a ; i--)
#define trav(a, x) for(auto& a : x)
#define allin(a , x) for(auto a : x)
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
// ll mod = (1000000007LL);
// inline ll Mod(ll a, ll b){return (a%b);}
// inline ll poww(ll a, ll b){ll res = 1;while (b > 0){if(b & 1) res = (res * a)%mod;a = (a * a)%mod;b >>= 1;}return res;}
ll gcd (ll a, ll b) { while (b) { a %= b,swap(a, b);}return a;}
void read(vector<int> &w, int n){w.resize(n);for(int i = 0; i < n; i++) cin>>w[i];}
void print(vector<int> &w){for(int i =0; i < sz(w); i++){if(i == sz(w) - 1) cout<<w[i]<<"\n";else cout<<w[i]<<" ";}}
 
///CUIDADO COM MAXN
#define N 50010 // 1E6
const int B =233811181;
const int mod = (1LL<<31) - 1;

int n, k, x[N], y[N];
int x1;
template <class T> int sgn(T x) { return (x > 0) - (x < 0); }
template<class T>
struct Point {
	typedef Point P;
	T x, y;
	explicit Point(T x=0, T y=0) : x(x), y(y) {}
	bool operator<(P p) const { return tie(x,y) < tie(p.x,p.y); }
	bool operator==(P p) const { return tie(x,y)==tie(p.x,p.y); }
	P operator+(P p) const { return P(x+p.x, y+p.y); }
	P operator-(P p) const { return P(x-p.x, y-p.y); }
	P operator*(T d) const { return P(x*d, y*d); }
	P operator/(T d) const { return P(x/d, y/d); }
	T dot(P p) const { return x*p.x + y*p.y; }
	T cross(P p) const { return x*p.y - y*p.x; }
	T cross(P a, P b) const { return (a-*this).cross(b-*this); }
	T dist2() const { return x*x + y*y; }
	long double dist() const { return sqrt((long double)dist2()); }
	// angle to x-axis in interval [-pi, pi]
	long double angle() const { return atan2(y, x); }
	P unit() const { return *this/dist(); } // makes dist()=1
	P perp() const { return P(-y, x); } // rotates +90 degrees
	P normal() const { return perp().unit(); }
	// returns point rotated 'a' radians ccw around the origin
	P rotate(long double a) const {
		return P(x*cos(a)-y*sin(a),x*sin(a)+y*cos(a)); }
	friend ostream& operator<<(ostream& os, P p) {
		return os << "(" << p.x << "," << p.y << ")"; }
};
typedef Point<long double> P;
long double ccRadius(const P& A, const P& B, const P& C) {
	return (B-A).dist()*(C-B).dist()*(A-C).dist()/
			abs((B-A).cross(C-A))/2;
}
P ccCenter(const P& A, const P& B, const P& C) {
	P b = C-A, c = B-A;
	return A + (b*c.dist2()-c*b.dist2()).perp()/b.cross(c)/2;
}

pair<P, long double> mec(vector<P> ps) {
	shuffle(all(ps), mt19937(time(0)));
	P o = ps[0];
	long double r = 0, EPS = 1 + 1e-8;
	rep(i,0,sz(ps)) if ((o - ps[i]).dist() > r * EPS) {
		o = ps[i], r = 0;
		rep(j,0,i) if ((o - ps[j]).dist() > r * EPS) {
			o = (ps[i] + ps[j]) / 2;
			r = (o - ps[i]).dist();
			rep(k,0,j) if ((o - ps[k]).dist() > r * EPS) {
				o = ccCenter(ps[i], ps[j], ps[k]);
				r = (o - ps[i]).dist();
			}
		}
	}
	return {o, r};
}

vector<P> pts;
long double cost2[2010][2010];

struct DP{
	int n ;
	long double inf; 
	vector<long double> dp[2];
	DP(int n , long double inf) : n(n) , inf(inf) {dp[0] = vector<long double>(n+1) , dp[1] = vector<long double>(n+1);}
	long double cost(int i,int j){
		assert(i<=j);
		return cost2[i][j];
	}
	// compute dp_cur[l], ... dp_cur[r] (inclusive) 
	void compute(int l, int r, int optl, int optr){
	    if (l > r) return;
	    int mid = l + (r-l)/2;
	    pair<long double, int> best = {inf, -1}; // se for maximizar muda pra -inf
	    rep(k,optl,min(mid,optr)+1){
	        best = min(best, { dp[0][k-1] + cost(k,mid), k});
	    }
	    dp[1][mid] = best.first; int opt = best.second;
	    compute(l, mid - 1, optl, opt);
	    compute(mid + 1, r, opt, optr);
	}
	void solve(int k){
		rep(i,1,n+1){
			dp[0][i] = cost(1,i);
			// dbg(dp[0][i]);
		}
		rep(i,2,k+1){
			rep(j,i,n+1) dp[1][j] = inf;
			compute(i,n,i,n) ;
			swap(dp[0] , dp[1]);
		}
	}
};

long double pica[2010][2010];
int32_t main(){
	ios::sync_with_stdio(false); cin.tie(0);
	cin>>n>>k>>x1;
	pts.resize(n);
	x[1] = x1%mod;
	y[1] = (x1*B + 1)%mod;
	pts[0] = P(x[1], y[1]);
	rep(i,2,n+1){
		x[i] = (y[i-1] * B + 1) % mod;
		y[i] = (x[i]*B + 1) %mod;
		pts[i-1] = P(x[i], y[i]);
	}

	rep(ini, 0, n){
		vector<P> ps;
		rep(i, ini, n) ps.pb(pts[i]);
		P o = ps[0];
		long double r = 0, EPS = 1 + 1e-8;
		rep(i,0,sz(ps)){
			if ((o - ps[i]).dist() > r * EPS) {
				o = ps[i], r = 0;
				rep(j,0,i) if ((o - ps[j]).dist() > r * EPS) {
					o = (ps[i] + ps[j]) / 2;
					r = (o - ps[i]).dist();
					rep(k,0,j) if ((o - ps[k]).dist() > r * EPS) {
						o = ccCenter(ps[i], ps[j], ps[k]);
						r = (o - ps[i]).dist();
					}
				}
			}
			int fim = ini + i;
			cost2[ini+1][fim+1] = r;
		}
	}
	// k * n * X <= 2e8
	// X = 2e8/(n*k)
	int X = 4e8/(n*k);
	for(int i = 1; i<=n;i++) pica[i][1] = cost2[1][i];
	for(int q = 2;q<=k;q++){
		for(int i =1;i<=n;i++){
			pica[i][q] = 2e19;
			for(int j=i;j>=max(1LL,i-X);j--){
				pica[i][q] = min(pica[i][q], pica[j-1][q-1] + cost2[j][i]);
			}
			for(int c=0;c<100;c++){
				int j = rng()%i + 1;
				pica[i][q] = min(pica[i][q], pica[j-1][q-1] + cost2[j][i]);
			}
		}
	}

	cout<<setprecision(20)<<"\n";
	// DP dp(n, 2e18);
	// dp.solve(k);
	// cout<<dp.dp[0][n]<<"\n";
	cout<<pica[n][k]<<"\n";
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 12188kb

input:

100 23 213

output:


1319350480.8007325387

result:

ok found '1319350480.8007326', expected '1319350480.8007326', error '0.0000000'

Test #2:

score: 0
Accepted
time: 1ms
memory: 5908kb

input:

10 1 1060

output:


1042753143.3451676866

result:

ok found '1042753143.3451676', expected '1042753143.3451676', error '0.0000000'

Test #3:

score: 0
Accepted
time: 1ms
memory: 8024kb

input:

10 10 2373

output:


0

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #4:

score: 0
Accepted
time: 2ms
memory: 9912kb

input:

10 2 3396

output:


1236610536.9469230312

result:

ok found '1236610536.9469230', expected '1236610536.9469230', error '0.0000000'

Test #5:

score: 0
Accepted
time: 1ms
memory: 5868kb

input:

10 3 1998

output:


973790809.82244422752

result:

ok found '973790809.8224442', expected '973790809.8224442', error '0.0000000'

Test #6:

score: 0
Accepted
time: 0ms
memory: 7900kb

input:

10 4 562

output:


910867389.90693293762

result:

ok found '910867389.9069330', expected '910867389.9069330', error '0.0000000'

Test #7:

score: 0
Accepted
time: 1ms
memory: 5900kb

input:

10 5 6048

output:


818240814.710514982

result:

ok found '818240814.7105150', expected '818240814.7105150', error '0.0000000'

Test #8:

score: 0
Accepted
time: 1ms
memory: 7924kb

input:

10 6 2524

output:


500106979.34677627438

result:

ok found '500106979.3467762', expected '500106979.3467762', error '0.0000000'

Test #9:

score: 0
Accepted
time: 0ms
memory: 7840kb

input:

10 7 5415

output:


559478971.43200588669

result:

ok found '559478971.4320059', expected '559478971.4320059', error '0.0000000'

Test #10:

score: 0
Accepted
time: 1ms
memory: 5876kb

input:

10 8 1438

output:


500309745.46276999364

result:

ok found '500309745.4627700', expected '500309745.4627700', error '0.0000000'

Test #11:

score: 0
Accepted
time: 0ms
memory: 10040kb

input:

10 9 3172

output:


162279748.87534517395

result:

ok found '162279748.8753452', expected '162279748.8753452', error '0.0000000'

Test #12:

score: 0
Accepted
time: 3ms
memory: 14192kb

input:

100 1 8316

output:


1320052902.1522902527

result:

ok found '1320052902.1522903', expected '1320052902.1522903', error '0.0000000'

Test #13:

score: 0
Accepted
time: 11ms
memory: 12360kb

input:

100 100 4179

output:


0

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #14:

score: 0
Accepted
time: 0ms
memory: 14244kb

input:

100 12 3405

output:


1329687126.1304548786

result:

ok found '1329687126.1304548', expected '1329687126.1304548', error '0.0000000'

Test #15:

score: 0
Accepted
time: 0ms
memory: 12200kb

input:

100 16 8378

output:


1338056514.4842694717

result:

ok found '1338056514.4842694', expected '1338056514.4842694', error '0.0000000'

Test #16:

score: 0
Accepted
time: 0ms
memory: 12072kb

input:

100 2 1858

output:


1310392496.1430580794

result:

ok found '1310392496.1430581', expected '1310392496.1430581', error '0.0000000'

Test #17:

score: 0
Accepted
time: 4ms
memory: 12028kb

input:

100 25 4596

output:


1440464106.622929672

result:

ok found '1440464106.6229296', expected '1440464106.6229298', error '0.0000000'

Test #18:

score: 0
Accepted
time: 0ms
memory: 12204kb

input:

100 3 5633

output:


1399621082.6142736834

result:

ok found '1399621082.6142738', expected '1399621082.6142738', error '0.0000000'

Test #19:

score: 0
Accepted
time: 5ms
memory: 14020kb

input:

100 32 7827

output:


1342073760.5322329637

result:

ok found '1342073760.5322330', expected '1342073760.5322330', error '0.0000000'

Test #20:

score: 0
Accepted
time: 3ms
memory: 14196kb

input:

100 4 3693

output:


1339808706.7098688791

result:

ok found '1339808706.7098689', expected '1339808706.7098689', error '0.0000000'

Test #21:

score: 0
Accepted
time: 0ms
memory: 14376kb

input:

100 5 2252

output:


1394874243.5057042023

result:

ok found '1394874243.5057042', expected '1394874243.5057042', error '0.0000000'

Test #22:

score: 0
Accepted
time: 3ms
memory: 14228kb

input:

100 50 4254

output:


1322809748.405283544

result:

ok found '1322809748.4052835', expected '1322809748.4052832', error '0.0000000'

Test #23:

score: 0
Accepted
time: 0ms
memory: 10204kb

input:

100 6 53

output:


1364441356.1700988172

result:

ok found '1364441356.1700988', expected '1364441356.1700988', error '0.0000000'

Test #24:

score: 0
Accepted
time: 7ms
memory: 10252kb

input:

100 64 4337

output:


1180754550.2422839039

result:

ok found '1180754550.2422838', expected '1180754550.2422838', error '0.0000000'

Test #25:

score: 0
Accepted
time: 0ms
memory: 14088kb

input:

100 7 5366

output:


1423557626.3586797034

result:

ok found '1423557626.3586798', expected '1423557626.3586798', error '0.0000000'

Test #26:

score: 0
Accepted
time: 0ms
memory: 10076kb

input:

100 8 8509

output:


1353289305.3519955645

result:

ok found '1353289305.3519955', expected '1353289305.3519957', error '0.0000000'

Test #27:

score: 0
Accepted
time: 0ms
memory: 10144kb

input:

100 9 1423

output:


1228887266.5661669594

result:

ok found '1228887266.5661669', expected '1228887266.5661671', error '0.0000000'

Test #28:

score: 0
Accepted
time: 6ms
memory: 14140kb

input:

100 91 4806

output:


656574218.50867550453

result:

ok found '656574218.5086755', expected '656574218.5086756', error '0.0000000'

Test #29:

score: 0
Accepted
time: 10ms
memory: 12236kb

input:

100 92 4024

output:


794693428.61622403376

result:

ok found '794693428.6162241', expected '794693428.6162238', error '0.0000000'

Test #30:

score: 0
Accepted
time: 10ms
memory: 12288kb

input:

100 93 606

output:


677641787.48631221149

result:

ok found '677641787.4863123', expected '677641787.4863122', error '0.0000000'

Test #31:

score: 0
Accepted
time: 7ms
memory: 12260kb

input:

100 94 7265

output:


686423239.26260277035

result:

ok found '686423239.2626028', expected '686423239.2626028', error '0.0000000'

Test #32:

score: 0
Accepted
time: 10ms
memory: 13948kb

input:

100 95 8469

output:


328187125.92359506871

result:

ok found '328187125.9235951', expected '328187125.9235951', error '0.0000000'

Test #33:

score: 0
Accepted
time: 10ms
memory: 10228kb

input:

100 96 1079

output:


492964787.62590853922

result:

ok found '492964787.6259086', expected '492964787.6259086', error '0.0000000'

Test #34:

score: 0
Accepted
time: 10ms
memory: 10156kb

input:

100 97 5453

output:


258652807.79065646986

result:

ok found '258652807.7906565', expected '258652807.7906564', error '0.0000000'

Test #35:

score: 0
Accepted
time: 7ms
memory: 12168kb

input:

100 98 1778

output:


159490192.11889069329

result:

ok found '159490192.1188907', expected '159490192.1188908', error '0.0000000'

Test #36:

score: 0
Accepted
time: 10ms
memory: 12200kb

input:

100 99 1825

output:


33793756.328998042445

result:

ok found '33793756.3289980', expected '33793756.3289980', error '0.0000000'

Test #37:

score: 0
Accepted
time: 19ms
memory: 69536kb

input:

1000 1 2453

output:


1486878333.2858574132

result:

ok found '1486878333.2858574', expected '1486878333.2858574', error '0.0000000'

Test #38:

score: 0
Accepted
time: 1916ms
memory: 71516kb

input:

1000 1000 1798

output:


0

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #39:

score: 0
Accepted
time: 320ms
memory: 67656kb

input:

1000 125 43

output:


1474031969.5174233053

result:

ok found '1474031969.5174234', expected '1474031969.5174232', error '0.0000000'

Test #40:

score: 0
Accepted
time: 341ms
memory: 67424kb

input:

1000 128 8107

output:


1440374614.9391976207

result:

ok found '1440374614.9391975', expected '1440374614.9391975', error '0.0000000'

Test #41:

score: 0
Accepted
time: 60ms
memory: 71716kb

input:

1000 15 6639

output:


1491336935.5536249471

result:

ok found '1491336935.5536249', expected '1491336935.5536251', error '0.0000000'

Test #42:

score: 0
Accepted
time: 62ms
memory: 69444kb

input:

1000 16 1251

output:


1445211807.1160963748

result:

ok found '1445211807.1160963', expected '1445211807.1160963', error '0.0000000'

Test #43:

score: 0
Accepted
time: 30ms
memory: 71800kb

input:

1000 2 1303

output:


1468989868.6486022632

result:

ok found '1468989868.6486022', expected '1468989868.6486022', error '0.0000000'

Test #44:

score: 0
Accepted
time: 626ms
memory: 71484kb

input:

1000 250 4457

output:


1487674970.7660159559

result:

ok found '1487674970.7660160', expected '1487674970.7660158', error '0.0000000'

Test #45:

score: 0
Accepted
time: 649ms
memory: 69576kb

input:

1000 256 4135

output:


1474218271.5140772276

result:

ok found '1474218271.5140772', expected '1474218271.5140772', error '0.0000000'

Test #46:

score: 0
Accepted
time: 30ms
memory: 67516kb

input:

1000 3 713

output:


1482496228.99047766

result:

ok found '1482496228.9904776', expected '1482496228.9904778', error '0.0000000'

Test #47:

score: 0
Accepted
time: 92ms
memory: 69516kb

input:

1000 31 8139

output:


1494361943.4799194892

result:

ok found '1494361943.4799194', expected '1494361943.4799194', error '0.0000000'

Test #48:

score: 0
Accepted
time: 94ms
memory: 69568kb

input:

1000 32 7916

output:


1499333171.0938647797

result:

ok found '1499333171.0938647', expected '1499333171.0938647', error '0.0000000'

Test #49:

score: 0
Accepted
time: 23ms
memory: 69696kb

input:

1000 4 2432

output:


1455826569.0394102234

result:

ok found '1455826569.0394101', expected '1455826569.0394101', error '0.0000000'

Test #50:

score: 0
Accepted
time: 24ms
memory: 73524kb

input:

1000 5 2457

output:


1452189628.1967140646

result:

ok found '1452189628.1967142', expected '1452189628.1967139', error '0.0000000'

Test #51:

score: 0
Accepted
time: 1216ms
memory: 67820kb

input:

1000 500 8734

output:


1432279300.5662784538

result:

ok found '1432279300.5662785', expected '1432279300.5662787', error '0.0000000'

Test #52:

score: 0
Accepted
time: 1244ms
memory: 67800kb

input:

1000 512 1866

output:


1446804508.0351865209

result:

ok found '1446804508.0351865', expected '1446804508.0351865', error '0.0000000'

Test #53:

score: 0
Accepted
time: 35ms
memory: 69624kb

input:

1000 6 1580

output:


1490178756.8566034751

result:

ok found '1490178756.8566034', expected '1490178756.8566034', error '0.0000000'

Test #54:

score: 0
Accepted
time: 174ms
memory: 69672kb

input:

1000 62 3047

output:


1482100829.6467108954

result:

ok found '1482100829.6467109', expected '1482100829.6467109', error '0.0000000'

Test #55:

score: 0
Accepted
time: 179ms
memory: 69624kb

input:

1000 64 4836

output:


1441850815.8553613515

result:

ok found '1441850815.8553615', expected '1441850815.8553615', error '0.0000000'

Test #56:

score: 0
Accepted
time: 40ms
memory: 69600kb

input:

1000 7 5269

output:


1473104490.7287983542

result:

ok found '1473104490.7287984', expected '1473104490.7287984', error '0.0000000'

Test #57:

score: 0
Accepted
time: 30ms
memory: 67600kb

input:

1000 8 2649

output:


1459133296.6066234506

result:

ok found '1459133296.6066234', expected '1459133296.6066234', error '0.0000000'

Test #58:

score: 0
Accepted
time: 39ms
memory: 71632kb

input:

1000 9 3999

output:


1482914523.3807039035

result:

ok found '1482914523.3807039', expected '1482914523.3807039', error '0.0000000'

Test #59:

score: 0
Accepted
time: 1843ms
memory: 70384kb

input:

1000 991 3610

output:


295501032.47808742887

result:

ok found '295501032.4780874', expected '295501032.4780874', error '0.0000000'

Test #60:

score: 0
Accepted
time: 1854ms
memory: 72824kb

input:

1000 992 3030

output:


337274092.65403818787

result:

ok found '337274092.6540382', expected '337274092.6540381', error '0.0000000'

Test #61:

score: 0
Accepted
time: 1835ms
memory: 72680kb

input:

1000 993 6980

output:


222375113.10579861072

result:

ok found '222375113.1057986', expected '222375113.1057986', error '0.0000000'

Test #62:

score: 0
Accepted
time: 1905ms
memory: 69616kb

input:

1000 994 7222

output:


218007091.69330408808

result:

ok found '218007091.6933041', expected '218007091.6933041', error '0.0000000'

Test #63:

score: 0
Accepted
time: 1863ms
memory: 68280kb

input:

1000 995 1323

output:


169577520.22365287453

result:

ok found '169577520.2236529', expected '169577520.2236529', error '0.0000000'

Test #64:

score: 0
Accepted
time: 1846ms
memory: 68016kb

input:

1000 996 2761

output:


135524743.91144871517

result:

ok found '135524743.9114487', expected '135524743.9114488', error '0.0000000'

Test #65:

score: 0
Accepted
time: 1853ms
memory: 71616kb

input:

1000 997 4946

output:


87043806.422792088611

result:

ok found '87043806.4227921', expected '87043806.4227921', error '0.0000000'

Test #66:

score: 0
Accepted
time: 1831ms
memory: 69636kb

input:

1000 998 842

output:


24094936.551191687944

result:

ok found '24094936.5511917', expected '24094936.5511917', error '0.0000000'

Test #67:

score: 0
Accepted
time: 1849ms
memory: 68104kb

input:

1000 999 5078

output:


4597519.0646550341412

result:

ok found '4597519.0646550', expected '4597519.0646550', error '0.0000000'

Test #68:

score: 0
Accepted
time: 55ms
memory: 129140kb

input:

2000 1 2633

output:


1502350354.4995269895

result:

ok found '1502350354.4995270', expected '1502350354.4995270', error '0.0000000'

Test #69:

score: -100
Time Limit Exceeded

input:

2000 1000 6248

output:


result: