- 博客(60)
- 收藏
- 关注
原创 UVa 658It's not a Bug, it's a Feature! -- 最短路dijkstra
题目链接:点击打开链接题意:补丁在修正bug时,有时会产生新的bug。现在有n(n思路:因为n很小,考虑状压dp。每个状态由其前驱状态得到。但是只能用dp的思想,因为状态多次转移之后可能回到之前的状态。正确的方法是将每一个二进制状态看做一个点,求图上的最短路。点最多有1AC代码#include #include #include #include #include #
2015-09-09 16:34:25 387
原创 HDU 4991 Ordered Subsequence -- DP+树状数组
题意:求数组中长度为k的上升子序列的个数。思路:dp。 dp[i][j] 表示以第i个为结尾,长度为j的上升子序列的个数。则 dp[i][j] = sigma(dp[k][j-1]) (a[k]#include#include#include#include#include#include#include#include#include#include#define l
2015-08-19 12:42:13 384
原创 zoj 1610 Count the Colors --线段树成段更新
题目链接点击打开链接题意:对一条直线成段染色,求最后能看到的颜色以及每一种颜色的不连续段数。思路:本题有两个难点。第一:线段树的编号都是点,比如更新1-3更新1 2 3这三个点。二对于本题,更新1-3则表示更新1-2 和2-3这两个单位1的区间。解决的方法是把第二种更新方式改为第一种。只需要左端点值加1即可。第二,如何统计同颜色不连续区间个数。如果每遇到一个颜色就对该颜色加1的话,很显然递
2015-08-01 15:17:29 401
原创 ZOJ 3469 Food Delivery -- 区间dp
题目链接点击打开链接题意:一条直线上有n个人点外卖。每个人都有一个坐标xi。每个人都有一个不开心值,每过一秒不开心值增加一倍,初始值都为0。外卖小哥初始在点x上,以速度v-1给这直线上的n个人送外卖。求不开心值总和最少多少。思路:区间dp。这是一类当前决策对未来有影响的dp,方法是将当前决策对未来的影响直接加到当前。dp[i][j][0]表示区间i到j且停在i点的最小值
2015-07-21 09:44:11 312
原创 HDU0174 Doing Homework ——状压dp
题目链接点击打开链接题意:现在有n个作业,每个作业有其名称、耗时、提交期限。超过提交期限一天扣1分。问怎么排序能使扣的分数最少。(n思路:一道入门的状态压缩dp。看到nAC代码#include #include #include #include #include #include #include #include using namespace std;con
2015-06-26 21:24:22 373
原创 Codeforces 527 C Glass Carving----瞎搞
题目链接点击打开链接题意:对一个w*h的矩形,横向或者纵向切割(切割点是整数)。每次输入横向或纵向切割的点,求每一次切割后面积最大的块。思路:切割点把边长分成若干块,我们只需知道每一次切割后最长的横向段和纵向段,结果就是两者之积。最容易想到的,就是每次扫一遍求两个最大值,然而由于数据量太大n*n的方法肯定会T。改进一下方法,用set存所有的段的结果,而set查询最大值的时间复杂度是log(
2015-05-11 18:16:05 912
原创 Codeforces525E -- Anya and Cubes 中途相遇法
题意:有n个a[0]--a[n-1]。定义一种操作:可以使数a[i]变成它的阶乘,例如5通过操作变成120。对于每一个数,可以选它,或者选它的阶乘,或者不选。要求通过 至多k次操作,使得被选的数的和为s。求方案总个数。思路:n不超过25,时间限制是2000ms。首先可以肯定是用dfs暴力搜索,但是n又有些大,单纯暴力必然超时。这时就要用到中途相遇法,并将中间结果存下来。AC代码:#in
2015-05-05 14:54:31 426
原创 codeforces 60C Mushroom Strife ——DFS
题目链接:点击打开链接题意:给定一些点,每个点有一个值,相连的点之间有gcd和lcm两个信息。求这些点权值。思路:相连的点可以看做一个联通分量,判断是否存在一种合法的情况,需保证每一个联通分量都合法。当分量中某一个点权值确定了,由于给定gcd和lcm这两个信息,因此整个联通分量就确定了。因此我们可以以某一点为该联通分量的起点,枚举该点可以取得的值,每一次进行一次dfs深搜即可。AC代码
2015-04-23 19:56:24 640
原创 Codeforces 57 C Array ——组合数学
题目链接点击打开链接题意:一个包含n个元素的数列,元素值只能是1到n中的任意一个数。一个数列优美当且仅当满足以下两个条件之一:1.数列单调不增;2数列单调不减。现在输入一个数n,问符合要求的优美数列有多少个。例如,n==2时,1,1;1,2;2,1;2,2共4个。思路:输入一个数n,现在有n个位置,每个位置填1到n中的一个数,并且这些数单调不增或单调不减。首先,c(n,k)从n个数
2015-04-09 18:33:33 526
原创 Codeforces 54C First Digit Law —— 概率DP
题目链接点击打开链接题意: 给定n个位置,对于每一个位置,输入区[l,r], 要求从区间中选一个数放入对应位置上(每个数被选取的概率相同,为1/(r-l+1)),求这n个位置k%个数开头是1的概率。例如第二组样例中(9,11)符合条件的是10,11。思路:设p[i]为第i个位置开头为1的数被选中的概率,dp[i][j]表示前i个位置有j个符合数字开头为1的条件。则转移方程为
2015-03-26 14:41:01 456
原创 Codeforces Round #283 (Div. 2) 解题报告
传送门:点击打开链接A题:给定一个长度为n的序列。给定操作:删除除首尾元素以外的任何一个元素。得到一个新的序列。新序列相邻两个元素间的差。求每一次差的最大值的最小值样例已经给的很清楚了。思路:数据量很小,直接暴力模拟,时间复杂度n*n。当然这道题方法很多。AC代码#include #define debug puts("xxxxxxx")#define pi (acos(-1.
2014-12-18 22:00:58 413
原创 CUGBACM Codeforces Tranning 8解题报告
比赛链接点击打开链接A题 题意 给定一个由左右小括弧组成的串,通过删除某些括弧,求剩下的括弧能够获得的最长合法长度。思路:类似求合法括弧的题目,之前做过一些,也有了一些经验。首先,从左往右扫,两个变量rest和cnt ,遇到“(” ,rest++,否则rest--,cnt++。若rest开始的时候没读清题意,以为是老题WA了。。。AC代码#include#include
2014-11-27 20:30:04 385
原创 Fire Game——BFS
Fire GameTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionFat brother and Maze are playing a kind of special (hentai) game on an
2014-07-23 19:42:24 593
原创 POJ 1146 ID Codes——STL next_permutation
熟悉一下next_permutation ,水题AC代码#include#include#include#include#include#include#includeusing namespace std;int main(){ string a; while(cin>>a && a!="#") { if(next_per
2014-07-21 19:57:30 373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人