每日总结不能少!让自己的头脑好好清醒清醒,才不会犯那些所谓的低级错误!

Contest

A. ssoj3045 A 先生砍香蕉树

根据数据范围 \(m\le 1000,b\le 10000\),显然本题直接暴力枚举格点即可。没想到我为了优化代码推半天还推错了……

我最近做题有一个很主观的感知就是,我的复杂度估计很不准,数组大小估计也是。看来要好好反省一下。

DFS 遍历全图的复杂度是 \(O(m)\),DFS 枚举排列是 \(O(n!)\),DFS 枚举区间是 \(O(n^2)\),有单调性可以化为 \(O(n)\) 或 \(O(n\log n)\)。

BFS 复杂度与 DFS 差不多,主要是在栈空间上面的问题。

最短路 Floyd 复杂度 \(O(n^3)\),Dijkstra 复杂度 \(O(m\log m)\),SPFA 复杂度 \(O(nm)\),最小生成树 Kruskal \(O(m\log m)\)。

LCA 欧拉序上 ST 算法复杂度预处理 \(O(n\log n)\),每次询问 \(O(1)\)。

拓扑排序 \(O(n+m)\),强连通分量 Kosaraju \(O(n+m)\)(求后序遍历 dfn \(O(m)\),从 dfn 最大的顶点反向 DFS 为一个强连通分量;剩余点继续取 dfn 最大 DFS \(O(n)\))。

log 级别数据结构有 树状数组、线段树,并查集均摊 \(O(1)\)。线段树开 4 倍空间,常数大。

排序算法 \(O(n\log n)\)。

先背诵下来,再理解理解。

B. 草堆摆放 (restack)

FJ 买了一些干草堆,他想把这些干草堆分成 \(N\) 堆 (\(1\le N\le 100,000\)) 摆成一圈,其中第 \(i\) 堆有 \(B_i\) 数量的干草。不幸的是,负责运货的司机由于没有听清 FJ 的要求,只记住分成 \(N\) 堆摆成一圈这个要求,而每一堆的数量却是 \(A_i\) (\(1\le i\le N\))。当然 \(A_i\) 的总和肯定等于 \(B_i\) 的总和。FJ 可以通过移动干草来达到要求,即使得 \(A_i=B_i\),已知把一个干草移动 \(x\) 步需要消耗 \(x\) 数量的体力,相邻两个干草堆之间的步数为 1。请帮助 FJ 计算最少需要消耗多少体力才能完成任务。

与蓝书 P4 分金币同理。最终转化为求解中位数

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
#define ll long long int n, B[100005];
ll ans; int main() {
scanf("%d", &n);
for (int i=1, A; i<=n; ++i) scanf("%d%d", &A, &B[i]), B[i]+=B[i-1]-A;
sort(B+1, B+n+1);
for (int i=1, m=n+1>>1; i<=n; ++i) ans+=B[m]>B[i]?B[m]-B[i]:B[i]-B[m];
printf("%lld\n", ans);
return 0;
}

C. Elephants (slo)

对于一个 \(1-N\) 的排列 \(a\),每次你可以交换两个数 \(a_x\) 与 \(a_y\),代价为 \(m(a_x)+m(a_y)\)。若干次交换的代价为每次交换的代价之和。\(N\) 个 100 到 6500 的整数,按照某个顺序排列。现在要交换若干次,每次交换两个数的位置,使得变成目标顺序。 请问将 \(a\) 变为 \(b\) 所需的最小代价是多少。

D. 电路维修

目前想法是 Dijkstra 做最短路,但因为数据水 AC 了。实际上这么做是有问题的,因为一个节点可能被多次访问。

正解应该是在 deque 上做 BFS。维护双端队列,新入队的边如果边权为 0 加入队头,边权为 1 加入队尾。这样就没有什么问题了。

我真是疯了,数组开那么小还 debug 半天……

