2024牛客暑期训练营7

赛时:I,J        (太废物了,只签到了)

目录

I:(二分)

题解:

J:

题意:

解题思路:


I:(二分)

题解:

                我觉得这道题很容易想到二分,只不过写不出来的可能是check函数写超时了,check函数其实可以做到O(1)的。

#include<bits/stdc++.h>
#define endl '\n'
#define ll long long
#define int long long
#define double long double
#define Int __int128
#define pb push_back
#define eb emplace_back
#define MAX_LOG 21
#define ff first
#define ss second
#define M 5005
#define ull unsigned long long
using namespace std;
const double PI=3.1415926535897932385;
const ll LLMAX=9223372036854775807ll;
const ll LLMIN=-9223372036854775808ll;
//const int MAX_INT=0x3f3f3f3f;
const int IIMAX=2147483647;
const int IIMIN=-2147483648;
const int INF=0x3f3f3f3f;
typedef pair<ll,ll> PLL;
typedef pair<int,int>PII;
ll gcd(ll a,ll b)
{
    if(b) while((a%=b)&&(b%=a));
    return a+b;
}//最大公约数函数
ll spid(ll a,ll b,ll p)
{
    ll ans=1;
    while(b)
    {
        if(b&1)ans=ans*a%p;
        b>>=1;
        a=a*a%p;
    }
    return ans;
}//快速幂函数
///泡沫在阳光下闪烁,像星辰在寂静得夜空中闪耀

///秋雨
const ll N=2e5+10;
void solve()
{
    ll m,k,h;
    cin>>m>>k>>h;
    ll l=0,r=h;
    while(l<r)
    {
        ll mid=l+r>>1;
        auto check=[&](ll mid)->bool
        {
            ll cnt=mid;
            ll cut=cnt;
//            if(cnt<m)cout<<cnt<<'\n';
            if(cnt<m)return cut>=h;
            if(m==k)return 1;
//            if(m==k)cout<<"de\n";
            ll del=m-k;
            ll t=(cnt-m)/del+1;
//            cout<< mid+k*t<<'\n';
            return mid+k*t>=h;
        };
//        cout<<"cehck"<<mid<<' ';
        if(check(mid))r=mid;
        else l=mid+1;
    }
    cout<<l<<'\n';
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int t=1;
    cin>>t;
    while(t--)
    {
        solve();
    }
}
///在秋天邂逅, 在春天发芽,在夏天壮大,在秋天萧瑟,在冬天萎缩,

///而后,春天再度归来。



J:

        题意:

                给一根左端点在原点,右端点在(l,0)的点的棍子,给你一个点,问存不存在一个轴(在棍子上)让棍子转起来能扫到这个点。

        解题思路:

                 画了一下,就发现中间点画出来的圆明显半径小,而且范围也小,根本不能和两个端点比,那么就判一下轴点在两个端点的情况即可。

                

#include<bits/stdc++.h>
#define endl '\n'
#define ll long long
#define int long long
#define double long double
#define Int __int128
#define pb push_back
#define eb emplace_back
#define MAX_LOG 21
#define ff first
#define ss second
#define M 5005
#define ull unsigned long long
using namespace std;
const double PI=3.1415926535897932385;
const ll LLMAX=9223372036854775807ll;
const ll LLMIN=-9223372036854775808ll;
//const int MAX_INT=0x3f3f3f3f;
const int IIMAX=2147483647;
const int IIMIN=-2147483648;
const int INF=0x3f3f3f3f;
typedef pair<ll,ll> PLL;
typedef pair<int,int>PII;
ll gcd(ll a,ll b)
{
    if(b) while((a%=b)&&(b%=a));
    return a+b;
}//最大公约数函数
ll spid(ll a,ll b,ll p)
{
    ll ans=1;
    while(b)
    {
        if(b&1)ans=ans*a%p;
        b>>=1;
        a=a*a%p;
    }
    return ans;
}//快速幂函数
///泡沫在阳光下闪烁,像星辰在寂静得夜空中闪耀

///秋雨
const ll N=2e5+10;
void solve()
{
    double l,x,y;cin>>l>>x>>y;
    double len=x*x+y*y;
    if(len<=l*l)
    {
        cout<<"Yes\n";
        cout<<0<<'\n';
        return;
    }
    x=x-l;
    len=x*x+y*y;
    if(len<=l*l)
    {
        cout<<"Yes\n";
        cout<<l<<'\n';
        return;
    }cout<<"No\n";
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int t=1;
    cin>>t;
    while(t--)
    {
        solve();
    }
}
///在秋天邂逅, 在春天发芽,在夏天壮大,在秋天萧瑟,在冬天萎缩,

///而后,春天再度归来。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值