- 博客(10)
- 收藏
- 关注
原创 Codeforces Round #327 (Div. 1) D. Top Secret Task(DP)
大致题意: 题意很简单,就是n个数,求最多两两交换S次,使前K个数的和最小 n 思路: 显然s >= n * n / 2 时总能把前K小的数交换到前K个位置 而且交换不交叉时是最优的,比如Ak 与 A(k+x)交换, 接下来Ak-1只能A(k+y)(y > x) 交换,总是最优的 这样每次交换的代价是j - i,再增加一维可行位置保证不交叉,这样就是S容量的背包问题 //p
2015-10-30 11:05:46 666
原创 Light OJ 1061 - N Queen Again(搜索+状压DP)
大致题意: 8*8的棋盘,已知八个皇后的位置,问最少移动多少次,可以让八个皇后不互相攻击。(同行,同列,同斜线视为互相攻击) 思路: 易知八皇后不攻击一共有92种,dfs出这92种,然后对于每种状压求出最少需要移动多少次 复杂度: O( 92 * n * 2 ^ n) (n = 8) //package ok; import java.math.*; import java.io
2015-10-30 10:53:14 690
原创 UVA10253 - Series-Parallel Networks(树形DP+(组合) _ 建模很好)(好题)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1194 大致题意: 给你n条边,问你恰好用n条边,能构成几种串并联网络。(串联的各个部分可以任意调换,并联在一起的各个部分也可以任意调换,若通过调换可得,则二者视为等效) 思路:一个n条边的整
2015-10-25 00:14:08 792
原创 Single Round Match 671 Round 1 - Division II, Level Three(状压DP)(略难)
题目链接:http://community.topcoder.com/stat?c=problem_statement&pm=14070&rd=16551 大致题意: 描述太麻烦。摘取关键题意: When pushing the trees, Limak always follows a few rules: He only pushes trees in two dire
2015-10-24 23:49:01 406
原创 Uva 11361 Investigating Div-Sum Property(数位DP)
大致题意: 问在区间[a,b]内有多少个整数满足被K整除,且这个数的每一位上数字的和也被K整除 a , b 思路: 显然在int范围内,每位数字之和不超过9*10 ,所以K大于100就直接返回0, 其余用数位dp算 数位dp的大致思路都一样,先dp出dp[len][x][y] 表示len位长的数有多少个数modK等于x,每一位和modK等于y 然后求DP(int num) 表
2015-10-22 11:50:33 450
原创 LightOJ 1021 - Painful Bases(状压DP)
大致题意:求 ’0‘ ~ ‘F' 的排序,组成16进制数,能被K整除,求排列的方案数 思路: 基础状压,注意从低位到高位DP,因为全是F在最高位时对于的十六进制会爆long long //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #inc
2015-10-22 00:22:09 484
原创 Light OJ 1013 - Love Calculator(LCS+ 计方案数)
大致题意:有a,b字符串,求最短的字符串使a,b均为它的子序列,求这种最短字符串有多少个 思路: 显然最短长度就是|a|+|b|- LCS 同样dp两遍,第一遍求LCS,第二遍在LCS的转以上dp出方案数: 如果a[i] == b[i] , cnt[i][j] += cnt[i-1][j-1]; 否则,有两种策略,a[i]是末尾最后一个字符,或b[j]是最后一个字符 复杂度O(n^2)
2015-10-21 21:10:43 755
原创 LA 4123 Glenbow Museum (组合数)
题意:对于一个边平行于坐标轴的多边形,我们可以用一个由R和O组成的序列来描述它:从某个顶点开始按照逆时针顺序走,碰到一个90°的内角记R;碰到一个270°的内角记O。这样的序列称为角度序列。定义星型多边形为多边形中存在一个点可以看到多边形边界上每一个点。现在给定正整数n,求有多少个长度为L的角度序列至少可以对应一个星型多边形。其中多边形的每条边长任意。 思路:星型多边形值在多边形内存在一点,能看
2015-10-20 22:23:15 758
原创 UVA 11174 - Stand in a Line(组合递归计数)
大致题意:有n个人,给出m对关系,(a,b) 表示b是a的父亲, 现在有多少种方案使他们排成一列,使得没有人排在他们父亲前面 (对1e9+7取模) 思路: 可见,给出了一颗森林,对于每棵树,树根显然必须排第一位,然后对每棵子树用组合统计位置方案树,再乘以子树的子问题方案数。 到这里问题就算解决了,当然可以用dfs进行这种dp,但不妨人工迭代一下,每棵树的答案是 ans = (cnt(r
2015-10-13 23:12:26 464
原创 Codeforces 584E. Anton and Ira (排列好题)
大致题意: n 输出解 思路: 可以先把s映射成1...n的规则排列,然后再把p序列对应映射成新的序列(这样便于分析和思考,得到的问题与原问题等价) 先对每个元素考虑,设pi和pj交换产生的代价是 2 * | i - j | (即pi和pj各产生了|i-j|的代价) 对于p中的每个pi,最终都是需要把i位置的pi换到pi位置,至少需要的代价| i - pi | , 然而答案就是最小的代价
2015-10-09 20:49:49 1007
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人