Div2 T3为什么0分??
  • 板块学术版
  • 楼主vegetable_ste
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/10/3 18:01
  • 上次更新2023/11/4 05:00:33
查看原帖
Div2 T3为什么0分??
305002
vegetable_ste楼主2021/10/3 18:01

RT

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e6 + 10;
ll n, q, a[N];
unordered_set<ll> occ;
unordered_map<ll, ll> dp;
ll solve(ll pos) {
	if(pos < 1) return 0;
	if(dp[pos]) return dp[pos];
	if(occ.count(pos)) return 0;
	/*
	ll chess = lower_bound(a + 1, a + 1 + n, pos) - a - 1;
	if(chess < 1 || chess > n) return 0;
	chess = a[chess];
	*/
	ll chess = n;
	while(a[chess] > pos && chess > 0) chess -- ;
	if(chess < 1) return 0;
	chess = a[chess];
	ll nex = (chess << 1) - pos;
	if(occ.count(nex)) return 0;
	if(nex < 1) return dp[pos] = 1;
	return dp[pos] = 1 + solve(nex);
}
int main() {
	scanf("%lld%lld", &n, &q);
	for(int i = 1; i <= n; i ++ ) {
		scanf("%lld", a + i);
		occ.insert(a[i]);
	}
	sort(a + 1, a + 1 + n);
	while(q -- ) {
		ll pos = 0; scanf("%lld", &pos);
		printf("%lld\n", solve(pos));
	}
	return 0;
}

2021/10/3 18:01
加载中...