福州DAY6

2024-01-12 13:48
文章标签 day6 福州

本文主要是介绍福州DAY6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    转眼之间,5天就过去了。今天是第6天了,我们讲了分治和贪心两种思想。因为某种特殊的原因,今天就以分治为主讲吧(其实只是想博客写短一点,当然,最主要的目的是看起来方便、美观)。

 

分治:要想学习一种知识,首先要了解它的特点和作用。上面已经用粗体标注过了。首先要注意的是,分治其实是一种思想,并不是一种算法(by老师)。把分治二字拆开来说就是分而治之。详细的来说就是把一个原始的不能直接求的问题分成若干个比较好求的子问题,然后把它们合并起来,得到最后的解。

 

分治的使用对象和使用方法:分治使用的领域非常广,也是我们平时经常用到,普遍会在不知不觉中就接触的神奇的东西。今天最让我感到惊奇的是,在搜索题,竟然也可以用分治来解决。首先我觉得吧,要用分治的题目肯定要麻烦,一下子可能不能直接求出来,不然我们也就不会用分治了。在把原问题拆成子问题的时候,我们必须要满足原问题和子问题要是大致相同的,必须得是“一类”的问题,不然是进行不了分治的。所以,我们首先要做的就是把它们转成一类题。总的来说,分治的对象要好拆、好合,子问题好求。

 

讲了这么多的描述,那么就先来道经典的例题吧!

 

经典例题——逆序对

逆序对是一道非常经典的分治题,同时这一道题的解法也特别多。在之前的几天课中,我们已经学会了用树状数组来求逆序对,那么我们再来复习一下来凑字数吧。逆序对已经碰到多次了,这里就不讲题目描述了。这一次,我们用归并排序来求逆序对。

那么问题来了,为什么用归并排序就能够求逆序对对数了呢?其实我们可以不断地把一整个数列分成两半,对于后半部分中的每个数字,统计前半部分中比他大的数字的个数,这道题就可以完美的解决了。合并两个有序的序列用时O(n),如果序列长度为1不用排序,在通过递归,时间复杂度为O(nlogn)总体来说是非常高效的。

———————————————华丽丽的分割线———————————————

long long ans=0;
int a[100003],b[100003];inline void swap(int a,int b)
{int t;t=a;a=b;b=a;
}inline void gbsort(int l,int r) 
{int mid,tmp,i,j;if(r>l+1){mid=(l+r)/2;gbsort(l,mid-1);gbsort(mid,r);tmp=l;for(int i=l,j=mid;i<=mid-1 && j<=r;){if(a[i]>a[j]){b[tmp++]=a[j++];cnt+=mid-i;}elseb[tmp++]=a[i++];}if(j<=r)for(;j<=r;j++) b[tmp++]=a[j];elsefor(;i<=mid-1;i++) b[tmp++]=a[i];for(i=l;i<=r;i++)a[i]=b[i];}else{if(l+1==r)if(a[l]>a[r]){swap(a[l],a[r]);cnt++;}}
}

———————————————华丽丽的分割线———————————————