7 November in 614的更多相关文章

  1. 8 November in 614

    我开始看心灵鸡汤了-- 每当在书中读及那些卑微的努力,都觉得感动且受震撼.也许每个人在发出属于自己的光芒之前,都经历了无数的煎熬,漫长的黑夜,无尽的孤独,甚至不断的嘲讽和否定,但好在那些踮脚的少年,最 ...

  2. 6 November in 614

    Contest A. greet map,完了. B. gift map,完了. C. [Usaco2008 Nov Gold] 安慰奶牛 最小生成树.新边权设为原边权的两倍,再加上两端点的点权.完了 ...

  3. 5 November in 614

    Contest A. ssoj2964 交错的士兵 \(n\) 个数的排列,从左到右依次为 1, 2, -, \(n\).\(n\) 次操作,对于第 \(i\) 次操作,从左到右分成很多段,每段 \( ...

  4. [POJ1765]November Rain

    [POJ1765]November Rain 试题描述 Contemporary buildings can have very complicated roofs. If we take a ver ...

  5. We will be discontinuing the Nitrous Development Platform and Cloud IDE on November 14th, 2016.

    我表示我很难过 Nitrous We will be discontinuing the Nitrous Development Platform and Cloud IDE on November ...

  6. TIOBE Index for November 2015(转载)

    原文地址:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html November Headline: Java once a ...

  7. 日常英语---七、[Updated November 14 at 4:10 PM PST] Scheduled Game Update - November 14, 2018(n.标准)

    日常英语---七.[Updated November 14 at 4:10 PM PST] Scheduled Game Update - November 14, 2018(n.标准) 一.总结 一 ...

  8. Multi-Cloud & Kubernetes: Cloud Academy November 2018 Data Report

    https://cloudacademy.com/research/multi-cloud-kubernetes-devops-cloud-academy-data-report-nov-18/ No ...

  9. ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbilisi, November 24, 2010

    ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbil ...

随机推荐

  1. iview 表格 某一列中设置radio

    在iview 表格 某一列中设置radio,说白了还是要在render中添加,方法为: { title: '业务参数设置', // key: 'pyCode', align: 'center', re ...

  2. 简单入门爬斗鱼颜值区妹子照片 v1.1

    这是个比较简单的入门爬虫.基于python3. urllib,urllib2,python3中用urllib.request代替,使用方法基本一致. #python3 import urllib.re ...

  3. postman的下载和使用

    postman的下载 官网:https://www.getpostman.com/downloads/ 创建账号或者用谷歌浏览器账号登录 登录之后,进行接口测试,这里请求百度为例,然后点击send,就 ...

  4. Colourful Rectangle【扫描线】

    题目链接 很明显的可以发现是一个扫描线的问题,但是怎么处理区域呢,发现只有三种颜色,也就是最多也就是7种状态,那么我们可以进行一个状态压缩即可. 但是,在向上pushup的时候,存在我们要以子树的状态 ...

  5. [LeetCode] 260. Single Number III(位操作)

    传送门 Description Given an array of numbers nums, in which exactly two elements appear only once and a ...

  6. java Semaphore信号灯

    Semaphore实现的功能就类似2个公用电话,假如有10个人要打电话:那么只能2个人占有电话,8个需要等待.当2个人中 的任何一个人让开后,其中等待的另外8个人中又有一个人可以使用了等待的8个人中可 ...

  7. c.vim

    放在 /usr/share/vim/vim80/syntax/c.vim 最后: syn match cFunctions "\<[a-zA-Z_][a-zA-Z_0-9]*\> ...

  8. 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)

    微信.QQ.新浪微博等第三方登录,你想知道的都在这了(上):https://www.jianshu.com/p/133d84042483 微信.QQ.新浪微博等第三方登录,你想知道的都在这了(下):h ...

  9. android环境问题

    1.android studio bundle和android studio ide区别 android studio bundle和android studio ide区别 准确的说是这三种: 最开 ...

  10. KVM操作命令

    1.查看KVM虚拟机配置文件 Kvm虚机创建 例子 /home/work/kvm-host一下操作目录 qemu-img create -f qcow2 test-Ws.qcow2 10G Test- ...