QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#593761 | #6130. Plants vs. Zombies | PonyHex | WA | 1ms | 3776kb | C++20 | 2.0kb | 2024-09-27 15:53:06 | 2024-09-27 15:53:06 |
Judging History
answer
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
#include<unordered_map>
#include<unordered_set>
using namespace std;
#define ll long long
//#define double long double
#define lc u<<1
#define rc u<<1|1
#define X first
#define Y second
#define endl "\n"
#define int long long
const int N = 2e3 + 50;
const int M = 5e5 + 5;
const ll maxm = 1e18 + 5;
const ll mod = 998244353;
int dx[] = { -1,0,1,0 };
int dy[] = { 0,1,0,-1 };
//random_shuffle(id + 1, id + n + 1);
ll ksm(ll a, ll b);
ll gcd(ll a, ll b);
template<class T>inline void read(T& x) {
x = 0;
char c = getchar();
while (!isdigit(c))c = getchar();
while (isdigit(c))x = x * 10 + (c & 15), c = getchar();
}
void write(ll x)
{
if (x < 0)
putchar('-'), x = -x;
if (x > 9)
write(x / 10);
putchar(x % 10 + '0');
return;
}
ll n, m;
ll a[N];
ll va[N];
bool check(ll val) {
//至少要达到value
for (int i = 1; i <= n; i++)va[i] = 0;
ll mid = m;
for (int i = 1; i <= n; i++) {
mid--; va[i] += a[i];
if (va[i] >= val)continue;
ll dis = val - a[i];
ll cnt = dis / a[i];
if (dis % a[i] != 0)cnt++;
if (mid < cnt * 2)return false;
mid -= (cnt * 2); va[i + 1] += va[i + 1] * cnt;
if (m == 0) {
if (va[n] >= val)return true;
return false;
}
}
return true;
}
void solve()
{
//这我之前好像补过,lyr给调出来了,在gym交了,再写一发
cin >> n >> m;
for (int i = 1; i <= n; i++)cin >> a[i];
ll l = 0, r = maxm;
while (l + 1 < r) {
ll mid = (l + r) >> 1;
if (check(mid)) {//合法让l过去
l = mid;
}
else r = mid;
}
cout << l << endl;
return;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T = 1;
cin >> T;
//read(T);
while (T--)
solve();
return 0;
}
/*PonyHex*/
ll ksm(ll a, ll b) {
ll base = a;
ll ans = 1;
while (b) {
if (b & 1)ans *= base % mod;
ans %= mod;
base *= base; base %= mod;
b >>= 1;
}
return ans % mod;
}
ll gcd(ll a, ll b) {
return b ? gcd(b, a % b) : a;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3624kb
input:
2 4 8 3 2 6 6 3 9 10 10 1
output:
6 4
result:
ok 2 number(s): "6 4"
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3776kb
input:
116 4 0 3 2 6 6 4 1 3 2 6 6 10 19 10 2 8 4 2 4 9 3 3 3 4 8 3 9 3 6 2 19 2 10 11 15 3 1 1 4 3 7 10 8 6 7 10 10 14 8 7 1 1 10 9 2 8 10 7 2 13 2 3 10 10 8 1 6 6 9 4 7 1 8 8 7 14 6 7 4 5 3 1 3 11 6 8 1 10 9 7 2 6 6 1 3 9 4 10 6 1 3 8 7 7 10 6 2 10 4 7 2 5 11 9 10 5 9 2 9 1 2 4 8 6 2 8 8 1 6 4 5 7 2 9 8 ...
output:
2 2 3 6 16 3 2 8 1 3 1 3 2 6 1 4 16 3 20 9 1 3 3 2 6 2 5 3 2 6 15 18 1 4 3 3 4 10 4 3 4 5 1 2 2 7 18 3 2 1 12 6 1 20 2 16 8 3 5 1 2 3 2 1 6 2 3 3 1 2 4 2 4 6 20 4 1 16 3 1 2 4 3 1 8 4 4 1 1 5 8 3 8 2 4 1 9 8 5 4 2 4 9 2 624 11 33 124 615 496 103 1 160 3 1 9
result:
wrong answer 1st numbers differ - expected: '0', found: '2'