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

枚举

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

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. Java服务器内存过高&CPU过高问题排查

    一.内存过高 1.内存过高一般有两种情况:内存溢出和内存泄漏 (1)内存溢出:程序分配的内存超出物理机的内存大小,导致无法继续分配内存,出现OOM报错 (2)内存泄漏:不再使用的对象一直占据着内存不释 ...

  2. 结对开发nabcd

     各位领导/投资人/用户/合作伙伴: 我们的产品校园生活 是为了解决 广大在校师生对于信息难以得到的痛苦,他们需要了解有关于学校开办的各种活动的信息还有各种二手商品的交换信息,他们也需要一个公开的平台 ...

  3. MVC,EF 小小封装

    1.项目中经常要用到 EF,有时候大多数的增删改查都是重复性的东西,本次封装就是为了快速开发,期间没有考虑到架构上的各种思想,就感觉到欠缺点什么东西所以这次将这些拉出来,有存在问题的话还请各位多多指导 ...

  4. java爬虫系列第一讲-爬虫入门

    1. 概述 java爬虫系列包含哪些内容? java爬虫框架webmgic入门 使用webmgic爬取 http://ady01.com 中的电影资源(动作电影列表页.电影下载地址等信息) 使用web ...

  5. I/O输出流基础之FileOutputStream

    OutputStream:是所有字节输出流的父类,其作用是:用这个流把网络数据(getOutputStream()),或者内存中的字节数组数据写到文件系统中文件系统(FileOutputStream) ...

  6. 原生 table css实现操作按钮固定右侧及底部滚动 IE不会卡死

    需求的表格比较复杂(各种合并新增删除),elementUi的table组件无法满足需求,故而写了原生table,且与其他用了table组件的表格保持一致. 贴一下简单的代码,只实现操作按钮固定右侧以及 ...

  7. React create-react-app Build fails after eject: Cannot find module '@babel/plugin-transform-react-jsx'

    运行 npm run eject 出现报错 Build fails after eject: Cannot find module '@babel/plugin-transform-react-jsx ...

  8. [C#学习笔记1]用csc.exe和记事本写一个C#应用程序

    csc.exe是C#的命令行编译器(CSharpCompiler),可以编译C#源程序成可执行程序.它与Visual Studio等IDE(Integrated Development Environ ...

  9. Snapde电子表格编写Exprtk脚本进行数据运算

    Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件:它运行的速度非常快,反应非常灵敏. 一.打开文件:用Snapde打开需要运算的CSV文件 二.添加行列:在编辑菜单找到设置 ...

  10. Android项目实战(五十二):控制EditText输入内容大小写转换

    今日需求,EditText内容为一串字符串,要求将用户软键盘输入的小写字母在输入的时候自动转为大写字母,反之亦然. 效果如下: 第一次做该需求,原先想法: EditText.addTextChange ...