一直找不到好的题去做...于是想到了srm...回来补题...QAQ

从srm01补起

A

题意:n个数,排成一列,刚开始都是1,如果左右相等就可以合并,问最后的数列长什么样。

思路:比赛的时候直接敲了个 一直log2 直到为0,觉得应该是100的...于是炸到了90.

比完赛懒得调就没去理,回来补的时候发现是p的trunc有点问题哇...以后都打成trunc(x+0.000001) 出错率会低一点QAQ

 var n,s:longint;
begin
read(n);
repeat
s:=trunc(ln(n)/ln()+0.00001);
write(s+,' ');
n:=n-( << s);
until n=;
end.

A

B

题意:有m升油,n个数,可以用一升油数某一个数+1,再给一个mx 然后给 v1 v2 求 (v1*达到mx的数的个数+v2*整个数列的最小值)最大化。

思路:比赛的时候想的是拿部分分,然后弄不出来,然后觉得是二分,敲不出来,就拿到了10分。

补题的时候有一个新的思路,枚举达到mx的数的个数,然后再二分最小值。

然后check就贪心的弄,设达到mx的数的个数为num,二分到的最小值为x

然后贪心算需要的油就可以check了,但是这样要多一个n的复杂度。

显然o(n^2 logn)的复杂度是要tle的。

想想优化,由于贪心,所以已经先把原数列排序了,辣么就满足的单调性。

满足单调性就可以二分

所以求排序后的数列的前缀和,然后在二分里在套一个二分就好了

复杂度 o(n logn ^2)

 var a,b,c,sum:array[..]of int64;
n,mx,v1,v2:int64;
have,z:int64;
l,r,m:longint;
ans,num,ansmin,ansnum:int64;
i,j:longint;
procedure qs(l,r:longint);
var i,j,t,m:longint;
begin
i:=l;
j:=r;
m:=a[(l+r)>>];
repeat
while a[i]>m do inc(i);
while a[j]<m do dec(j);
if i<=j then
begin
t:=a[i];a[i]:=a[j];a[j]:=t;
t:=c[i];c[i]:=c[j];c[j]:=t;
inc(i);
dec(j);
end;
until i>j;
if l<j then qs(l,j);
if i<r then qs(i,r);
end;
function find(x:longint):longint;
var l,r,m:longint;
begin
l:=num+;
r:=n;
while l<=r do
begin
m:=(l+r) >>;
if a[m]>x then l:=m+ else r:=m-;
end;
exit(l);
end;
function check(x:longint):boolean;
var i:longint;
need:int64;
begin
need:=z;
i:=find(x);
inc(need,x*(n-i+)-(sum[n]-sum[i-]));
if need>have then exit(false) else exit(true);
end;
begin
read(n,mx,v1,v2,have);
for i:= to n do
begin
read(a[i]);
b[i]:=a[i];
c[i]:=i;
end;
qs(,n);
for i:= to n do
sum[i]:=sum[i-]+a[i];
for i:= to n do
begin
num:=i;
z:=mx*num-sum[num];
if z>=have then continue;
l:=;
r:=mx;
while l<r do
begin
m:=(l+r+)>>;
if check(m) then l:=m else r:=m-;
end;
if ans<num*v1+l*v2 then
begin
ans:=num*v1+l*v2;
ansnum:=num;
ansmin:=l;
end;
end;
writeln(ans);
for i:= to ansnum do
b[c[i]]:=mx;
for i:= to n do
if b[i]<ansmin then write(ansmin,' ')else write(b[i],' ');
writeln;
end.

B

C

题意:一个数列,支持两个操作,1.L~R 加上x   2.查询当前序列,如果从任意一个位置开始,两边严格递减的最大长度。

思路:比赛的时候完全没思路,暴力都不会打。

补题觉得可以线段树弄,每次维护区间最大长度,左边的值,右边的值,然后乱维护....QAQ

结果不会打。所以pass掉吧...

