当前位置: 首页 > news >正文

for dfs|二分

 

lc1513

组合数学

typedef long long ll;
class Solution {
/*
输入:s = "0110111"
输出:9
*/
int mod=1e9+7;
public:
int numSub(string s) 
{
int n=s.size(),i=0;
ll ret=0;
while(i<n)
{
while(i<n && s[i]=='0')
i++;
int cnt=0;
while(i<n && s[i]=='1')
{
cnt++;
i++;
}
ret=(ret+(ll)cnt*(cnt+1)/2)%mod;
}
return (int)ret;
}
};

 

lc2187

问题问什么,就二分什么的

 

二分查找快速找到完成指定总行程(totalTrips)的最短时间:

以“时间x能否完成目标行程”为判断条件

class Solution {
public:
long long minimumTime(vector<int>& time, int totalTrips) {
auto check = [&](long long x) -> bool {
long long sum = 0;


for (int t : time) {
                sum += x / t;
        //loop time +every bus 可走次数
if (sum >= totalTrips)
return true;
}
return false;
};

        int min_t = ranges::min(time);
long long left = min_t;
long long right = 1LL * min_t * totalTrips; // 循环不变量:check(right) 恒为 true
while (left <= right)
{
long long mid = left + (right - left) / 2;
if(check(mid))
right=mid-1;
else
left=mid+1;
}
return left;
}
};

 

py3魅力时刻

class Solution:
def minimumTime(self, time: List[int], totalTrips: int) -> int:
check = lambda x: sum(x // t for t in time) >= totalTrips
min_t = min(time)
# bisect_left 需要用左闭右开区间
left = min_t
right = min_t * totalTrips
return bisect_left(range(right), True, left, key=check)

 

lc1855

单调_贪心

class Solution {
public:
int maxDistance(vector<int>& nums1, vector<int>& nums2) 
{
int m=nums1.size(),n=nums2.size();
int j=0,mx=0;
for(int i=0;i<m;i++)
{
while(j<n && nums1[i]<=nums2[j])
j++;

mx=max(mx,j-i-1);
}
return mx;
}
};

 

lc1508

生成子数组

for(int i=0;i<n;i++)

            dfs(i,0);

class Solution {

    vector<int> t;

    vector<int> nums;

    int n;

    int mod=1e9+7;

public:

    int rangeSum(vector<int>& nums, int n, int left, int right) 

    {

        this->n=n;

        this->nums=nums;

        for(int i=0;i<n;i++)

            dfs(i,0);

        sort(t.begin(),t.end());

        int ret=0;

       

        for(int i=left-1;i<right;i++)

        {

            ret=(ret+t[i])%mod;

        }

        return ret;

    }

 

    void dfs(int p,int sum)

    {

       if(p==n)

           return;

       sum+=nums[p];

       t.push_back(sum);

       dfs(p+1,sum);

    }

};

 

http://www.dtcms.com/a/615617.html

相关文章:

  • 第十六周Window的权限提升和维持
  • 怎么反编译易语言 | 深入了解反编译技术及其应用
  • 建设国外网站shanxi建设银行网站首页
  • 服务器搭建网站域名配置湖州营销网站建设
  • 深度学习Week1--数学基础 + 机器学习基础
  • 有没有做京东客好的网站推荐网站建设横幅系列素材
  • 站长工具短链接生成克拉玛依市住房和建设局网站
  • 解答网站内容优化策略佛山建站模板搭建
  • 屹晶微 EG2104 带SD功能半桥MOS管驱动芯片技术解析
  • 中国铁路保险网站房地产开发公司职位
  • 门户网站html.net 电子商务网站源码
  • 宁波网站建设选择荣胜网络免费海外网站建设
  • 设计公司网站模板做商城网站的项目背景图片
  • 网站命名规范甘肃网络推广软件
  • 软考程序员2017年上半年链表案例题解答
  • 展览设计网站推荐国内建筑网站
  • 郑州建设电商网站网站建设中企动力强
  • 企业网站设计策划沈阳世纪兴网站制作公司
  • 网站格局济源网站建设价格
  • 怎么说服客户做网站网站制作前期
  • 蓬莱做网站公司室内装修设计软件培训
  • 网站建设代理哪个好长沙短视频代运营公司
  • 41_FastMCP 2.x 中文文档之FastMCP客户端认证:Bearer 令牌认证详解
  • 专题学习网站开发流程诚信通国际网站怎么做
  • 自已电脑做网站c2c的典型代表有哪些
  • 成都企业网站优化营销4p
  • 网站建设优化推广杭州贵州省交通建设集团网站
  • 做淘宝美工需要知道的网站建筑设计说明万能模板
  • 建设银行招生网站搜索引擎优化管理实验报告
  • js特效网站模板下载辽宁官方网站做辣白菜