用户工具

站点工具


2020-2021:teams:no_morning_training:training_record:2020_05_10-d
#include <iostream>
#include <set>
#include <cstdio>
#include <vector>
using namespace std;
int n,k;
bool check(int x)
{
    set<int> st;
    vector<int> vec;
    vec.push_back(-x);
    for(int i = 1;i <= n;i++)
        if(i != x)
	    st.insert(-i);
    while(vec.size() != n)
    {
	int s = vec.size();
	for(int i = 0;i < s;i++)
	{
	    int v = vec[i];
	    auto np = st.lower_bound(v - k);
	    int y = *np;
	    if(np != st.end())
	    {
		vec.push_back(y);//
		st.erase(y);
	    }
	    else
		return false;
	}
    }
    return true;
}
int main()
{
    scanf("%d%d",&n,&k);
    int l = 1,r = n + 1;
    while(l < r)
    {
	int mid = (l+r)/2;
	if(!check(mid)) l = mid + 1;
	else r = mid;
    }
    cout<<l<<endl;
}
2020-2021/teams/no_morning_training/training_record/2020_05_10-d.txt · 最后更改: 2020/05/14 18:37 由 shaco