导航

11 2015 档案

摘要:题意:给出n组数据,每组数据有一个类型。0代表至少选择一个,1代表至多选择一个,2代表任意选择。给出背包容量。如果背包不能满足最基本的要求输出-1。思路:背包问题变相考察~当0的时候初始化为-INF,然后就能保证至少选择一个。当1或2的时候初始化上一层的值,然后1和2稍微有点区别,1只能从上一层得到... 阅读全文

posted @ 2015-11-27 12:18 tun~ 阅读(191) 评论(0) 推荐(0)

摘要:题意:给你n个点和n-1条边组成的一棵树,按顺序给出数的每一条边。询问m次,每次给出一个x求x除以从点a到点b所有边的权值和的乘积,还有修改,给出边的编号,修改某条边的权值。思路:树链剖分,用点的编号建立线段树,当然一开始要记录第几条边的两个端点各是什么,便于修改的时候进行查询。重点是用深度较大的那... 阅读全文

posted @ 2015-11-27 12:13 tun~ 阅读(599) 评论(0) 推荐(0)

摘要:思路:裸裸的树链剖分....树链剖分就是把一棵树分成若干重链和轻链...然后保证形成的线段树上每条链是连续存储的。然后这样就能用线段树进行维护了。但是每次一定要保证是在同一条链里边....思路就是这样....感觉最近越来越淡定了,题目卡住了也不怎么着急了,慢慢看代码...嗯...有点像学习的感觉了.... 阅读全文

posted @ 2015-11-21 21:53 tun~ 阅读(176) 评论(0) 推荐(0)

摘要:题意:给了很多星星的坐标,星星的特征值是不比他自己本身高而且不在它右边的星星数。给定的输入数据是按照y升序排序的,y相同的情况下按照x排列,x和y都是介于0和32000之间的整数。每个坐标最多有一个星星。思路:这题给的输入数据很祥和,间接提示思路了。用x作为树状数组的区间,然后按照输入的顺序不断查找... 阅读全文

posted @ 2015-11-14 21:45 tun~ 阅读(119) 评论(0) 推荐(0)

摘要:题意:每头牛有编号,他们乱序排成一排,每头牛只知道前边比自己序号小的有几位。思路:递推,最后一只牛的编号是确定的,然后不断进行区间更新,直到找到某个空位前方恰好有n个空位。这题跟某道排队的题思路是一样的,可以线段树,认为树状数组的解法在时间复杂度上比线段树多了一个logN因为树状数组只能在logn的... 阅读全文

posted @ 2015-11-13 19:47 tun~ 阅读(439) 评论(0) 推荐(0)

摘要:题意:给出序列,找出每个连续长度为k的子序列的最大值和最小值。思路:裸单调队列...单调队列这东西用的真的非常局限,大概只能用到这种情景中==简单说一下维护:添加元素,为了保持单调性,排除队尾所有比要添加的元素大或者小的元素。出队,出队之前要保证要出队的元素在当前范围内,如果不在先把不在的都出队。这... 阅读全文

posted @ 2015-11-07 11:25 tun~ 阅读(215) 评论(0) 推荐(0)

摘要:题意:给n个点,给出矩阵代表i到j单向边的距离。要求,不介意访问每个点的次数,要求访问完每个点,使得路程总和最小。思路:由于不介意访问每个点的次数,所以可以先进行FLOYD求出任意两个点之间的最短路,然后就是DP。同样的,1代表有访问过,0代表没访问过。dp[s][j]代表访问状态为s的情况下最终到... 阅读全文

posted @ 2015-11-06 21:32 tun~ 阅读(782) 评论(0) 推荐(0)

摘要:题意:给n个点m条无向边。要求每个点最多走两次,要访问所有的点给出要求路线中边的权值总和最小。思路:三进制状态压缩DP,0代表走了0次,1,2类推。第一次弄三进制状态压缩DP,感觉重点是对数据的预处理,利用数组分解各个位数,从而达到类似二进制的目的。然后就是状态的表示,dp[s][i]表示状态s时到... 阅读全文

posted @ 2015-11-06 21:24 tun~ 阅读(137) 评论(0) 推荐(0)

摘要:题意:有n种化学物质,他们彼此反应会有一种消失并释放出能量。给出矩阵,第i行j列代表i和j反应j消失释放的能量。求最大释放多少能量。思路:状态压缩DP,我是这么想的。利用二进制0代表该物质还存在,1代表不存在。那么一共有2^(n)种状态,每个状态都视为从上一个状态发生一次反应少了一种物质。枚举可能少... 阅读全文

posted @ 2015-11-06 21:19 tun~ 阅读(252) 评论(0) 推荐(0)

摘要:题意:给一块n*m的田地,1代表肥沃,0代表贫瘠。现在要求在肥沃的土地上种草,要求任何两个草都不能相邻。问一共有多少种种草的方法。种0棵草也是其中的一种方法。n和m都不大于12.思路:状态压缩DP,dp[i][j]代表在第i行状态j一共有多少种可能的种植方法。j是二进制转化而来的状态,0代表不种草,... 阅读全文

posted @ 2015-11-06 19:30 tun~ 阅读(141) 评论(0) 推荐(0)

摘要:题意:给n个数将其分成连续的m组,使得这些组的数加和最大,组与组之间可以空数。/*dp[i][j]表示将前j个数分成i个组最大值状态转移方程是:dp[i][j]=max(dp[i-1][0...j-1],dp[i][j-1])+tmp[j];内存的优化是用滚动数组记录dp[i][...]和dp[i-... 阅读全文

posted @ 2015-11-02 15:55 tun~ 阅读(132) 评论(0) 推荐(0)