QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#143315 | #7026. Let the Flames Begin | Sorting# | AC ✓ | 1101ms | 527588kb | C++20 | 2.3kb | 2023-08-21 02:13:34 | 2023-08-21 02:13:37 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef unsigned long long ull ;
typedef pair < int , int > pii ;
typedef vector < int > vi ;
#define fi first
#define se second
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
int test_id ;
ll ksmall ( ll n , ll m , ll k ) {
ll taken = 0 , rem = n ;
ll x = ( k % n ) ;
if ( x == 0 ) { x = n ; }
vector < ll > v ;
ll ans = -1 ;
while ( 1 ) {
ll tot = 1 + ( rem - x ) / k ;
if ( taken + tot >= m ) {
ans = x + ( m - taken - 1 ) * k ;
break ;
}
else {
v.push_back ( x ) ;
ll lst = x + ( tot - 1 ) * k ;
x = k - ( rem - lst ) ;
taken += tot , rem -= tot ;
x %= rem ;
if ( x == 0 ) { x = rem ; }
}
}
reverse ( v.begin ( ) , v.end ( ) ) ;
for ( auto st : v ) {
if ( st <= ans ) {
ll coef = 1 + ( ans - st ) / ( k - 1 ) ;
ans += coef ;
}
}
return ans ;
}
ll msmall ( ll n , ll m , ll k ) {
ll ans = 0 ;
for ( ll i = n - m + 1 ; i <= n ; ++ i ) {
ll pos = k % i ;
if ( pos == 0 ) { pos = i ; }
ans = ans + pos ;
if ( ans > i ) { ans -= i ; }
}
return ans ;
}
void test ( ) {
for ( int i = 1 ; i <= 100 ; ++ i ) {
for ( int j = 1 ; j <= i ; ++ j ) {
for ( int t = 1 ; t <= 100 ; ++ t ) {
if ( ksmall ( i , j , t ) != msmall ( i , j , t ) ) {
cout << i << " " << j << " " << t << " ---> " << ksmall ( i , j , t ) << " " << msmall ( i , j , t ) << "\n" ;
return ;
}
}
}
}
}
void solve ( ) {
ll n , m , k ;
cin >> n >> m >> k ;
++ test_id ;
cout << "Case #" << test_id << ": " ;
if ( k == 1 ) {
cout << m << "\n" ;
return ;
}
if ( k <= m ) {
cout << ksmall ( n , m , k ) << "\n" ;
}
else {
cout << msmall ( n , m , k ) << "\n" ;
}
}
int main ( ) {
ios_base :: sync_with_stdio ( false ) ;
cin.tie ( NULL ) ;
// test ( ) ;
// return 0 ;
int t = 1 ; cin >> t ;
while ( t -- ) { solve ( ) ; }
return 0 ;
}
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3524kb
input:
20 10 1 2 10 2 2 10 3 2 10 4 2 10 5 2 10 6 2 10 7 2 10 8 2 10 9 2 10 10 2 10 1 3 10 2 3 10 3 3 10 4 3 10 5 3 10 6 3 10 7 3 10 8 3 10 9 3 10 10 3
output:
Case #1: 2 Case #2: 4 Case #3: 6 Case #4: 8 Case #5: 10 Case #6: 3 Case #7: 7 Case #8: 1 Case #9: 9 Case #10: 5 Case #11: 3 Case #12: 6 Case #13: 9 Case #14: 2 Case #15: 7 Case #16: 1 Case #17: 8 Case #18: 5 Case #19: 10 Case #20: 4
result:
ok 20 lines
Test #2:
score: 0
Accepted
time: 1005ms
memory: 265432kb
input:
1000 999999999999992561 159 395327336264586619 442108849746740138 442108849746736034 460 999999999999992483 170 493046129512466597 999999999999994068 441 350960072694194744 999999999999995777 999999999999990118 67 999999999999991275 999999999999983373 331 999999999999990404 999999999999985608 429 99...
output:
Case #1: 857046466069738524 Case #2: 294578226925711387 Case #3: 817842017119952395 Case #4: 773392058140829462 Case #5: 522542636681279298 Case #6: 855114113325419851 Case #7: 21226015093289476 Case #8: 233100 Case #9: 641511906156530773 Case #10: 93961109024303404 Case #11: 230107545980257170 Case...
result:
ok 1000 lines
Test #3:
score: 0
Accepted
time: 1101ms
memory: 527588kb
input:
1 999999999999999944 999999999999999890 2000000
output:
Case #1: 164945406307572169
result:
ok single line: 'Case #1: 164945406307572169'