第一题:队爷的新书

题意简述:给定n个闭区间,求出一个数p使它与包含它的区间数的积最大,输出这个积。

分析:使用一个差分数组g,每个区间[l,r],l位置加1,r+1的位置减1,从前往后统计,得到对于每个p包含它的区间个数,相乘看是否最大。由于数据较大,需要离散化。

program book;
var
a,f,g:array[..]of qword;
l,r:array[..]of longint;
n,i,m:longint; sum,ans:qword;
procedure qsort(l,h:longint);
var i,j,t:longint; m:qword;
begin i:=l; j:=h;
m:=a[(i+j) div ];
repeat
while a[i]<m do inc(i);
while m<a[j] do dec(j);
if i<=j then
begin t:=a[i]; a[i]:=a[j]; a[j]:=t;
inc(i); dec(j); end; until i>j;
if i<h then qsort(i,h); if j>l then qsort(l,j); end;
function make(x:longint):longint;
var l,r,mid,ans:longint;
begin
l:=;r:=m;
while l<=r do
begin
mid:=(l+r) div ;
if f[mid]<=x then begin ans:=mid; l:=mid+; end
else begin r:=mid-; end;
end;
exit(ans);
end;
procedure fry;
var i:longint;
begin
qsort(,*n);
a[]:=-;
for i:= to *n do
if a[i]<>a[i-] then begin inc(m); f[m]:=a[i]; end;
for i:= to n do
begin
l[i]:=make(l[i]); r[i]:=make(r[i]);
end;
end;
begin
assign(input,'book.in');
reset(input);
assign(output,'book.out');
rewrite(output);
readln(n); m:=;
for i:= to n do
begin
readln(l[i],r[i]);
a[i*-]:=l[i]; a[i*]:=r[i];
end;
fry;
for i:= to n do
begin
inc(g[l[i]]); dec(g[r[i]+]);
end;
for i:= to m do
begin
inc(sum,g[i]);
if sum*f[i]>ans then ans:=sum*f[i];
end;
writeln(ans);
close(input); close(output);
end.

第三题:队爷的讲学计划

题意简述:一个有向图中,队爷从1点出发在图上行走,每条边都要一个花费,如果他走到某个点i,则该店对应强连通分量中的边权全部变为1,前往经过这些边只要花费1的代价且只需要交1次钱(由于你第一次到达i的时候交了钱,所依回到i的那个边不需要交钱),求队爷能走过的最多的点数,和在满足点数最多情况下最少花费。
分析:由于要求经过的点最多,显然对于每个强连通分量,队爷肯定要前往其包含的所有点,这样显然最优。
所以我们将每个强连通分量各自缩为一个点,这个点对应的点数(题目中的城市数)为分量包含的总点数,由于每条路只交一次钱,故代价为点数-1。
这样我们得到一个DAG,在图上跑SPFA求出最长路并同时求出对应最小花费即可。
另外看清题目没有要求终点,则终点可以是每个点。 

CH Round #59 - OrzCC杯NOIP模拟赛day1的更多相关文章

  1. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  2. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  3. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  4. 【强联通分量缩点】【最长路】【spfa】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的讲学计划

    10分算法:对于城市网络为一条单向链的数据, 20分算法:对于n<=20的数据,暴力搜出所有的可能路径. 结合以上可以得到30分. 60分算法:分析题意可得使者会带着去的城市也就是这个城市所在强 ...

  5. 【离散化】【扫描线】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的新书

    //上图绿色扫描线右侧少画了一条扫描线. 很多区间把数轴分成了很多段,看哪个点的(区间覆盖数*该点权值)最大. 显然在某个区间的右端点的答案是最优的. 排序后 用扫描线从左到右扫描,维护每个点的覆盖数 ...

  6. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  7. CH Round #48 - Streaming #3 (NOIP模拟赛Day1)

    A.数三角形 题目:http://www.contesthunter.org/contest/CH%20Round%20%2348%20-%20Streaming%20%233%20(NOIP模拟赛D ...

  8. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)

    A.珠 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20(NOIP模拟赛Day1)/珠 题解:sb题, ...

  9. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告

    最近参加了很多CH上的比赛呢~Rating--了..题目各种跪烂.各种膜拜大神OTZZZ T1珠 描述 萌蛋有n颗珠子,每一颗珠子都写有一个数字.萌蛋把它们用线串成了环.我们称一个数字串是有趣的,当且 ...

随机推荐

  1. 【BZOJ4571】[SCOI2016] 美味(主席树)

    点此看题面 大致题意: 给你一个序列\(a\),然后每次询问\(max_{i=l}^r(a_i+x)\ xor\ b\). 大致思路 首先,我们要知道一个简单的性质:位运算时位与位之间是互不影响的. ...

  2. kafka 开机启动脚本

    /etc/init.d$ vi kafka-start-up.sh #!/bin/bash #export KAFKA_HOME=$PATH export KAFKA_HOME=/opt/Kafka/ ...

  3. MFC-[转]基于MFC的ActiveX控件开发

    作者:lidan | 出处:博客园 | 2012/3/13 16:10:34 | 阅读22次 ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在VC ...

  4. 数组逆序=全局内存版 VS 共享内存版

    全局内存版 #include <stdio.h> #include <assert.h> #include "cuda.h" #include " ...

  5. Mybatis自查询递归查找子

    先看一下数据库 主键id,名称product_code,父parent,和kind 设计菜单类 setter,getter Dao public interface ProductMapper { L ...

  6. SVN不显示状态图标

    1,输入win+R,输入regedit,调出注册表信息 2,按下Ctrl+F,在注册表里搜索“ShellIconOverlayIdentifiers” 3,将TortoiseAdded.Tortois ...

  7. Atlas 配置高可用

    keepalived安装 #下载keepalived ./configure --prefix=/usr/local Make && make install Atlas主安装keep ...

  8. JVM 内存分配和回收策略

    对象的内存分配,主要是在java堆上分配(有可能经过JIT编译后被拆为标量类型并间接地在栈上分配),如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配.少数情况下也是直接分配到老年代,分配规则不 ...

  9. 浅谈MapReduce工作机制

    1.MapTask工作机制 整个map阶段流程大体如上图所示.简单概述:input File通过getSplits被逻辑切分为多个split文件,通通过RecordReader(默认使用lineRec ...

  10. pandas库Series类型与基本操作

    pandas读取excel的类型是dataFrame,然后提取每一列是一个Series类型 Series类型包括index和values两部分 a = pd.Series({'a':1,'b':5}) ...