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]了,这就变成问题①了。

CCPC2016杭州现场赛的更多相关文章

  1. 2013杭州现场赛B题-Rabbit Kingdom

    杭州现场赛的题.BFS+DFS #include <iostream> #include<cstdio> #include<cstring> #define inf ...

  2. CCPC2016合肥现场赛

    A(hdu5961):(BFS) 题意:给两个有向图=P=(V,E​P​​)和Q=(V,E​Q​​), 满足1.E​P​​与E​Q​​没有交:2.E​P​​∪E​Q​​是竞赛图.判断P与Q是否同时为传 ...

  3. hdu 4779 Tower Defense 2013杭州现场赛

    /** 题意: 有两种塔,重塔,轻塔.每种塔,能攻击他所在的一行和他所在的一列, 轻塔不 能被攻击,而重塔可以被至多一个塔攻击,也就是说重塔只能被重塔攻击.在一个n*m 的矩阵中,最少放一个塔,可放多 ...

  4. hdu4453 Looploop 2012年杭州现场赛 Splay

    题意:维护一个圈,实现六个功能,给某位置起的一些数增加某值,反转某一段数,添加删除某些数,移动当前所指的位置, 简单的splay,把圈拆成链,对于每种操作,处理一下. #define inf 0x3f ...

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

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4771 题目意思:'@'  表示的是起点,'#' 表示的是障碍物不能通过,'.'  表示的是路能通过的: ...

  6. 2013 ACMICPC 杭州现场赛 I题

    #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #in ...

  7. 2013 Asia acm Hangzhou Regional Contest 杭州现场赛

     B Stealing Harry Potter's Precious 题目大意:给定一个n*m的地图,某些点可以走,某些点可以走某些点不可以走,给定一个起点,又给出了k个点k<=4,要求从起点 ...

  8. 2016CCPC杭州现场赛 B-Bomb /// tarjan缩点

    题目大意: 给定n个爆破点的信息 x y r w 表示爆破点位置为 (x,y) 爆破范围是以位置为圆心 半径为r的圆 引爆这个点的代价为w 引爆某个点时 其他位置在该爆破范围内的爆破点也会被引爆 求引 ...

  9. 2013ACM/ICPC亚洲区南京站现场赛---Poor Warehouse Keeper(贪心)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4803 Problem Description Jenny is a warehouse keeper. ...

随机推荐

  1. $.extend()的深拷贝和浅拷贝详细讲解

    版权声明:作者原创,转载请注明出处! 语法:jQuery.extend( [deep ], target, object1 [, objectN ] ) 描述: 将两个或更多对象的内容合并到第一个对象 ...

  2. SharePoint 2013 搜索高级配置(Search Scope)

    前言:SharePoint 2013集成了Fast Search,而后在配置上与2010及之前版本都有一些区别,如果需要开启搜索的文档,请参考我之前写的博客,博客地址附后.下面,我们开始了解下,Sha ...

  3. ArcSDE10.2.2使用SQL操作ST_Geometry时报ORA-28579

    给esri中国的客服打电话被告知,是一直存在这个bug,arcgis10.2对应的oracle数据库版本要用11.2.0.3及以上的: 1.数据库升级可以用打补丁的当方式. 2.直接重装,我这里是直接 ...

  4. CSS3选择器——基本选择器

    CSS是一种用于屏幕上渲染html,xml等一种语言,CSS主要是在相应的元素中应用样式,来渲染相对应用的元素,那么这样我们选择相应的元素就很重要了,如何选择对应的元素,此时就需要我们所说的选择器.选 ...

  5. DIY一个高大上带提醒的计时器,简单实用,你还在等什么

    小编心语:锵锵锵!小编我又来了!昨天发了一篇比较实用的<Python聊天室>,鉴于反响还不错,SO ,小编也想给大家多分享点有用的干货,让大家边学边用.好了,闲话不多说,今天要给各位看官们 ...

  6. CLR线程概览(下)

    作者:施懿民链接:https://zhuanlan.zhihu.com/p/20866017来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 同步: 托管代码 托管代码可 ...

  7. SQL Server 使用OPENROWSET访问ORACLE遇到的各种坑总结

    在SQL Server中使用OPENROWSET访问ORACLE数据库时,你可能会遇到各种坑,下面一一梳理一下你会遇到的一些坑. 1:数据库没有开启"Ad Hoc Distributed Q ...

  8. 内存管理内幕mallco及free函数实现

    原文:https://www.ibm.com/developerworks/cn/linux/l-memory/ 为什么必须管理内存 内存管理是计算机编程最为基本的领域之一.在很多脚本语言中,您不必担 ...

  9. eclipse svn账号更换

    在eclipse下用 svn的时候,我们习惯将用户名和密码保存.前天公司将svn的账号全部更换了,这时原来的eclipse保存的svn账号密码就失效了.那怎么样才能切换账号了,eclipse svn插 ...

  10. 理解Docker(2):Docker 镜像

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...