小技巧

  1. 我们要算一个点集中所有点到另一个点集中所有点的一些量的时候,可以建立一个超级源点和超级汇点,从多->多变成单->单

  2. 整体二分的时候,操作要可以撤销,才能保证复杂度,每一层到左边区间的过程中先撤销掉当前所有操作

  3. 整体二分的时候,不能当没有询问就返回,要把操作做完询问处理完才能返回

  4. 数形结合,题目中的式子像一个几何上的公式的时候,可以数形结合

  5. 对于某些涉及区间操作的问题的时候,可以考虑差分然后变成单点的问题

  6. 分块暴力,当所有修改对询问的影响都可以 \(O(1)\) 计算的时候,可以分块暴力艹过 \(1e5\) 的数据

  7. 考一棵树里面选了几个点,并且要有一个联通块包含这几个点的时候,我们可以考虑把点按照dfs序排序,然后联通块的最少边数就是 \(\frac {\sum dis(a_i,a_{i+1})} 2,(a_{n+1}=a_1)\)。

  8. 一种常见的dp状态是 \(dp[a][b][c][d]...\) 表示每种物品有几个,假如物品没有区别的时候,我们可以只考虑 \(a \le b \le c \dots\) 的状态,转移的时候也将数量排序再转移,可以大量减少状态数

  9. reverse特别慢,尽量不reverse

  10. char[] 求strlen特别慢,可以记录在变量里,不能反复求,尤其避免

    for(int i=0;i<strlen(s);i++)

    慢成狗。。。

  11. 线性基的小技巧:

    我们要维护 \([l,r]\) 的线性基的时候,可以记录下来线性基的 \(i\) 位对应的序号,然后按照序号顺序更新线性基,像下面这样写:

    int lb[40],at[40];	//线性基及编号
    for(int i=1;i<=n;i++){
    //枚举右端
    int x=nw[i],p=i;
    for(int j=30;j>=0 && x;j--){
    if(x&(1<<j)){
    if(lb[j]==0){lb[j]=x;at[j]=i;break;}
    else if(at[j]<p){swap(at[j],p);swap(lb[j],x);} //把原来的向下更新
    //因为如果两个同时拥有这一位,那么后来的肯定更优
    x^=(1<<j);
    }
    }
    for(int x=head[i];x;x=nxt[x]){
    //枚举右端点为i的查询,可以用邻接表存储
    for(int j=30;j>=0;j--){
    if(at[j]>=q[x].l) q[x].ans=min(q[x].ans,q[x]^lb[j]);
    }
    }
    }
  12. Meet in the middle 极好的想法,当数据范围恰好卡着你两倍左右让你过不去的时候,极有可能是Meet in the middle

  13. 预处理!!!预处理!!!预处理!!!

    好像数数题大部分都要预处理。。。

  14. 某一种dp要求你把所有的东西都消除,配对。。。之类的,可以考虑其中的某一个元素,这个元素一定会被消除,配对。。。然后可能能优化一下复杂度

  15. size把 \(O(n^3)\) 的 \(\text{dp}\) 优化成 \(O(n^2)\)

  16. 一个数与一群数一个个取 \(\gcd\) 只会有 \(\log\) 种不同的答案,因为每次要么不变,要么变成一半或者更少,然后可以优化一些题

  17. 搜索的时候为了不重复可以只搜索单调不降的序列

  18. 当题目要求必须选某一个元素或者必须不选某一个元素的时候,可以用前缀加后缀合并得到答案

  19. 对时间分治的时候注意撤销操作要从后向前做!!!

  20. 合并果子的模型非常常见,当贪心想不出来的时候可以试试看

小技巧(updating)的更多相关文章

  1. 【转载】PHP 开发者该知道的 5 个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  2. 50分钟学会Laravel 50个小技巧

    50分钟学会Laravel 50个小技巧 时间 2015-12-09 17:13:45  Yuansir-web菜鸟 原文  http://www.yuansir-web.com/2015/12/09 ...

  3. 5 个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  4. PHP 开发者该知道的5个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  5. 50分钟学会Laravel 50个小技巧(基于laravel5.2,仅供参考)

    转载请注明:转载自 Yuansir-web菜鸟 | LAMP学习笔记 本文链接地址: 50分钟学会Laravel 50个小技巧 原文链接:< 50 Laravel Tricks in 50 Mi ...

  6. PHP 开发者该知道的 5 个 Composer 小技巧

    From: https://segmentfault.com/a/1190000000355928 Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer P ...

  7. php composer 相关及版本约束等小技巧

    对于现代语言而言,包管理器基本上是标配.Java有Maven,Python有pip,Ruby有gem,Nodejs有npm.PHP的则是PEAR,不过PEAR坑不少: 依赖处理容易出问题 配置非常复杂 ...

  8. 「小技巧」使用Git从其他分支merge个别文件

    小明发现在实际项目开发过程中,总会遇到各种各样的情况,比如一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,分别开发. 项目背景 产品经理:我们本次开发三个功能 ...

  9. PHP开发者该知道的5个Composer小技巧

    Composer 是新一代的PHP依赖管理工具.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单 co ...

随机推荐

  1. ZOJ 3640 Help Me Escape:期望dp

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3640 题意: 有一个吸血鬼被困住了,他要逃跑... 他面前有n条 ...

  2. java中indexOf()

    Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str ...

  3. static语句块的执行时间

    package utfTest; public class Test01 { public static void main(String[] args) { //Person.show(); Sys ...

  4. spring的了解以及简单框架的搭建

    了解spring: Spring是一个开源的控制反转(Inversion of Controller)和面向切面(AOP)的框架,目的是为了简化开发. IOC(控制反转): public class ...

  5. storm源码剖析(2):storm的配置项

    storm的配置项,可以从backtype/storm/Config.java中找到所有配置项及其描述

  6. CF331B Cats Transport[斜率优化dp+贪心]

    luogu翻译 一些山距离起点有距离且不同,m只猫要到不同的山上去玩ti时间,有p个铲屎官人要去把所有猫接走,步行速度为1单位每秒,从1走到N座山不停下,必须在猫玩完后才可以把他带走.可以提前出发.问 ...

  7. Linux命令汇总(二)

    1.登录用户设置 新创建了一个用户,用useradd指令,但是发现通过终端无法登陆:  echo password | passwd --stdin username  或者  passwd --st ...

  8. .NETFramework-Timers:Timer

    ylbtech-.NETFramework-Timers:Timer 1.程序集 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b7 ...

  9. ambari2.1.1安装

    1       安装环境 系统:centos6.6 Ambari版本:2.1.1 安装指南:https://cwiki.apache.org/confluence/display/AMBARI/Ins ...

  10. [poj3140]Contestants Division树形dp

    题意:切掉树上的某条边,使分开的两棵树上各点的权值和差值最小. 与hdu2196不同的是,此题是点权,其他无太大差别,注意数据范围. 先求出每个节点的子树权值和,然后自底向上dp即可.取$\min ( ...