自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 UESTC 1225 Game Rooms

题意:一栋n层的楼,每层有ai个打乒乓球的人和bi个游泳的人,每层可以建一个游泳池或乒乓球室,每人人到其喜欢项目场所的最短距离的总和为m,求最小的m(且至少要有一个游泳池和一个乒乓球室) 题解:依然是用动态规划去求解 dp[i][j] 中j为0表示在这i层建游泳池,且j+1层不能建游泳池,这样dp[i][0]可以由dp[j][1]推过来(j #include #include #include

2015-10-30 21:56:20 640

原创 第一届CCPC题解

A:水题 http://blog.csdn.net/weilehuozhe/article/details/49508891 B: C: D:dp http://blog.csdn.net/weilehuozhe/article/details/49508997 E:dfs  http://blog.csdn.net/weilehuozhe/article/details/495091

2015-10-30 12:12:59 1150

原创 UESTC 1226 Huatuo's Medicine

题意:有n个药需要放在m个瓶子中,且瓶子要连成一链,且链的头和尾无法区分出,求最小的m 题解:当有5种药时 按照A-B-C-D-E-D-C-B-A这样构造即可 所以答案2*n-1 #include #include #include #include #include #include #include #include #include #include #define scnaf scan

2015-10-30 12:12:15 341

原创 UESTC 1221 Ancient Go

题意:大概是围棋规则,但不包含“眼”之类的概念,即当一群连通的同色棋子(4个方向连通)的外层没有空的了, 这些棋子就被吃掉了。先问下'X棋这方,能否落子后吃掉‘’O'棋 题解:对每个未访问过的'O'棋进行4个方向的dfs,如果继续访问'O'棋,就标记后进行同样的操作,如果是空地,就把空地的坐标存入set,dfs结束后如果只发现一个空地就说明当前可以吃'O'棋。 读入的时候不知道有什么问题 sc

2015-10-30 12:08:08 476

原创 UESTC 1218 Pick The Sticks

题意:给出一个长度为L的棍状容器  和n个长度为li价值为vi的棍状物品 物品只能直接放在容器上 且只要重心在容器上即可(包含边界)求能放置的物品的最大的总价值 题解:很容易看出是动态规划的题目,而此题有一个重要的结论,你所选的物品中,可以将长度最长的两个置于两边,这样外延的长度尽量长,肯定是最优的,所以我们先按长度对物品从小到大排序,dp[i][j]表示到第i个木棍总长度为j时能获得的最大价值

2015-10-30 11:57:51 439

原创 UESTC 1215 Secrete Master Plan

题意:给出一个2*2的矩阵中有4个数 问能不能通过旋转得到另一个矩阵 题解:分别编写一个旋转和判断的函数,对原矩阵旋转4次分别判断即可 #include #include #include #include #include #include #include #include #include #include #define scnaf scanf #define cahr char #d

2015-10-30 11:42:55 468

原创 HDU 5226 Tom and matrix

此题的关键在于一个神奇的结论 即一列中组合数的和 可以转化为两个数的差 (具体公式去看官方题解吧 公式太难打)   而这个神奇的结论还是很好证明的 按照C(n,m)的定义等于n!/m!/(n-m)! 2边展开 就可以得出相等 而比赛时我也没有想出来 (>﹏<)  (感觉很难想到) 有了这个结论 再套一个卢卡斯的版子即可 (n,m是10的5次方 感觉不用卢卡斯也一样的) #include #i

2015-10-10 18:07:25 381

原创 HDU 5225 Tom and permutation

对于连续的排列直接的逆序 打表或者首先就可以看出规律 设f(n)表示n个数时 每个排列所对应的逆序数 显然有 f(1)=1, f(2)=0,1 , f(3)=0,1,1,2,2,3 , f(4)= 0,1,1,2,2,3,   1,2,2,3,3,4 , 2,3,3,4,4,5 , 3,4,4,5,5,6 即为f(n-1)的所有的数为一组 扩展成n组 第一组为f(n-1) 后面每组比前一组中

2015-10-10 17:59:20 332

原创 HDU 5224 Tom and paper

当矩形面积固定时 长和宽越接近 周长越短 所以我们可以从根号S(S为面积) 开始向下枚举 可以被S整除即退出即可 #include #include #include #include #include #include #include #include #include #include #define scnaf scanf #define cahr char #define bug pu

2015-10-10 17:28:40 346

原创 HDU 5230 ZCC loves hacking

一道非常好的dp题 首先可以看出c是没什么用的 用l和r减去c得到真正的l,r即可  注意到l,r的范围 是小于n,c的 即真正的l,r是小于n的 而所求的问题转换成 1到n的数中 不重复的选取 有多少种选取方案的总和位于l,r之间 从而可以转化为 求有多少种选取方案的总和小于等于x 设为f(x) 答案即为 f(r)-f(l-1)   而我们先可以求出有多少种选取方案的总和等于x 设为 g(

2015-10-10 17:04:41 557

原创 HDU 5229 ZCC loves strings

一道还不错的博弈题 首先可以看出 先手在两串字符数的和为奇数时必胜 因为只要不断的取其中较短的串的最后一个字符即可  所以在两串字符数的和为偶数时应该是必败的 但因为有条件2的存在 所以当两串相同时 先手也是必胜的 特殊计算下即可  所以先手的获胜方案数 为奇数字符的串个数乘以偶数字符的串个数 (即2串和为奇数的方案数)在加上 串i有a[i]个的C(a[i],2) (a[i]的值可以排序后扫一

2015-10-10 16:42:29 373

原创 HDU 5228 ZCC loves straight flush

这题模拟起来没有想到很好的方法 我的模拟方法是先枚举花色 然后用visit数组记录 最后滑动窗口统计个数 时间复杂度和编写难度上都还可以 #include #include #include #include #include #include #include #include #include #include #define scnaf scanf #define cahr char #d

2015-10-10 16:30:12 273

原创 POJ 2653 Pick-up sticks

题意:给出一些线段 后面的线段覆盖掉前面的线段(如果这两个线段相交) 求最后还在上面的线段标号 判断两个线段是否相交 可以判断一个线段 的两个端点是否位于 另一个线段的两侧 如果两个线段互相都满足这个条件即可  还有一种特殊状况 2个线段所在直线重合 此时判断线段的端点是否在另一条线段上即可 friend bool is_seg_seg(line l1,line l2){

2015-10-09 10:53:23 291

原创 题解(国庆专场)

A:http://blog.csdn.net/weilehuozhe/article/details/48938773 B:http://blog.csdn.net/weilehuozhe/article/details/48939319 C:http://blog.csdn.net/weilehuozhe/article/details/48941299 D:http://blog

2015-10-07 15:37:14 262

原创 UVA 208 Firetruck

题意:给出一个图  求从点1到点n的方案数(每个点只能走一次) 暴力dfs会T 可以加一个剪枝 如果当前dfs跑的点与n不连通 就可以不再跑了 所以用bfs 或并查集 把和n连通的点都标记上即可 #include #include #include #include #include #include #include #include #include #include #include #

2015-10-07 15:36:45 247

原创 UVA 1213 Sum of Different Primes

题意:求一个数n由k个不同的素数组成的方案数 还是dp 首先需要把素数筛出来  然后要注意一点dp的顺序 每个素数只能用一次 所以要把每个素数作为第一维 枚举第i个素数是否选取 来更新 dp[j][k] 中j表示已经选取的素数个数  k表示这j个数的总和 dp存的是方案数 #include #include #include #include #include #include #incl

2015-10-07 15:32:07 461

原创 UVA 10285 Longest Run on a Snowboard

题意:给出一些山的高度 求最长路径长度 每次只能往上下左右4个方向 且只能从高往低处走 比较简单的dp 把高度作为第一维 每次找到高度为i的所有点 向4个方向判断能否更新即可 (可以事先把某个高度对应的点的坐标存起来 这样会更快) #include #include #include #include #include #include #include #include #include #

2015-10-07 15:22:35 270

原创 UVA 1610 Party Games

题意:给出偶数个字符串 找到一个长度最短且字典序最小的字符串 使得有一半的串小于等于它 其他的大于它 不难发现所求的字符串 只与最中间的两个串有关 设为a,b(a=a并且c 而且我们要优先满足c最短 所以可以从左到右按位操作 对于第i位 当a[i]==b[i]时 c[i]只能等于a[i]  当a[i]  但这样会有一些问题 (还是在a[i] 首先 如果当前是a的最后一个数了 c

2015-10-07 15:15:27 302

原创 UVA 1152 4 Values whose Sum is 0

题意:给出4堆数 每堆n个数 每堆取一个数 求4个数总和为0 的方案数 把前两堆合到一起 后两堆合到一起 然后二分找 这样复杂度为n²log(n²) 是有可能T的 用map就很可能T 用数组或vec先存再排序 (而且不要把相同的数合到一起) 再二分搜索一下即可 也可以手写一个哈希 这样就是n² 可以稳过 #include #include #include #include #includ

2015-10-07 14:50:59 231

原创 UVA 439 Knight Moves

题意:8*8的棋盘中 求一个马从起点跳到终点所需的最小步数 暴力bfs即可  如果直接手算出规律 由于存在边界的问题 所以可能会有一些bug(比如同样是有一个角相邻 在地图中央的33 到44只需要2步 而边界的11 到22 却需要4步) #include #include #include #include #include #include #include #include #includ

2015-10-07 02:06:06 320

原创 UVA 839 Not so Mobile

题意:判断一些嵌套的力矩不等的天平是否平衡 只是一个dfs即可 读入的时候就递归着读入 然后同时判断 不知道为什么没有人做(>﹏<) 每一个天平的平衡即左右的重量分别乘以力矩 向上返回的重量即左右2端的重量和 trick点是天平力矩为0时 直接输出NO #include #include #include #include #include #include #include #inclu

2015-10-07 01:50:02 307

原创 UVA 12333 Revenge of Fibonacci

题意:给你一个40 位的数 判断时在斐波那契数列的第一个数的前缀 没仔细看数据范围 原以为只是大数版题就放在C结果做的时候才发现数据量很大 还要加个字典树 套这两个版子就没什么问题了 预先用大数跑出斐波那契数列的结果 存在字典树里 询问的时候查询即可 #include #include #include #include #include #include #include #include

2015-10-07 01:38:29 1570

原创 UVA 1589 Xiangqi

题意:黑方场上只有一个将 红方可能有车马炮帅4种棋 且现在已经将军 判断是否将死 因为棋盘的范围很小 所以可以用一个二维的字符数组模拟棋盘 然后大体可以分2种模拟方法 一种是判断将周围的4个位置是否可行 即由将去找车马炮帅 另一种讲每一个红方棋子的攻击范围标记 再判断4个位置 即由车马炮帅去找将 其实都差不多 下面代码才用前一种 对于某个位置是否可行 车炮帅可以一起判断 马要单独判断一下蹩

2015-10-07 00:47:01 441

原创 UVA 401 Palindromes

题意:给出一个串 判断是不是回文串和镜像串 镜像即按题中所述A->A S->2 这样 按题中所说的暴力判断即可 镜像判断的时候用个map映射即可  #include #include #include #include #include #include #include #include #include #include #define scnaf scanf #define cahr c

2015-10-06 23:49:23 313

原创 HDU 5209 Magic Toy Brick

很好的一道dp题 首先可以推算出一行之中放n个最大m时的方案数为C(n+m-1,n) 设dp[n]表示n行的方案数 首先第一行 的第一个数应该是最小的 第一行的其他数是任意的 所以这一行取j个数时 的方案为C(n-1,j) * dp[n-j-1] (下面一行遵从同意的规则) 当时做的时候脑子抽了 写了个dfs以为是n²的 结果T了 调试了半天 才发那是n!的(>﹏<)   #include

2015-10-03 02:12:26 361

原创 HDU 5207 Greatest Greatest Common Divisor

题意:求一些数之中两个数的最大公约数 比赛时的做法是:对每一个数求因子 标记每一个因子 如果该因子已经被标记过 则说明存在2个数的公因子是它 与答案取优即可 复杂度O(n根号n)(写的不优美可能会T) 另外一种做法是:对每个数进行标记,枚举某一答案的若干倍,如果当前的答案有2个倍数被标记过,则可以取到 复杂度O(nln(n)) #include #include #include #incl

2015-10-03 01:03:31 327

原创 HDU 5206 Four Inages Strategy

题意:给出三维空间中的4个点 判断能否组成正方形 比赛时直接套的三维几何的版子 判断3个向量中 是否有两个相等 垂直 且和为第三个向量  其实可以算出他们两两之间距离 排个序 看小的四个是否相等(4个边) 和剩下两条对角线相等 且长度为根号2倍的边长 (防止误差可以一直用平方来计算) #include #include #include #include #include #include

2015-10-03 00:44:16 276

原创 HDU 5204 Rikka with sequence

首先有一个规律(可以通过变化方式推理出来)每一次询问的时候前面的第i个数(询问的前一个为第一个)在数列中的第一次出现的位置为 1 而最后我们可以得出公式num[i]=(r+1)//2-l/2 而l和r随着i的减小 每次除2 而对于每次的查询 只要想起跑三十几次 (l和r就缩减为0了) 即再前面第一次出现的位置 已经超过R的范围 #include #include #include #in

2015-10-02 20:00:57 361

原创 HDU 5203 Rikka with wood sticks

题目要求分成4段 即只能砍3刀 而令其中的3部分不含有不牢固的小木棍 所以所有的不牢固的小木棍都应该唯一同一段 而为了优先满足3段和长度最大 应该使包含不牢固的小木棍的那一段长度尽量短 即应该沿着不牢固的小木棍中编号最大和最小的2个小木棍切2刀 剩下的2段或1段 在计算个数 2段(设为a,b)分成3条边时 只能把较长的a边切开,切开后的2部分a1和a2和大于b了 只要在满足 abs(a1-a2)

2015-10-02 19:47:55 325

原创 HDU 5202 Rikka with string

做法:所有的问号都赋成'a' 如果是回文 把最后一个问号(且不能奇数长度串在正中间) 改成'b'即可 如果没法改 就是非法状态 至于原因,首先 上述做法显然满足得到的答案是字典序最小的  其次如果改动前是回文串了 那改动最后一个问号(非中间)后就肯定不是回文串了。 而对于在最中间的问号肯定取'a' 取别的字母对其他位置的取值是没有影响的 而结果却会增大。 #include #include

2015-10-02 19:32:00 356 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除