2022-01-10 每日打卡:难题精刷

写在前面

“这些事儿在熟练之后,也许就像喝口水一样平淡,但却能给初学者带来巨大的快乐,我一直觉得,能否始终保持如初学者般的热情、专注,决定了在做某件事时能走多远,能做多好。” 该系列文章由python编写,所刷题目共三个来源:之前没做出来的 ;Leetcode中等,困难难度题目; 周赛题目;某个专题的经典题目,所有代码已AC。每日1-3道,随缘剖析,希望风雨无阻,作为勉励自己坚持刷题的记录。

POJ 2456 Aggressive cows


并没有好的算法来排布,最开始想的是递归二分,每次将一只牛放在区间最接近中位数的位置,也许思路是对的,但超时了。看不见测试用例,这里记录一下双指针(尺取)法:

需要枚举的题几乎都可以使用二分法,即不断逼近以确定答案,只需要将第一次的取值确定好即可。
譬如这个题可以发现距离的上界是a[n-1]- a[0] /(牛的个数-1),再超过这个距离一定放不下。
那么就进行不断二分,设下界为1,上界为这个距离的两倍,得出的一个距离就是该距离。然后二分。

 #include <algorithm>#include <cmath>#include <iostream>using namespace std;int a[100005];int n,m,i,j,f,l,mid;bool check(int mm){int i,s=1,k=0;for(i=1;i<n;i++){if(mm+a[k]<=a[i]){k=i;s++;}if(s==m)break;}if(s<m)return false;return true; }int main(){   scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n);int total = ceil(((a[n - 1] - a[0]) / (double)(m-1)));f=1,l=total*2-1;while(f<=l)//二分 {mid=(f+l)/2;// cout<<f<<l<<mid;if(check(mid))f=mid+1;elsel=mid-1;}printf("%d\n",l);}                                                                                                                                                                                                                                                                                                                                         

POJ 2406 Power Strings


KMP求最小循环节,首先要理解next数组的含义:next[i]表示前面长度为i的子串中,前缀和后缀相等的最大长度。

可以发现:

  • 不相同,模式串后移,相当于模式串的指针前移,在这个题中最开始的一个串的表现就是前指针,也就是从开头就匹配的模式串不动(移回来了),后指针++
  • 相同,前后指针一起移动

前指针移动到什么位置呢?在KMP算法中,移动到 部分对应匹配值 的下一位就可以,也就是我们说的next数组。所以主要是需要求出next数组:

求法就是dp,共有以下转移条件:

  • 开始or不相等:移动指针到匹配个数,赋值next
  • 相等:移动指针,赋值next
 #include<cmath>#include<cstdio>#include<string>#include<iostream>#include<algorithm>using namespace std;typedef unsigned long long ll;typedef long long LL;char s[1000000+10];int nexts[1000000+10];int len;void get_next(){int i,j;j=nexts[0]=-1;i=0;while(i<len){while(-1!=j&&s[i]!=s[j]) j=nexts[j];nexts[++i]=++j;}}int main(){while(~scanf("%s",s)&&s[0]!='.'){len=strlen(s);get_next();int ans=1;if(len%(len-nexts[len])==0)ans=len/(len-nexts[len]);printf("%d\n",ans);}}

2022-01-10 每日打卡:难题精刷相关推荐

  1. 2022-01-22 每日打卡:难题精刷

    2022-01-22 每日打卡:难题精刷 写在前面 "这些事儿在熟练之后,也许就像喝口水一样平淡,但却能给初学者带来巨大的快乐,我一直觉得,能否始终保持如初学者般的热情.专注,决定了在做某件 ...

  2. 2022/01/10 老男孩带你21周Go语言 (十四)

    P202 raft选主实现 候选人遇到 3种情况会结束: 1.当选leadr 2.其他服务器成为leader 3.卡死 go实现raft选举,raft可以定义一个结构体,根据结构体写代码 1.使用代码 ...

  3. 【LeetCode】2022 7月 每日一题

    [LeetCode]2022 7月 每日一题 前言 七月太忙了,又是项目又是练车又是各种比赛.大概有10天的每日一题没有当天写完(虽然后面补上了). 将每日一题的所有思路记录在这里分享一下. 7.1 ...

  4. 数学建模学习视频及资料集(2022.08.10)

    2021高中数学建模(应用)能力展示活动细则详解(上) 2021高中数学建模(应用)能力展示活动细则详解(上)_哔哩哔哩_bilibili 2021高中数学建模(应用)能力展示活动细则详解(下) 20 ...

  5. 1168:大整数加法--2022.01.22 AC

    /* 1168:大整数加法--2022.01.22 AC http://ybt.ssoier.cn:8088/problem_show.php?pid=1168c++中 cin.cin.get().c ...

  6. 1.5 编程基础之循环控制 11 整数的个数(2022.01.09)--python

    http://noi.openjudge.cn/ch0105/11/ """ 1.5 编程基础之循环控制 11 整数的个数(2022.01.09) http://noi. ...

  7. 从入门到入土:python爬虫|SCU每日打卡自动填写|测试训练|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 《安富莱嵌入式周报》第251期:2022.01.31--2022.02.06

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  9. 《安富莱嵌入式周报》第249期:2022.01.17--2022.01.23

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

最新文章

  1. Javascript中的apply、call、bind
  2. python教程第四版pdf下载-笨办法学python 第四版 中文pdf高清版
  3. 客户流失预警模型-GBDT模型
  4. MQTT 物联网协议
  5. java top类,Java8 Top Tips,java8toptips
  6. 【Python】安装方法小结
  7. Java中反射性能测试
  8. js获取url传递参数
  9. 求400以内的亲密对数c语言,东南大学C++编程练习
  10. 比芒果广告还要专业的广告管理系统:Keymob
  11. 3GPP 5G协议下载地址
  12. android手机如何拥有苹果表情包,怎样让安卓emoji显示iPhone的emoji样式
  13. 研发思维09----嵌入式智能产品开发经过思考
  14. 指环王解析_回到指环王
  15. 经典管理学定律4 - 鲶鱼效应
  16. java8时间转换函数学习,教你脱离jdf转换的痛苦
  17. 抽奖概率 php_php实现抽奖概率算法代码
  18. 安卓手机微信怎么恢复聊天记录?方法简单轻松搞定
  19. 血泪史: k8s Initial timeout of 40s passed.
  20. 184_刘发顺_Java核心编程

热门文章

  1. c语言 测试有哪种天赋,你拥有哪一种天赋?超准测试来了
  2. 用U盘重装了Windows 7, 用起来很爽
  3. Photoshop在网页设计中的应用与方法
  4. html 点击新建窗口,【单选题】在HTML中,若实现单击超链接时,弹出一个新的网页窗口,下列的()选项符合要求。 A. 节目 B. 节目 C. 节目 D. 节目...
  5. 我的CSDN五周年创作纪念日
  6. ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区...
  7. 学长做的网站,爆了 ! ! !
  8. 一个特别适合新手练习的Android小项目——每日一妹纸
  9. 如何屏蔽手机系统设置大号字体(老年人使用)引起的适配问题
  10. 三名用户起诉Facebook侵犯隐私,CEO扎克伯格:承认犯了巨大错误