CCPC2016杭州现场赛

A(hdu5933):(贪心)

  题意:长度为n的数组: a1, a2,?, 每次操作要么可以merge两个相邻的数为一个, 值为两个数的和; 要么可以把一个数分裂成两个, 两个数的和为原数. 用最少的操作把数组变换成长度为K且所有数值相等的数组, 无解输出-1

  分析:注意到是只能合并相邻的数,那么从前往后,对于一段数,它们的和是所期望平均值的倍数时候,那么就将它们单独操作计算次数。

B(hdu5934):(强连通分量)

  题意:二维平面上有 n 个炸弹,每个炸弹有个引爆的代价和爆炸半径,问至少花费多少代价才能引爆所有炸弹。

  分析:将炸弹视为点,炸弹引爆信息视为边,那么就很容易想到答案就是把所有入度=0的点炸掉,但注意是可能有环的,所以要先强连通分量缩点,缩点的权值用其内部权值最小的点的权值代替,对于这个新的DAG图,把所有入度为0的点炸掉。

C(hdu5935):(贪心)

  题意:有个老司机在开车, 开车过程中车的速度是不减的. 交警记录了这个老司机在n个时间点的位置, 但是时间位置. 已知老司机从位置0出发, 记录的时间点都是整数, 问经过第n个位置最少需要的时间.

  分析:对于最后一段,时间肯定是1,再向前模拟,注意v要用分数表示才精确。

D(hdu5936):(meet in middle)

  题意:f(y,K)=∑(z in every digits of y)z^K,x=f(y,K)-y,给定x和K,求y的个数

  分析:按道理来说,y越大,那么f(y,K)-y的值应该是越小的,所以y不会丧心病狂的大,经过计算发现y最多只是十位数。

       直接枚举y是肯定TLE,注意到题目的限制条件有两个,一个是y,一个是f(y,K),而f(y,K)只和每个数位上的数有关,所以对于一共十位数,我们可以枚举五位,十位数就是从这五位数中选两个拼接而成的。

       具体的,枚举0~99999,计算f[i]-i存入数组中排序,再枚举0~99999作为高五位,如果要存在,那就希望数组中存在x-(f[i]-i*100000),存在多少就加多少个数,这就是个二分查找的过程。

     O(10^6*log(10^6))

       注意一个细节,就是高5位和低5位都是0的情况会算两次,所以如果0符合条件,那么结果要减去一次。

  注意:1、不要用map、set,特别慢

       2、不要用lower_bound(),upper_bound(),特别慢

       3、手写lower,upper要细心,upper不要改变含义,就按照upper_bound()的定义写

     4、手写二分的时候要在前面加入-inf,后面加入inf 

     4、本题要注意是0~99999而不是1~99999,同时两个0要答案减一 

E(hdu5937):(dfs+剪枝)

  题意: 有1~9 9个数字各有a1, a2, …, a9个, 有无穷多的+和=. 问只用这些数字, 最多能组成多少个不同的等式x+y=z, 其中x,y,z∈[1,9].

  分析:一共有36个不同的等式,1个数字i,最多用17-i个,所以可以提前把多余的数量删掉,并且特判ans=36的情况

       对于接下来的,再进行搜索,按照等式的取舍来搜,注意加上最优性剪枝和可行性剪枝

F(hdu5938):(预处理)

  题意:给出一个长度最大是20的数字串, 你要把数字串划分成5段, 依次填入’+’, ’-’, ’*’, ’/’, 问能得到的最大结果.

  分析:预处理一段只有加号的最大结果、只有乘号的最小结果、有乘号有除号的最小结果,再枚举减号的位置,得出最大结果。

  注意:1、预处理的时候注意从哪一位到哪一位,不然会溢出

     2、long long类型的inf=1e18,而不能赋值1e19……

K(hdu5943):(二分图匹配)

  题意:n 个人编号为 [s+1,s+n],有 n 个座位编号为 [1,n],编号为 i 的人只能坐到编号为它的约数的座位,问每个人是否都有位置坐

  分析:①若[1,n]和[s+1,s+n]不相交

        注意到如果[s+1,s+n]中有两个或两个以上的素数,那么就不可解了,因为它们都只能放在1的位置,而只有一个质数的情况下,区间的长度肯定不会很长,那么就是一个二分图匹配问题了。

     ②若[1,n]和[s+1,s+n]相交,对于编号为[s+1,n]的这些人,他们坐在[s+1,n]上是最优的,因为如果他们坐在自己约数的座位上,那么就让后面的数坐上座位的概率减小(比如 3 9 12,如果9不坐在9上而坐在3上,那么12就没地方坐了)

      于是区间匹配就成了[1,s]和[n+1,n+s]了,这就变成问题①了。

