上一页 1 2 3 4 5 6 ··· 18 下一页
摘要: 一些半平面交的题目,整理一下。多边形的核问题多边形的核指的是多边形内能够“看到”多边形所有顶点的点集,判断方法是用多边形所有的边切割原来的多边形,得到的新区域就是多边形的核。判断多边形的核是否存在:POJ 3335POJ 3130POJ 1474求多边形的核的面积:POJ 1279View Code //#pragma comment(linker,"/STACK:327680000,327680000")#include <iostream>#include <cstdio>#include <cmath>#include <ve 阅读全文
posted @ 2013-02-19 16:06 AC_Von 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 250pt 和 500pt都是简单题,500pt暴力就可以。。。1000pt:题意:给一棵树,求这棵树中不同子树的个数。解:f[i]表示以i点为根节点所包含的子数的个数。f[i] *= (f[j] + 1) 其中i -> j有边相连,+1表示不选以j为根的这棵子树;dfs;int mp[60][60];bool vis[60];LL ans;class CentaurCompanyDiv2 {public: LL dfs(int u) { int i; vis[u] = true; LL cnt = 1; for(i = 1; i ... 阅读全文
posted @ 2013-02-19 10:01 AC_Von 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 风水。。。是一门艺术。。。我在想要不要看看《周易》《葬经》什么的,等老了还能出去给人算算命,看看阴宅阳宅什么的,混口饭吃。嘿嘿,扯远了。。。 题意:给一个凸多边形,然后在里面放两个半径为r的圆。问怎么放能使覆盖的面积最大(spj)。 思路:把多边形的每一条边向“内”移r的距离,交得一个新多边形。在多边形上找两个尽量圆的点,放上圆心。关于怎么向内移动r的距离,见下图所以 point[i] 和 point[i+1] x轴上移动的距离就是r*cos(th), y轴上移动距离就是r*sin(th);View Code //#pragma comment(linker,"/STACK:3276 阅读全文
posted @ 2013-01-30 16:15 AC_Von 阅读(744) 评论(0) 推荐(0) 编辑
摘要: 计算几何学半平面求交poj3384,poj2540 (+ poj3335, poj3130, poj 1474, poj1279, poj3525)可视图的建立poj2966点集最小圆覆盖zju1450对踵点poj2079半平面求交详见:http://www.cnblogs.com/vongang/archive/2013/02/19/2917246.html 阅读全文
posted @ 2013-01-28 09:55 AC_Von 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 《对弈程序基本技术》专题 最小-最大搜索:http://www.xqbase.com/computer/search_minimax.htm《对弈程序基本技术》专题 Alpha-Beta搜索 :http://www.xqbase.com/computer/search_alphabeta.htmWikipedia MinMax :http://en.wikipedia.org/wiki/MinimaxWiki Alpha–beta pruning :http://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruningMinmax Explained:h 阅读全文
posted @ 2013-01-25 19:19 AC_Von 阅读(3905) 评论(0) 推荐(2) 编辑
摘要: 欧拉函数:用来求1...n-1范围内与n互质的数的个数 phi(n) = n*(1 - 1/p1)*(1 - 1/p2)*...*(1 - 1/pk) (p1, p2, ... pk为n的质因子) 因为 n = p1q1 * p2q2 * ... * pkqk 带入得:phi(n) = (p1 - 1)*p1q1-1 * (p2 - 1)*p2q2-1 * ... * (pk - 1)*pkqk-1; 代码: int eular(int n) { int i, res = 1; for(i = 2; i*i <= n; ++i) { if(n%i == ... 阅读全文
posted @ 2013-01-23 20:54 AC_Von 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 关于群、置换、置换群、Burnside定理、Polya定理的详细内容是看得组合数学课件,地址:http://ishare.iask.sina.com.cn/download/explain.php?fileid=15008967练习: poj2409 题意:给一个包含s个珠子的项链,用c种颜色对其染色,问存在多少个不同的等价类。 解:项链可以进行旋转和翻转; 翻转:如果s是奇数,则存在s种置换,每种置换包含s/2+1个循环。 如果s是偶数,存在s/2种以边的中点为中心轴的翻转,每种包含s/2个循环,另外还存在s/2种以点为中心的翻转,每种包含s/2+1个循环; 旋转:旋转i... 阅读全文
posted @ 2013-01-23 20:49 AC_Von 阅读(2255) 评论(0) 推荐(0) 编辑
摘要: 数学组合数学poj2888,poj2154博奕论poj3317,poj1085组合数学POJ 2154 && POJ 2888详见:Polya计数法http://www.cnblogs.com/vongang/archive/2013/01/23/2873780.html博奕论POJ 1085 最大最小搜索,alpha beta 剪枝:http://www.cnblogs.com/vongang/archive/2013/01/25/2877208.html 阅读全文
posted @ 2013-01-23 08:47 AC_Von 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 250pt....500pt 题意:给n和m,a,b满足(1 <= a <= n, 1 <= b <= m),SSR(a, b) = (sqrt(a) + sqrt(b))^2为整数,其实就是sqrt(a*b)为整数。总体思路是:从1...n枚举a,看m中有多少个和a组合可以构成平方数的。先把a因式分解,a = k1p1*k2p2*...*kxpx找到所有pi (1 <= i <= x)中是奇数的质因子,因为幂为偶数的质因子开放的结果一定是整数,所以不用考虑偶数的情况。剩下这些设幂为奇数的质因子的积为W,比如a = 2^3*5^3*7^2, W = 2^3* 阅读全文
posted @ 2013-01-22 10:02 AC_Von 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 斜率优化其实就是把每个状态看上直角坐标系上离散的点抽象出x,y 表示斜率 (y2 - y1) / (x2 - x1) 于一个关系状态i个函数的关系,然后维护点见斜率的上凸性或者下凸性。具体的情况要看于i有关的函数的单调性。斜率优化dp基本都是和单调队列结合使用的。 POJ 1180这题,状态转移方程开始只想到正向推O(n^2)的复杂度,但是正向推有两个不确定量,不能优化。后来看解题报告才知道可以从后往前推。sumT[i]表示从i到n的任务所需要的时间总和,sumF[i]表示从i到n的费用系数总和,dp[i]表示对于从i到n的任务安排的最优解: dp[i]=min(dp[j]+(sunT... 阅读全文
posted @ 2013-01-21 18:45 AC_Von 阅读(1235) 评论(0) 推荐(0) 编辑
摘要: 四边形不等式优化动态规划原理:1.当决策代价函数w[i][j]满足w[i][j]+w[i’][j’]<=w[I;][j]+w[i][j’](i<=i’<=j<=j’)时,称w满足四边形不等式.当函数w[i][j]满足w[i’][j]<=w[i][j’] i<=i’<=j<=j’)时,称w关于区间包含关系单调.2.如果状态转移方程m为且决策代价w满足四边形不等式的单调函数(可以推导出m亦为满足四边形不等式的单调函数),则可利用四边形不等式推出最优决策s的单调函数性,从而减少每个状态的状态数,将算法的时间复杂度由原来的O(n^3)降低为O(n^2). 阅读全文
posted @ 2013-01-21 10:31 AC_Von 阅读(1514) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个长度为N(N < 50000)的序列,求这个序列中长度为5的递增子序列的个数。思路:对于长度为5的子序列,先考虑长度为1的子序列,第i个位置以i结尾长度为1的子序列个数为1。第i个位置以i结尾长度为2的子序列个数为i之前并且小于a[i]的长度为1的子序列的个数。同理,第i位置长度为3的子序列个数为i之前小于a[i]的长度为2的子序列的个数。。。依次往后推。比如原序列为:(1, 2, 4, 6, 3) 推: -> (1, 1, 1, 1, 1)1 -> (0, 1, 2, 3, 2)2 -> (0, 0, 1, 3, 1)3 -> (0, 0, 0, 1 阅读全文
posted @ 2013-01-18 16:52 AC_Von 阅读(939) 评论(0) 推荐(0) 编辑
摘要: 动态规划需要用数据结构优化的动态规划poj2754,poj3378,poj3017四边形不等式理论、斜率优化poj1160,poj1180,poj3709较难的状态DP、插头DPpoj3133,poj1739,poj2411、poj1763 需要用数据结构优化的动态规划 POJ 3017 题意:给一个长为N的序列A,从中可以画出k个子序列,S1,S2,... ,Sk。求这些子序列中sigma(max(S[i]))最小。(1<=i<=k)并且满足sigma(S[i])<= M;解:转移方程,f[i] = min(f[j] + max(num[j+1...i])),这是一个很朴素 阅读全文
posted @ 2012-12-21 16:28 AC_Von 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 云IDE显示我提交了。。。云IDE显示我提交成功了。。。可是结果里根本没有我的ID,两个编译通过都没有。。。不吐槽了。。。T_T题目1:du熊学斐波那契I找循环节。。。求对拍。。。题目2:du熊填数字把线拉直了,转化成在长度为x的序列上排01串,保证不出现连续的1。发现这个数就是斐波纳锲数列。。。const int N = 1024;int fb[N];void init() { fb[0] = 1; fb[1] = 2; for(int i = 2; i < N; ++i) fb[i] = (fb[i-1] + fb[i-2])%2012;}int main() { //... 阅读全文
posted @ 2012-12-15 10:25 AC_Von 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 250pt我真够250的。3*3的棋盘跟4*4的棋盘搞混了。3*3正好是一个特例,结果为8,。。。。然后被cha掉了。。class KnightCircuit2 {public: int maxSize(int w, int h) { if(w > h) swap(w, h); if(w == 1) return 1; else if(w == 3 && h == 3) return 8; else if(w == 2) return h/2 + (h%2 != 0); else ... 阅读全文
posted @ 2012-12-14 14:51 AC_Von 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 对于C(n, m) mod p。这里的n,m,p(p为素数)都很大的情况。就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了。这里用到Lusac定理For non-negative integersmandnand a primep, the followingcongruence relationholds:whereandare the basepexpansions ofmandnrespectively.对于单独的C(ni, mi) mod p,已知C(n, m) mod p = n!/(m!(n - m)!) mod p。显然除法取模, 阅读全文
posted @ 2012-12-02 14:03 AC_Von 阅读(9723) 评论(0) 推荐(2) 编辑
摘要: 搜索较麻烦的搜索题目训练poj1069,poj3322,poj1475,poj1924,poj2049,poj3426广搜的状态优化poj1768,poj1184,poj1872,poj1324,poj2046,poj1482深搜的优化poj3131,poj2870,poj2286较麻烦的搜索题目训练poj 3322感觉这题应该归类到模拟题。。。bfs&&priority_queue直接模拟就行。昨晚写了一个版本,因为状态记录的太多了,MLE一次。发现总共有三种形状,每种形状可以用一个坐标加一个标号表示。比如约定立着的用(x, y, 0)表示,横着的为(x, y), (x, y 阅读全文
posted @ 2012-11-26 19:38 AC_Von 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 一些概念和理解:Suffix(i): 表示从i位置到字符串末尾这个子串,(后缀数组);sa[i]:表示排名为i的子串从哪个位置开始,即排名为i的子串为Suffix(sa[i]);rank[i]:表示在字符串上,第i位置在后缀数组中的排名是多少;height[i]:height[i] = Suffix(sa[i-1]) 和Suffix(sa[i])的最大公共前缀;假设有j、k,且rank[j] < rank[k],则有:Suffix(j)和Suffix(k)的最大公共前缀为height[rank[j] + 1], height[rank[j] + 2], ... , height[ran. 阅读全文
posted @ 2012-11-23 21:12 AC_Von 阅读(944) 评论(0) 推荐(0) 编辑
摘要: 被虐残了T_T。开始没思路,膜拜大牛的思路又看不懂。。。推荐一个题解:http://hi.baidu.com/fpkelejggfbfimd/item/5c76cfcba28fba26e90f2ea6 思路是求单个串的k前缀,不如有串sx, sy。sx的k前缀是a,sy的k前缀是b,sx + sy的k前缀是c。那结果就是:c - a - b; 关于怎么求单个串的k前缀: 大概的思想是求出后缀数组的height值,然后按k进行分组。对每一组里,假设有x个连续的height值为d的情况,那么这段连续的子区间贡献出的结构就是C(x, 2)*(d - k + 1);因为数据是10^5,所有要... 阅读全文
posted @ 2012-11-20 09:32 AC_Von 阅读(1607) 评论(0) 推荐(0) 编辑
摘要: 之前写过一篇,越看写的越不爽,删之重写。 11.07出发,大概是11.09上午10点多抵达青城山,然后跟随志愿者办理各种手续,入住,休息。 第二天早晨起来看了会模板,然后从住处出发去学校。下午热身没什么好说的,貌似是给大家增加自信的,所有3道题都很水,好像是全场AK?我也不太清楚,没注意看board;其间有些小风波:打印机不能用,全场座位全乱。。。晚上看了会电视睡下; 第二天正式赛,一个难忘的光棍节比赛啊。。。话说看到好几个队是一对情侣加一个灯泡来的,>,< 无语。比赛开始前10分钟才让进场,孩纸们都在外面冻着啊有木有!T_T 比赛开始我上去敲配置,宏定义啥的(貌似只有我自己用宏。 阅读全文
posted @ 2012-11-18 19:55 AC_Von 阅读(396) 评论(2) 推荐(1) 编辑
摘要: /*记得以前做cf就吃过这上面的亏,今天队里的比赛又挂了好几次才推 出来。。。晚上整理了一下,分别写了写>= , > , <= , <这四种情况。(== 就 不用写了),测试数据包含最小值和最大值的测试,有些情况结果是非法的,输出为-1 或 n*/ //#pragma comment(linker, 阅读全文
posted @ 2012-11-17 20:22 AC_Von 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 模板题:Keywords SearchView Code //#pragma comment(linker,"/STACK:327680000,327680000")#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include <function 阅读全文
posted @ 2012-11-06 10:03 AC_Von 阅读(493) 评论(0) 推荐(0) 编辑
摘要: HNOI的题。。。蛋疼的没有想到,看了discuss。。。 已知N+1个数,x1, x2, .. xn, m;使得gcd(x1, x2, ..., xn) = 1(mod m)。也就是说gcd(x1, x2,..., xn, m) = 1需要找x1, x2, ... ,xn这样的序列多少个。其实就是找到与m互素的数构造这个集合就可以。。。首先对m进行分解质因子,可以用容斥原理找到与m不互素的数构成的集合,用m^n减掉就可以了;ps:貌似这题不用高精度。//#pragma comment(linker,"/STACK:327680000,327680000")#include 阅读全文
posted @ 2012-11-03 11:36 AC_Von 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 题目是给出m,k。找到跟第k个跟m互素的数是多少。 构造肯定不行,再加上数据范围,只能二分。思路是二分枚举[1,2^64]范围内所有的数x,找到1到x范围内与m不互素的数的个数y(用容斥原理)。然后用x - y,如果等于k就是结果。找到1到x范围内与m不互素的数的个数y:这个过程可以先把m分解质因子,记录m所有的质因子。f[i]表示含有i个质因子的数的个数。ans = m - f(1) + f(2) - f(3) ....ps:这里二分要找满足 == k最左边的数,推了半天发现把二分写错了。。。T_T//#pragma comment(linker,"/STACK:327680000 阅读全文
posted @ 2012-11-03 11:28 AC_Von 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 感觉这个题很不错,至少开始真的没想道可以用抽屉原理推出一个结论,然后把这题秒掉。。。。已知有n个元素,sum[i]表示从1到i所有数的和。。。sum[i]%n可以得到一个剩余系,如果出现0,那么结果就找到了。如果不出现0,就可以用抽屉原理了。因为剩余系里只有[1,n-1]这些数,但是sum[i]%n会得到n个结果。n-1个抽屉放n个物品,必定有一个抽屉放的物品数大于等于2。也就是必定存在sum[j]%n == sum[i]%n。我们假设sum[i] > sum[j],所以有(sum[i] - sum[j])%n = 0; 从而得到结果。构造大概有O(n)的复杂度吧,开始想写O(n^2)。 阅读全文
posted @ 2012-11-03 11:20 AC_Von 阅读(386) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 18 下一页