本来还想写二分查找和快速幂的,才发现以前原来就已经写过了,好像的确没有什么东西好讲的(实际上是我没有什么会讲),如果要看的话就去点击打开链接吧(溜了溜了


这篇关于福州DAY6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/598069

相关文章

10天速通Tkinter库——Day6:《植物杂交实验室》整体框架介绍

目录 整体介绍 1. 应用程序主窗口 1.1 主页面初始化 1.2 数据加载 1.3 子页面初始化 1.4 页面跳转和程序关闭处理  1.4 PVZ_HL.py完整代码 2. 动画加载 3. 游戏主界面 4. 通用组件 5. 总结 整体介绍 一不小心就拖更了五天,私密马赛。但你们知道这五天我都是怎么过的吗,我起早贪黑(起不来一点),每天勤勤恳恳撸代码,做设计(谁家好人

中国汽车品牌口碑榜之:--2013年第3季度福州跑车综合口碑排名

根据2013年第3季度开元研究对中国汽车品牌口碑的研究,在福州跑车综合口碑排名中,奔驰SL的排名第一,其次是保时捷Panamera和奥迪A5分列第二和三名。详细排名如下表所示:          注:跑车 参与排名的车型共19种,分别为:奔驰SL、保时捷Panamera、奥迪A5、奔驰CLS、三菱LancerEvo、奔驰CL、奔驰CL级AMG、雷克萨斯LFA、奥迪

day6 测试基础知识积累

JMeter 服务端系统性能测试是针对服务器端应用程序或服务 在特定负载下的运行能力和稳定性进行评估的方法。 产品文档应该有产品的性能指标,做性能测试前,如果需求文档没有性能指标则要向产品团队要。服务端系统性能测试 的常见指标有:TPS、响应时长、并发连接和并发用户、CPU\内存\磁盘\网络 负载。 TPS(transaction per second): 是服务端每秒处理请求的数量;最直观

HTML静态网页成品作业(HTML+CSS+JS)——我的家乡福州介绍网页(3个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTML+CSS,使用Javacsript代码实现图片轮播,共有3个页面。 二、作品演示 三、代码目录 四、网站代码 HTML部分代码 <!DOCTYPE html><html lang="zh

JAVA学习笔记DAY6——SSM_Spring

文章目录 技术体系结构单体架构分布式架构 框架 FrameworkSpringIoc容器和核心概念组件Spring管理组件优点Spring Ioc 容器和容器实现普通容器复杂容器SpringIoc容器具体接口和实现类SpringIoc 容器管理配置方式 SpringIoc Ioc DI Spring Ioc 实践和应用Spring Ioc创建步骤配置信息实例化 DI 依赖注入单个构造函数参数

奋战杭电ACM(DAY6)1010

纠结了两天的题,一开始自己想不出来,上网搜前辈的解题报告,没看懂…… 对算法掌握太少了,知道知识点是深度优先遍历(DFS)和剪枝(本题特殊在奇偶剪枝),于是花了一天的时间学习这两个知识点,到处翻书哇!!于是还是没做出来……但是又结合前辈的解题报告,这次能看懂了!! 然后自己做,失败2次……第三次解决了!!提交,一次AC!! 作对这道题成就感胜过昨天AC4到啊!! 总结一下,本题的思路还是很

day6 C++

相关概念:保持已有类的特征,在原来的基础上,增加新的特征,从而构造出新的类的过程,称为继 C++day6 继承:目的 1:实现代码的复用性 2:建立父类和子类之间的联系 3:通过继承,实现子类对父类的重写,从而实现多态 相关概念:保持已有类的特征,在原来的基础上,增加新的特征,从而构造出新的类的过程,称为继承/派生。 被继承者---------->父类 /基类 base 继承者 -----

2024中国海洋装备展暨航海装备大会(福州海峡国际会展中心)

关于邀请参加2024中国海洋装备博览会的函 为加快推动海洋强国建设。在福建省人民政府的大力支持下,第二届中国海洋装备博览会将于2024年11月15-18日在福州举办。 博览会将进一步聚焦产业链和供应链协同创新,着力推动现代海洋产业体系建设,促进海洋科技创新、提升绿色化数字化水平、拓展海洋装备产业领域开放合作空间,搭建专业高效的交流合作平台,突出国家战略和福建省优势,全方位展示海洋技术、装备发展

化为实习day6

经过一个周末的休息,实在是不想上班,虽然上班什么都没干,就是看看书。今天也没接触到项目,还是在看书,看了JQuery,感觉JQuery这个框架还是挺不错的,使JavaScript简单多了。今天主要看的内容是jQuery选择器,类似于CSS选择器。使我们的页面更简洁,而且他的处理机制也是异常强大,更加灵活的操纵html 中的元素。jQuery选择器也是jQuery的一个非常重要的优点,在前端面试的时

python 学习 三国演义词频显示 DAY6

import jieba txt = open(r"C:\Users\lenovo\Desktop\threekingdoms.txt","r",encoding="utf-8").read() excludes = {"将军","却说","二人","不可","荆州","不能","如此"} words = jieba.lcut(txt) counts = {} for word in w