首页 > 编程语言 >算法练习记录(24.10.5)

算法练习记录(24.10.5)

时间:2024-10-05 19:11:42浏览次数:7  
标签:typedef ll 练习 因数 24.10 mid 算法 灯泡 define

1.B. Brightness Begins

思路

要求最后的灯泡打开的数量,由于一开始灯泡是打开的,如果最后还需要打开,那么操作数量一定是偶数,移目至操作前提,需要灯泡的序号能整除 \(x\),由于遍历1~x,推出最后灯泡 \(i\) 亮的条件是:\(1~i\) 中有偶数个\(i\)的因数,即 \(i\) 有偶数个因数,反之即有奇数个因数,由于因数成对存在,只有当这个数是完全平方数的时候才会有奇数个因数,所以题目转化为: \(n\) 以内至少有 \(k\) 个非完全平方数。
正难则反,我们只需反求:\(n\) 以内至少有 \(n-k\) 个非完全平方数。第 \(n-k\) 个非完全平方数即 \((n-k)^2\) ,可得方程:\(n<=(n-k)^2\) ,变形得:
\(f(n)=n-\sqrt{n}>=k\),
由于 \(f(n)\) 单调递增,所以问题变成了:找到最小的 \(n\) ,使得 \(f(n)>=k\) 成立,二分即可;
注意:使用sqrtl代替sqrt,精度需求高;

AC代码

    #include<bits/stdc++.h>
    #define endl '\n'
    #define ll long long
    #define pb push_back
    #define bs bitset
    #define fast() ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
    using namespace std;

    typedef pair<char,int> PCI;
    typedef pair<int,int> PII;
    typedef pair<long long, long long> PLL;
    typedef priority_queue<int> PQ;
    const int N = 2e5+10, MAX = 1e9, INF = -1e9;

    ll k;

    void solve(){
        cin>>k;
        ll l=1;ll r=2e18;
        while(l<r){
            ll mid=(l+r)>>1;
            if(mid-(int)sqrtl(mid)>=k)r=mid;
            else l=mid+1;
            //cout<<l<<" "<<r<<" "<<mid<<" "<<mid-sqrt(mid)<<endl;
        }
        cout<<l<<endl;
    }

    int main()
    {
        fast();
        
        int t=1;
        cin>>t;
        while(t--){
            solve();
        }
        return 0;
    }

标签:typedef,ll,练习,因数,24.10,mid,算法,灯泡,define
From: https://www.cnblogs.com/oaths/p/18448307

相关文章

  • 2024.10.5 LGJ Round
    A给定\(n\)个区间,你要选出最多区间对数,使得每一对的区间都不交。\(n\le4e5\)。反悔贪心,我们将所有区间按\(l_i\)从小到大排序,一个一个加入,加入的时候有两种情况。1.之前的区间中存在未匹配的区间,且可以跟当前区间匹配。我们随便选择一个区间跟当前区间匹配即可。2.找不到......
  • 【THM】Nax练习
    【THM】Nax练习与本文相关的TryHackMe实验房间链接:TryHackMe|Nax简介:识别市场上最强大、最可信的网络监控软件中的关键安全缺陷,该软件允许用户通过身份验证执行远程代码执行。你能完成这个挑战吗?注意:这个房间需要Metasploit6第一题:你找到了什么隐藏的文件?第一步端口......
  • Dijkstra算法,动态规划和滑动窗口
    一:最小花费题目链接:1928.规定时间内到达终点的最小花费-力扣(LeetCode)(1)Dijkstra算法理解问题:首先,我们需要理解问题的核心是找到一条从城市0到城市n-1的路径,这条路径在不超过给定时间 maxTime 的前提下,通行费之和最小。图的表示:由于城市之间是通过双向道路连接的......
  • C++-练习-52
    题目:这个练习让您编写处理数组和结构的函数,下面是程序的框架,请提供其中描述的函数,以完成该程序#include<iostream>usingnamespacestd;constintSLEN=30;structstudent{charfullname[SLEN];charhobby[SLEN];intooplevel;}; intgetinfo(studentpa[],i......
  • 2024.10.4(周五)
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>工资核算信息</title><style>/*整体页面布局和样式*/......
  • 2024.10.7(周一)
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>车间班组</title><style>/*整体页面布局和样式*/......
  • 《代码大全》阅读笔记1(2024.10.4)
    第一章:引言软件构建的艺术:介绍了软件开发的复杂性,以及编写高质量代码的重要性。强调了良好的编码习惯不仅能提高代码的可读性和可维护性,也能降低后期的开发成本。第二章:软件构建的哲学质量的重要性:讨论了软件质量的定义,强调高质量软件不仅包括功能的正确性,还包括可维护性、......
  • 2024.10.2(周三)
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>生产工序信息</title><style>/*整体页面布局和样式*/......
  • 2024.10.1(周二)
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>生产制令</title><style>/*整体页面布局和样式*/......
  • 2024.10.3(周四)
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>质量检验信息</title><style>/*整体页面布局和样式*/......