Contest-hunter 暑假送温暖 SRM01的更多相关文章

  1. Contest-hunter 暑假送温暖 SRM08

    01-07都没写...然后突然来写貌似有点突兀啊...不管了,难得前排记录一下... 吐槽一下赛制...不得不说很强... cf 套oi...很创新...不过还是兹磁ACM或者CF A-1 数据才2& ...

  2. bzoj4693: 雪中送温暖

    Description 每年的1月10日是温暖节,在这一天,化身出题人的C_SUNSHINE将会给OIer们送温暖.OIer们只要在门口放上一个 仙人掌,就能在早上的某个时刻听到门外传来一声:“开门, ...

  3. Contest Hunter 3101

    题目 Contest Hunter 3101 阶乘分解 原题传送门 题目分析 这里介绍一个本蒟蒻自己\(yy\)出来的方法. 我们发现,对于某一个单个的整数\(n\),若\(n\)能被某一个数\(x\ ...

  4. 【Contest Hunter【弱省胡策】Round #0-Flower Dance】组合数学+DP

    题目链接: http://ch.ezoj.tk/contest/%E3%80%90%E5%BC%B1%E7%9C%81%E8%83%A1%E7%AD%96%E3%80%91Round%20%230/F ...

  5. [Contest Hunter#17-C] 舞动的夜晚

    [题目链接] http://contest-hunter.org:83/contest/CH%20Round%20%2317/%E8%88%9E%E5%8A%A8%E7%9A%84%E5%A4%9C% ...

  6. Contest Hunter Round #70 - 连续两大交易事件杯省选模拟赛

    orz lydrainbowcat [Problem A]「艦これ市」70万幕后交易事件 排序机器=-=.重要的是相同的处理. 我们可以从小到大添加数字,然后维护一个位置的序列.每一种相等的数字都在一 ...

  7. 某次送温暖考试的 c题

    题目大意: 给定n个点的无根树,树上每个点都有一个非负的点权. 树上的路径的价值定义为树上路径的点权和-树上路径的点权最大值; 现在给定一个参数P询问有多少条路径的价值是P的倍数(注意单点也算路径,路 ...

  8. 【Contest Hunter 5302】金字塔

    [原题链接]传送门 [题解思路] 1.考虑如何将序列与树相对应,想到类似dfs序和欧拉序,同一个子树对应序列连续 2.暴力分子树过于复杂,考虑简化(划重点: 若当前区间为[l,r],考虑第一颗子树所在 ...

  9. Contest Hunter 1401 兔子与兔子

    1401 兔子与兔子 0x10「基本数据结构」例题 描述 很久很久以前,森林里住着一群兔子.有一天,兔子们想要研究自己的 DNA 序列.我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DN ...

随机推荐

  1. .then()

    reference: http://www.html-js.com/article/Study-JavaScript-jQuery-Deferred-and-promise-every-day 1.5 ...

  2. cocos2d-X学习之主要类介绍:动作:CCAction

    引用自:http://www.cnblogs.com/lhming/archive/2012/07/01/2572238.html 类继承图: 主要函数: virtual CCObject *  co ...

  3. x-webkit-speech语音搜索

    如果你没看到语音图标说明你的浏览器不支持x-webkit-speech 换个chrome你会发现输入框的右侧出现语音小图标.

  4. pug.compile() will compile the Pug source code into a JavaScript function that takes a data object (called “locals”) as an argument.

    Getting Started – Pug https://pugjs.org/api/getting-started.html GitHub - Tencent/wepy: 小程序组件化开发框架 h ...

  5. 综合: Java 对象初始化过程

    class Fu { Fu() { show(); } void show() { System.out.println("xixi"); } } class Zi extends ...

  6. 洛谷 P2233 [HNOI]公交车线路

    洛谷 不知道大家做没做过传球游戏,这一题和传球游戏的转移方程几乎一样. 令\(A\)为\(1\)点,\(E\)为\(5\)点,那么\(f[i][j]\)代表第i步走到j的方案数. \[f[i][j]= ...

  7. Python(数据库之数据类型)

    一.创建表的完整语法 #[]内的可有可无,即创建表时字段名和类型是必须填写的,宽度与约束条件是可选择填写的. create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[ ...

  8. CodeForces 215B Olympic Medal(数学啊)

    题目链接:http://codeforces.com/problemset/problem/215/B Description The World Programming Olympics Medal ...

  9. RT-Thread内核之线程调度(三)

    4.RT-Thread中的线程? /**  * 线程结构  */ struct rt_thread {     /** Object对象 */     char        name[RT_NAME ...

  10. Struts 2 类型转换器 输入校验 拦截器

    Struts 2中内建了字符串类型和常见类型之间相互转换的转换器,能满足大多数转换需求,但不能完成字符串和User对象之间的转换. OGNL项目中有一个TypeConvert接口,这个接口是自定义类型 ...