上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页
摘要: 几何模版题。三维凸包+多边形重心+点面距离。模版一拼就过了。 纯模版这种东西就不贴了。。。 阅读全文
posted @ 2012-09-10 22:37 Burn_E 阅读(150) 评论(0) 推荐(0)
摘要: 之前贪心的想法确实是错误的,比赛的时候数据太水了,过了也就没有想那么多了。如果误导了他人,实在是抱歉。 对于每个元素,最坏情况下它只能够到它后面的第9个数字,因为最坏情况下,它后面的四个数字能被它前面的四个数字消掉,这样它就能和原来是它后面的第9个元素相消了,于是我们可以用d[i][st]表示第i个数字,从i开始的10个数字的状态为st时是否可消。之后记忆化搜索即可。 状态转移比较简单,如果st的第1位为0,说明这一位已经被消掉,d[i][st]=dp(i+1,next(st))。如果第1为为1,向后连续找至多五个为1的位,比较是否和第一位数字相同,如果相同,就将st的这两位置为0,然... 阅读全文
posted @ 2012-09-10 22:31 Burn_E 阅读(793) 评论(5) 推荐(1)
摘要: 这么水的一道最短编辑距离DP,比赛的时候居然没有去做。。 很裸的最短编辑距离DP,就是要注意环的问题。因为如果直接copy两遍的话,有可能会将本来是同一个位置的字母使用两次。但是可以发现串的长度只有10,最大的编辑距离不会超过10,当原串长度>2*L时环就没有影响了,因为这时如果环中一个字母被使用两次,那最短编辑距离肯定已经大于L了。 我是长度小于20时暴力枚举,大于30时在原串后面copy原创的前20个字符。 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #de 阅读全文
posted @ 2012-09-10 22:25 Burn_E 阅读(915) 评论(5) 推荐(0)
摘要: 就是一道比较麻烦的模拟题,比赛的时候没有敲,赛后1A了。。 其实主要是输入比较麻烦,买东西合成物品什么的暴力一点也不会出错的。 代码写的后丑,A了之后也懒的改了。。 1 #include <string.h> 2 #include <stdio.h> 3 #include <string> 4 #include <sstream> 5 #include <iostream> 6 using namespace std; 7 struct equip{ 8 string name; 9 int val,type; 10 string m 阅读全文
posted @ 2012-09-10 22:11 Burn_E 阅读(333) 评论(0) 推荐(0)
摘要: 贪心,用set水过。 先按x,后按y排序,都想等时Bob放前面。然后扫一遍遇到Bob就将卡片的y值放入set中,遇到Alice就在集合中找一个能被他覆盖的y最大的数,将它擦去。因为如若能覆盖而不去覆盖了就等于浪费了这个,所以必然选择用掉这张卡片。最后统计一共成功覆盖了多少个即可。 1 #include <string.h> 2 #include <stdio.h> 3 #include <algorithm> 4 #include <set> 5 #define inset multiset<int,greater<int> & 阅读全文
posted @ 2012-09-10 22:07 Burn_E 阅读(149) 评论(0) 推荐(0)
摘要: 根据%k=a中a和k的不同组合建立55棵树状数组,每次修改操作只对其中1棵树状数组进行操作,每次查询对其中10棵树状数组统计增量和。 1 #include <string.h> 2 #include <stdio.h> 3 #define MAXN 50005 4 int n,q,x[MAXN]; 5 int ta,tb,cc,k,op; 6 int c[55][MAXN]; 7 inline void update(int *c,int x,int d){while(x<=n)c[x]+=d,x+=x&-x;} 8 inline int query(in 阅读全文
posted @ 2012-09-10 22:00 Burn_E 阅读(165) 评论(0) 推荐(0)
摘要: 题目问用1*2组成如图h*w矩形的方案有多少种。 明显的状态压缩DP,从上向下填充,假设两行的状态为stat1和stat2,则需要满足的条件是stat1|sta2=1<<w-1以及stat1&stat2中连续的1都是偶数个。因为上一行为空的下一行必须放一个竖的,而除去竖着到上一行的都是横着的,每一个横着的占的宽度都是2,所以stat1&stat2中连续的1肯定是偶数个。 对每一层要记录一个状态是否搜过,并记录这个状态有多少种方法,即记忆化搜索。复杂度是O(h*(2^w)*(2^w))。 斌牛的方法更为高效简洁,状态表示的是当前轮廓线的状态,复杂度是O(h*w*(2^ 阅读全文
posted @ 2012-09-04 23:37 Burn_E 阅读(400) 评论(0) 推荐(0)
摘要: KD树,来源计算几何,在《计算几何-算法与应用》一书中有详细的解释。 这题是比较裸的KD树模型,要在点集中找到离一个点最近的一个点。其实KD树就是一棵多维平衡二叉树,将多维空间分成很多个部分,查找时能够较快的逼近查找点,从而快速的找到距离某点最近或者较近的点。 在网上找到了这份模版,简洁高效。 MARK一下URAL1369,也是一道KD树,目前TLE中。。。 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #define MAXN 100005 5 #define INF 阅读全文
posted @ 2012-09-04 13:26 Burn_E 阅读(390) 评论(0) 推荐(0)
摘要: 为了做份高斯消元的模版做了这一题,模版来自http://www.cnblogs.com/kuangbin/archive/2012/08/31/2666144.html。 但这份模版中求自由元的部分应该是错误的,从下向上枚举肯定是不对的,比如x+y+z=10,y+z=5,这个方程组中x实际上是确定的,但这份模版会将x识别为不确定元素。 其实本来是想找份要求自由元的题目的,但还没找到。这题是求同余方程组,跟一般的高斯消元差不多,只是要在消元过程中注意模的问题,另外最后答案要通过扩展欧几里德求出。 继续去找要求求自由元的题目。。 1 #include <string.h> 2 #inc 阅读全文
posted @ 2012-09-02 17:48 Burn_E 阅读(272) 评论(0) 推荐(0)
摘要: 一个n*m的矩形,给出从每个点去它周围的四个点的概率,问从[1,1]走到[n,m]的所花步数期望是多少。 在汤可因的国家集训队论文《浅析竞赛中一类数学期望问题的解决方法》中提到了这个题,对这种带环的模型一般都是高斯消元求解。 假设从某个点走到终点所花步数的期望是d[i,j],很容易推出方程: 这样对每个点列出一个方程,一共n*m个未知数,n*m个方程,用高斯消元即可求解,但是如果直接高斯消元复杂度会达到O(n^3*m^3),所以必然要在基础的高斯消元上加以优化。 下面的这张图片取自题解,是当n=3,m=4时所列出的矩阵,题解中提到了一个block tridiagonal m... 阅读全文
posted @ 2012-09-01 08:55 Burn_E 阅读(657) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页