对于小数的二分

可以写成循环\(n\)次的形式,\(100\)次循环可以达到\(10^{-30}\)的精度。小心因为eps设得太小导致死循环。

最大化平均值的二分

一些有除法的题目都需要用到这种技巧。

例题

有\(n\)个有价值和重量的物品,从中选出\(k\)个使得单位重量的价值最大。

算法

二分答案\(x\),然后就需要判断:\[\sum {v_i} \div \sum {w_i} \geqslant x\]
就有\[\sum {v_i - x \cdot w_i} \geqslant 0\]
接着贪心选取即可。

开灯问题(矩阵中)的新解法

核心:只要枚举第一行的开关情况,就能够确定其他格子的操作。

集合的枚举

枚举大小为\(k\)的子集方法:

int comb = (1 << k) - 1;
whlie (comb < 1 << n) {// insert code hereint x = comb & -comb;int y = comb + x;comb = ((comb & ~y) / x >> 1) | y;
}

折半搜索

适用于\(n(30)\)的题目。

find函数

例子:

posi = find(a.begin(), a.end(), 1024) - a.begin() 

i -= i & -i等价于 i &= i - 1

区间修改,区间询问

如果操作的结果可以用\(i\)的\(n\)次多项式表示,那么就可以使用\(n + 1\)个树状数组来维护。

例子:区间加上一个值,询问区间值的和。

令\(s(i)\)为前缀和。表示成如下形式\[s(i) = a \cdot i + b\]

如果在\([l,r)\)加上x,那么有:
\(i < l : s'(i) = s(i)\)
\(l \leqslant i \leqslant r : s'(i) = s(i) + x \cdot i - x \cdot (l-1)\)
\(r < i : s'(i) = s(i) + x \cdot (r - l + 1)\)

merge函数

用于归并排序!

merge(data1.begin(), data1.end(), data2.begin(), data2.end(), datanew.begin());

二分图的特殊的东西

对于任意图:

  • 不存在孤立点:最大匹配+最小边覆盖=n
  • 最大独立集+最小点覆盖=n

对于二分图,还有:

  • 最大匹配=最小点覆盖

转载于:https://www.cnblogs.com/wangck/p/4276571.html

挑战程序设计竞赛(第2版) 第3章笔记相关推荐

  1. 挑战程序设计竞赛(第2版)》

    <挑战程序设计竞赛(第2版)> 基本信息 作者: (日)秋叶拓哉 岩田阳一 北川宜稔 译者: 巫泽俊 庄俊元 李津羽 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787 ...

  2. 每周一书《 挑战程序设计竞赛 (第2版)》分享!

    内容简介 <挑战程序设计竞赛(第2版)>对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇.初级篇.中级篇与高级篇4章.作者结合自己丰富的参赛经验,对严格筛选的110多道各类试题进 ...

  3. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  4. ICPC程序设计题解书籍系列之三:秋田拓哉:《挑战程序设计竞赛》(第2版)

    白书<挑战程序设计竞赛>(第2版)题目一览 白书:秋田拓哉:<挑战程序设计竞赛>(第2版) 第1章 蓄势待发--准备篇(例题) POJ1852 UVa10714 ZOJ2376 ...

  5. 挑战程序设计竞赛:反转法

    挑战程序设计竞赛:反转法 1. 题目介绍 1.1 题目 1.2 样例 2. 思路讲解 2.1 视频讲解 2.1 反转法(开关问题) 3. 练习题 4. 附录:程序代码 4.1 Java 4.2 C++ ...

  6. 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】

    关于基本的动态规划和经典的动态规划,在之前已经总结过了,可以温习一下: 传送门 这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是DP方面的练习题: 一.基础的动 ...

  7. POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 1150 The Last Non-zero Digit超大组合数:求超大组合数P(n, m)的最后一个非零位.4.1更加复杂 ...

  8. POJ 3735 Training little cats​ 题解 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3735 Training little cats调教猫咪:有n只饥渴的猫咪,现有一组羞耻Play,由k个操作组成,全部选自: ...

  9. POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3608 Bridge Across Islands跨岛大桥:在两个凸包小岛之间造桥,求最小距离?3.6与平面和空间打交道的计 ...

  10. AOJ 1312 Where's Wally 题解《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    本文由码农场 同步,最新版本请查看原文:http://www.hankcs.com/program/algorithm/aoj-131 ...

最新文章

  1. R构建对数回归模型(Logarithmic Regression)
  2. JSON反序列的问题原因查找
  3. UPS及蓄电池的运行管理、维护操作和常见故障处理
  4. 谁能畅游智能电视红海:联想K82,还是乐视?
  5. mysql 查询从库状态_Mysql库表状态查询
  6. CPP_封装_继承_多态
  7. python3九九乘法表儿歌下载_Python3基础 九九乘法表
  8. 进程的描述与控制 操作系统第二章知识点归纳总结
  9. rocketmq 消息 自定义_rocketmq中的自定义消息头
  10. Windows 10 全新界面来了:焕然一新!
  11. 在我的ibmR40上装osx86
  12. 1024技术论坛 | C#与.NET技术新发展
  13. 运行xgboost 时出现的问题 from scipy.misc import comb ImportError: cannot import name 'comb'的
  14. ACM在线测试题C++实现蛇形填数
  15. scanner练习:BMI计算
  16. 左边是地狱右边也是地狱_我担任地狱首席执行官的时间
  17. GBase 8a MPP Cluster 数据加载参数及语句
  18. 5G时代IDC数据中心经历变革,分布式云存储服务器将独占鳌头
  19. 三种css垂直居中方案
  20. 怎么批量修改html文件后缀,如何批量修改文件后缀名 超详细介绍

热门文章

  1. 解决html5中video标签无法播放mp4问题的办法
  2. POI操作Excel时Cannot get a text value from a numeric formula cell非法参数异常
  3. javax.crypto.BadPaddingException: Given final block not properly padded 解决方法
  4. Java同步关键字的C#版本?
  5. 做{...}而(0) - 有什么好处? [重复]
  6. 在暂存区域中显示文件中的git diff [复制]
  7. AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?
  8. win11打开应用被管理员阻止怎么办 window11管理员已阻止你运行此应用的解决方法
  9. 日期格式转换,正则匹配后转换;指定时间增加天数加转格式;js时间转换格式
  10. 什么舱位_海运出口中FOB条款是什么意思?