今天主要用来铺路,打基础

枚举

没什么具体算法讲究,但要考虑更优的暴力枚举方法,例如回文质数,有以下几种思路:

1.挨个枚举自然数,再一起判断是否是回文数和质数,然而一看就不是最优

2.先枚举质数再判断回文,但质数显然要比回文数要多,较下一种慢

3.先枚举回文数再判质:

  (1).分别开数组,把每个元素当做一位数,如w[1]表示个位,w[2]表示十位等,如果能构成回文,再判质

  (2).枚举最大数位数的一半,即分析1-600000之中的数只需枚举后三位,将后三位翻转形成回文数,再判质,显然更优

洛谷原题,用的3-(1),其实效果与1相仿,就是少判断几次,很快ac了,显然数据很水

搜索

这个真的没有整的必要,毕竟最近学了,最近也整理过了(只会打模板QAQ)

贪心

贪心是一类思路的总称,其实没有像动态规划,深搜广搜,dijkstra一样的公式,只是指这类题可以根据局部最优,推出全局最优

大佬曰:“贪心难的不是算法思路,而是如何证明这个算法思路是对的”

(就像几何证明题,你看它垂直,就是证不出来)

贪心主要思路:

1.列些好像是对的的关系式,越多越好,当然如果直接有正确思路可以直接敲代码了。。。

2.对于以上思路、关系式,尽力举反例,卡掉越多思路剩下的正确率越高,除非你把自己的思路全部卡掉,对于这种情况,提供两种方案:

  (1).放弃此题

  (2).取样例过得多的算法,骗更多的分

其实贪心需要刷题来养成形成最优方案的思维

二分

讲过,但具体并没进行过代码实现过,今天简单练了下

粘个代码:

#include<bits/stdc++.h>
using namespace std;
int n; //数据总个数
int target; //查询目标
int l,r,mid;
int a[];
priority_queue<int,vector<int>,greater<int> > q; //用优先队列排序,不用sort
int main(){
scanf("%d%d",&n,&target);
for(int i=;i<=n;i++){
int x;
scanf("%d",&x);
q.push(x);
}
for(int i=;i<=n;i++){
a[i]=q.top();
q.pop();
}
for(int i=;i<=n;i++)printf("%d ",a[i]);
puts(""); //好像puts比printf和cout快的多,就像getchar与scanf与cin
l=;
r=n;
while(l<=r){ //二分主体
mid=(l+r)>>;
if(a[mid]==target){
printf("%d\n",mid);
return ;
}
if(a[mid]>target)
r=mid-; //必须作加减处理,不然卡死循环
else if(a[mid]<target)
l=mid+;
}
printf("Why did u say that number?\n"); //蝙蝠侠老梗(无解情况)
return ;
}

分治

好像就是递归??

用分治做出来过“幂次方”(题目传送门)

(博客传送门)

当时觉得自己a了道递归题好厉害。。。完全不知道这是分治

清北学堂(2019 4 28 ) part 1的更多相关文章

  1. 清北学堂2019.8.10 & 清北学堂2019.8.11 & 清北学堂2019.8.12

    Day 5 杨思祺(YOUSIKI) 今天的难度逐渐上升,我也没做什么笔记 开始口胡正解 今天的主要内容是最小生成树,树上倍增和树链剖分 最小生成树 Prim 将所有点分为两个集合,已经和点 1 连通 ...

  2. 清北学堂2019.7.18 & 清北学堂2019.7.19

    Day 6 钟皓曦 经典题目:石子合并 可以合并任意两堆,代价为数量的异或(^)和 f[s]把s的二进制所对应石子合并成一堆所花代价 枚举s的子集 #include<iostream> u ...

  3. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  4. 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

    清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...

  5. 济南清北学堂游记 Day 1.

    快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...

  6. 清明培训 清北学堂 DAY1

    今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1)   高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...

  7. 7月清北学堂培训 Day 3

    今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: S ...

  8. 清北学堂(2019 4 28 ) part 2

    主要内容数据结构: 1.二叉搜索树 一棵二叉树,对于包括根节点在内的节点,所有该节点左儿子比此节点小,所有该节点右儿子比该节点大,(感觉好像二分...) 每个节点包含一个指向父亲的指针,和两个指向儿子 ...

  9. <知识整理>2019清北学堂提高储备D2

    简单数据结构: 一.二叉搜索树 1.前置技能: n/1+n/2+……+n/n=O(n log n)  (本天复杂度常涉及) 2.入门题引入: N<=100000. 这里多了一个删除的操作,因此要 ...

随机推荐

  1. Linux下PAM模块学习总结

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等.在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM( ...

  2. 搞懂MySQL分区

    一.InnoDB逻辑存储结构 首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成. 段 段就是上图的segment区域,常见的段有数据段. ...

  3. sublime text3插件解决输入法不跟随的问题

    快捷键ctrl + shift +p 输入  install package 回车,调出插件搜索器, 在搜索栏中输入 IMESupport 回车安装插件. 即可解决问题.

  4. Office组件无法正常使用的解决方法

    问题与现象     开发时调用Office组件,代码编译是通过的,但在运行时当ApplicationClass对象初始化后程序出现异常.     异常信息如下:     无法将类型为“Microsof ...

  5. harris角点检测的简要总结

    目录 1. 概述相关 2. 原理详解 1) 算法思想 2) 数学模型 3) 优化推导 3. 具体实现 1) 详细步骤 2) 最终实现 4. 参考文献 1. 概述相关 harris角点检测是一种特征提取 ...

  6. 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props”

    未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props” ...

  7. win10的hyper-v共享文件夹

    win10这个奇葩,共享文件夹变得非常困难. 其他不说,关键点在于获取虚拟机的 ip,我的虚拟机系统是winxp,虚拟机本身可以上网.拿到ip,用这个ip还是无法访问\\ip 的共享文件夹,因为win ...

  8. ubuntu18.04 ssh 远程系统拒绝连接 解决方法

    错误提示是这个: The remote system refused the connection. 原因是 Ubuntu 没安装  一个软件, 废话不多说 ,上解决方法: 执行该条命令,安装 ,安装 ...

  9. 猴子选大王 (约瑟夫环)(c#)

    猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子, ...

  10. LVM 磁盘分区扩容

    前提:将磁盘中未分区磁盘进行分区操作 https://www.cnblogs.com/guoxiangyue/p/10033367.html 然后进行vg扩容 pvcreate /dev/sdc lv ...