时间: 2024-11-10 08:13:06

CCPC2016杭州现场赛的相关文章

HDU 4821 杭州现场赛:每个片段字符串哈希比较

I - String Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4821 Description Given a string S and two integers L and M, we consider a substring of S as "recoverable" if and only if (i) I

hdu 4771 Stealing Harry Potter's Precious (2013亚洲区杭州现场赛)(搜索 bfs + dfs) 带权值的路径

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4771 题目意思:'@'  表示的是起点,'#' 表示的是障碍物不能通过,'.'  表示的是路能通过的: 目的:让你从 '@' 点出发,然后每个点只能走一次,求出最小的距离: 解题思路:先用 bfs 求解出任意两点之间的距离,用 ans[i][j],表示点 i 到点  j 的距离: 然后用 dfs 递归求出从起点经过所有点的距离中,比较出最小的: AC代码: 1 #include<iostream>

hdu 4779 Tower Defense 2013杭州现场赛

1 /** 2 题意: 有两种塔,重塔,轻塔.每种塔,能攻击他所在的一行和他所在的一列, 轻塔不 能被攻击,而重塔可以被至多一个塔攻击,也就是说重塔只能被重塔攻击.在一个n*m 的矩阵中,最少放一个塔,可放多个 3 问,给定p个重塔,q个轻塔,问有多少种放法.. 4 5 思路: 1. 一行中有两个重塔, 6 2. 一列中有两个重塔 7 3. 在该行及在该行塔所在的列只有一个塔,重塔或者轻塔. 8 对以上三种情况 9 挨个处理: 10 1. 设有i行有两个重塔,j列有两个重塔,则一共占 i+2*j

CCPC2016合肥现场赛

A(hdu5961):(BFS) 题意:给两个有向图=P=(V,E?P??)和Q=(V,E?Q??), 满足1.E?P??与E?Q??没有交:2.E?P??∪E?Q??是竞赛图.判断P与Q是否同时为传递的.一个有向图G是传递的,当且仅当对任意三个不同的顶点a,b,c,若有一条边从a到b且有一条边从b到c,则同样有一条边从a到c. 分析:首先的想法是从所有入度为0的点开始BFS,如果有某个点第一次被更新的时间>=2就肯定不行,然而就发现反例了,后来一想,从每个点开始BFS判断就行了 C(hdu59

13杭州区域赛现场赛Rabbit Kingdom(树状数组+离线)

题意:给你一个长度数列,再给你m个询问(一个区间),问你在这个区间里面有多少个数与其他的数都互质. 解题思路:你看这种类型的题目都可以肯定这是 离线+树状数组(线段树).主要就是他的更新信息.这里我的处理是先把1-200000(每个数的范围)数里面所有的质因子求出来.然后从后往前遍历数组.会出现以下几种情况 1.a[k]的质因子在后面出现过而[更新标记] 和[被更新标记] 都为假 2.a[k]的质因子在后面出现过的那个位置 I   [更新标记]为 真 . 3.a[k]的质因子在后面出现过且那个位

【解题报告】牡丹江现场赛之ABDIK ZOJ 3819 3820 3822 3827 3829

那天在机房做的同步赛,比现场赛要慢了一小时开始,直播那边已经可以看到榜了,所以上来就知道A和I是水题,当时机房电脑出了点问题,就慢了好几分钟,12分钟才A掉第一题... A.Average Score 题目大意:给定A序列和B序列,长度分别是n和m,告诉你A序列中的n-1个数和B序列的m个数,求剩下的那个A序列中的数满足:将这个数从A序列移除,然后添加到B序列,使得A序列的平均值变小,B序列的平均值变大.求这个数的取值范围(是整数) 解题思路:求出A序列剩下的n-1个数的平均值,和B序列的平均值

HDUOJ-------2493Timer(数学 2008北京现场赛H题)

Timer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 445    Accepted Submission(s): 90 Problem Description Recently, some archaeologists discovered an ancient relic on a small island in the Pa

HDU 4791 Alice&#39;s Print Service (2013长沙现场赛,二分)

Alice's Print Service Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1855    Accepted Submission(s): 454 Problem Description Alice is providing print service, while the pricing doesn't seem to

HDU 4791 Alice&#39;s Print Service(2013长沙区域赛现场赛A题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791 解题报告:打印店提供打印纸张服务,需要收取费用,输入格式是s1 p1 s2 p2 s3 p3...表示打印区间s1到s2张纸的单价是p1,打印区间s2 到s3的单价是p2....最后是sn到无穷大的单价是pn,让你求打印k张纸的总费用最少是多少?有m次查询. 因为s1*p1 > s2 * p2 > s3*p3......,很显然,加入k所在的那个区间是第x个区间,那么最低费用要么是k * p