
集训
丶聂小白
这个作者很懒,什么都没留下…
展开
-
HDU-2577 How to Type DP
字符输入问题,刚开始没有考虑到shift+字符输入和当前大小写锁定状态相反状态字符只需要两步的问题。状态转移方程:dp1[i]表示输入完第i个字符后为大写状态需要的步数 dp2[i]表示输入完第i个字符后为小写状态所需要的步数如果第i个字符为小写:dp1[i]=min(dp1[i-1]+2,dp2[i-1]+2);dp2[i]=min(dp1[i-1]+2,dp2[i-1]+1);原创 2014-10-19 18:05:36 · 735 阅读 · 0 评论 -
POJ-1947 Rebuilding Roads 树形DP
树形DP的第一题吧,前几道都是根据树形结构求解。给出N个结点,N-1条边,建立一棵原创 2014-08-15 16:08:58 · 529 阅读 · 0 评论 -
HDU-4705 树形DP
C++能过,G++会爆栈,+了扩栈头文件也是这样#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include using namespace std;const int maxn=110000;struct Edge{原创 2014-08-28 15:46:59 · 457 阅读 · 0 评论 -
UVA-6436 The Busiest City 树形DFS求解
给出n个顶点,n-1条边,对于每一个顶点来说每有一条路径经过,繁荣度+1,求最大繁荣度。经过的含义就是这条路径使用了跟这个顶点相连的边中的的两条,任意组合都可以,所以要找出每个顶点相连的边延伸出去有多少种情况。从第一个顶点开始建树,对于第i个节点有sum[i]个子节点,因此dp[i]=sum[i]*(n-1-sum[i]),再加上节点的n棵子树的节点数乘积/2。#include #i原创 2014-08-15 10:18:14 · 919 阅读 · 0 评论 -
HDU-4647 Another Graph Game 贪心
将边权拆成两半加到它所关联的两个点的点权中即可。因为当两个人分别选择不同的点时,这一权值将互相抵消。然后排序从最优开始取。#include #include #include #include #include #include #include #include #define LL long longusing namespace std;const int maxn=原创 2014-09-10 21:45:13 · 725 阅读 · 0 评论 -
POJ-1655 Balancing Act 树的重心
对于树上的节点,它的值等于去掉它后生成的森林里面节点最多的n原创 2014-08-15 10:26:29 · 641 阅读 · 1 评论 -
ZOJ-3581 A Simple Test 模拟连连看
n*m的矩阵,其中有k个格子是有图案的,q个询问,如果每次询问的两个格子上都有图案,且可以通过最多变相两次到达(路上不能有其他有图案的格子),这两个格子的图案并得到两分,否则-1分。其实仔细想想就是连连看的游戏模式,比赛中觉得搜索太暴力会T没敢尝试,结果其实暴力写法也才80ms就过了。直接暴力模拟能不能满足条件就可以了。#include #include #include #in原创 2014-09-20 19:22:12 · 862 阅读 · 0 评论 -
UVA 6440 Emergency Handling 队列
一家医院比较繁忙,病人需要排队,病人有个病重程度原创 2014-08-11 21:27:06 · 663 阅读 · 0 评论 -
ZOJ-3811 Untrusted Patrol DFS 2014牡丹江网络赛C题
n个点,m条双向边,k个传感器。首先判断l原创 2014-09-07 20:00:36 · 1562 阅读 · 0 评论 -
HDU-4972 篮球赛比分
包含不合法数据也就算了。。题意不清楚也就算了。。篮球还有平局也算是很屌了。。。#include #include #include #include #include #include using namespace std;int a[1100000];int n;long long sum;int main(){ int t; int k=1; int flag原创 2014-08-21 20:16:22 · 804 阅读 · 0 评论 -
UVALive 6432 Influence 搜索 剪枝大法好
有n个人,有k个人可以选作传播疾病的母体,和病人直接接触的未被感染者会被感染,求出选择k个人中的哪个可以取得最多的病人数目,有相同的取编号小的那个。简单搜索,剪枝是如果一个同为母体的可以被其他母体直接或间接传染,这个母体就肯定不会是最多的那个,只会是一条分支。#include#include#include#include#include#include#include#in原创 2014-09-11 20:37:49 · 839 阅读 · 0 评论 -
ZOJ-3626 Treasure Hunt I 树形DP
很久很久以前有一个吸血鬼,每m天就会出现一次,把不在自己村子呆着的冒险家吃掉。有n个村子,n-1条道路,每个村子都有一定数量的财富,默认探险家刚一到达一个村子就能获得财富,给出探险家的出生的村子和多少天后吸血鬼出现。要求在吸血鬼出现之前赶回自己的村子,其实就是求一棵以k为根的各点权值之和最大且各边权加起来#include #include #include #include #in原创 2014-08-29 15:13:01 · 694 阅读 · 0 评论 -
ZOJ-3632 Watermelon Full of Water 线段树+DP
暑假生活开始了,夏日炎炎,集训队想要每天都吃到西瓜。已知n天,每天商店提供一个西瓜,不同的西瓜可以供集训队吃不同的天数,也有不同的价格,问集训队想保证每天都能吃到西瓜的最小花费。单个数100000,数组大小50000,因此需要用线段树优化。对于每天的西瓜,不取则从最小值数组里取出当前最小值,取的话则是找出最小值+当天的西瓜价格,并且线段树更新后k天的最小费用。dp[i][1]=min(原创 2014-08-29 14:55:26 · 831 阅读 · 0 评论 -
HDU-1025 Constructing Roads In JGShining's Kingdom O(nlogn)的最长上升子序列
模板题,唯一问题是当长度为1是,road是单数,不然road是复数roads。#include #include #include #include #include #include #include #include using namespace std;const int maxn=1021000;struct node{ int r; int b原创 2014-10-19 16:48:54 · 724 阅读 · 0 评论 -
HDU-4628 Pieces 状压DP
给出一行字符串,每次可以删去一个回文子串,子串可以是不连续的,因此用状压比较好模拟,求删掉整个字符串需要的最少步数。字符串的最大长度为16,因此不能逐行枚举状态,首先预处理出来所有的的回文子串,然后从第一步开始,依次状压第i步能到达的状态,如果能达到母串,跳出。还有初始化不要用图省事用memset。。不优越的姿势+函数导致T了数发。#include #include #includ原创 2014-10-15 22:17:28 · 1101 阅读 · 0 评论 -
HDU-4438 Hunters 期望 水
最近在复习概率DP求期望,顺便做一下。分成第二个人选择老虎或者狼的情况。然后s1+=q*(p)*(p)*(x+y)+q*p*(1-p)*x+q*(1-p)*p*y;//老虎 且第一个人选择老虎的期望s1+=(1-q)*x;//老虎 且第一个人选择狼的期望求一下取大的输出就好。原创 2014-10-03 22:47:49 · 7966 阅读 · 0 评论 -
Hdu-4632 Palindrome subsequence DP
给出一个字符串,问它有多少个回文字串原创 2014-10-09 22:39:01 · 546 阅读 · 0 评论 -
HDU-5045 Contest 状态压缩DP求期望
N个人,M道题,M个小时,每个人做一道题需要1个小时。给出一个N*M的矩阵代表每个人做对每道题的概率。然后要求在任何时刻,任意两个人的敲题时间差不能大于1,也就是说,m道题要分成多段长度为n的最优排列,n为10,2^10=1024 1024*1000 状压即可。#include #include #include #include #include #include #inclu原创 2014-09-27 20:04:40 · 997 阅读 · 0 评论 -
HDU-5053 the Sum of Cube 签到到到到~
纯签到题,A到B所有数字的立方的和。#include #include #include #include #include #define LL long longusing namespace std;LL a,b;LL sum;int main(){ int t; scanf("%d",&t); int cas=1; while(t--) { sum=0原创 2014-09-27 20:14:01 · 493 阅读 · 0 评论 -
HDU-4841 圆桌问题 STL模拟约瑟夫问题
中文题,题意一看就是卧槽,这不约瑟夫么,然后脑子一抽就用了链表写,然后果然T了,最后用Vector模拟的约瑟夫问题。#include #include #include #include #include #include #include #include #define LL __int64using namespace std;int n,m;vectorp;in原创 2014-09-03 22:28:41 · 1348 阅读 · 0 评论 -
HDU-4811 Ball 想法题
有三种颜色的气球,把它们排成一排放在桌子上。第一个气球不得分。把一个气球放在末尾得到的分数是它以前气球的颜色种数把一个气球放在中间得到的分数是它前边气球的颜色种数+后边的气球颜色种数。求最高得分。从条件可以推出当两边各放置一个同颜色气球时,此气球提供的分数已经饱和,所以先算出来都不到2的个数(分类是在太麻烦,不如手算),然后算出来有多少个气球是不需要考虑的*一个气球的得分,相加原创 2014-09-02 15:50:18 · 1159 阅读 · 0 评论 -
HDU-5001 Walk 2014年鞍山网络赛E题
依次枚举每个不能走过的点,DP递推下一步情况,求出所有其他点的概率之和即为这个点不会被走过的概率。#include #include #include #include #include #include #include #include #include #define LL long long #define inf 1<<29using namespace std原创 2014-09-13 19:28:56 · 1193 阅读 · 0 评论 -
HDU-1498 50 years, 50 colors 最小点覆盖
给你一个n*n的矩阵,每一行有一个颜色,颜色是1-50原创 2014-08-09 21:30:08 · 485 阅读 · 0 评论 -
HDU-4974 水
只需要考虑最大值max最少要max次才能处理完,和(总和+1)/2qu原创 2014-08-21 20:16:25 · 553 阅读 · 0 评论 -
HDU-1507 Uncle Tom's Inherited Land* 二分图匹配
题目不仅要求输出最大匹配,还要输出任意一种最大匹配组,然后处理卡了原创 2014-08-09 17:11:20 · 457 阅读 · 0 评论 -
POJ-3036 Honeycomb Walk 简单DP
蜂巢每一格为正六边形结构,所以蜜蜂每次有6个方向可以走,原创 2014-08-04 19:50:52 · 840 阅读 · 0 评论 -
HDU--4786 Fibonacci Tree 生成树+贪心?
N个顶点,M条边,每条边可能为黑色或是白色( 0 or 1 ),问有没有可能用为斐波那契数的数目的白色边构成一棵生成树。所以需要删掉图中的环,根据每次删掉的边有一个白色边的上限和下限,判断一下中间有没有斐波那契数就可以了。实现方法是根据颜色排序,先放黑色边得到的是最小数目的白色边构成的生成树,先放白色边得到是最大数目的白色边构成的生成树。#include#include#include#原创 2014-08-04 10:02:16 · 963 阅读 · 0 评论 -
HDU--4788 Hard Disk Drive 水
很常识的一个问题,在硬盘制造中,厂家认为的比例是1:1000,原创 2014-08-04 10:07:47 · 546 阅读 · 0 评论 -
琦神教我学DP2---POJ-1185 炮兵布阵 状压DP
这道题目和前面的题目很像,不过条件g原创 2014-08-02 09:51:55 · 735 阅读 · 0 评论 -
琦神教我学DP———POJ-3254 Corn Fields 状压DP
状压DP很久之前就看了一下,但是当时我连普通DPdoumei原创 2014-08-01 21:49:31 · 699 阅读 · 0 评论 -
第三周组队训练赛-长沙现场赛解题报告
这场比赛开的是长沙的现场赛,感觉难度不是很高的样子。原创 2014-07-28 11:25:57 · 692 阅读 · 0 评论 -
The 2013 ACM/ICPC Asia Changchun Regional Contest题解
A题水题,不多说原创 2014-07-21 14:03:27 · 650 阅读 · 0 评论 -
被虐中成长——2014年多校训练赛第一场解题报告
妥妥的被虐,第一题其实就是猜出来原创 2014-07-22 19:23:22 · 678 阅读 · 0 评论 -
欢乐大逗比——记Codeforces Round #257 (Div. 2)
坐这一场前呢,RANK是1622,当时觉原创 2014-07-21 21:48:09 · 480 阅读 · 0 评论 -
HDU-4771 Stealing Harry Potter's Precious 状压DP+BFS
哈利波特假期回姨夫家的时候会把他的宝贝藏在地精银行,现在要偷他的宝贝,银行的房间分为可破坏与不可破坏两种,其实就是可到达与不可到达,然后给出哈利的k个宝贝放的位置,如果能全部拿到输出最小的步数,不能拿到则输出-1,用BFS搜索,最先搜到的肯定就是步数最小的,搜不到则输出-1.最近做的好多DP题都跟搜索有关系,看来还是多方面都得会才行啊。#include #include #include原创 2014-08-06 16:50:10 · 776 阅读 · 0 评论 -
HDU-4901 The Romantic Hero DP
首先吐槽一下这个神一样的题目前缀,特么一直在强调萝莉控是闹哪样啊喂原创 2014-07-31 20:54:31 · 523 阅读 · 0 评论 -
HDU-4902 Nice boat 线段树成端更新
线段树成端更新,据说暴力也能过原创 2014-07-31 22:42:42 · 470 阅读 · 0 评论 -
POJ-1325 && HDU-1150 Machine Schedule 二分图匹配
#include #include #include #include #include #include #include using namespace std;int map[111][111];int n,m,k;int link[111];int visit[111];bool dfs(int k)//寻找从k出发的可增广路 { int i,j; for(i原创 2014-08-09 14:29:40 · 507 阅读 · 0 评论 -
HDU-1068 &&POJ-1466 Girls and Boys 简单二分图匹配
给出n个人和他们的感情关系,要求求出一个集合中不存在h原创 2014-08-08 22:16:00 · 539 阅读 · 0 评论 -
HDU-4619 Warm up 2 二分图匹配。
题目大意:给你两种纸牌 ,一种水平放置共有n张 ,一种竖直放置共有m张。水平放置的纸牌占据点(x, y)和(x + 1 , y) , 竖直放置的纸牌占据点(x , y) 和 (x , y + 1)。水平放置的牌之间不会重叠,竖直放置的牌之间也不会重叠,但是水平放置的牌和竖直放置的牌之间可能会重叠。让你拿走一些牌,使剩下的牌之间不会重叠并且数量最多,输出剩余的最大牌数。原创 2014-09-06 00:46:11 · 450 阅读 · 0 评论