
SOJ
huangshenno1
这个作者很懒,什么都没留下…
展开
-
SOJ4224 Divide
若所有的边不构成环,则不需分割;若存在自环,则无论如何分割仍存在环;存在非自环时,只需将所有环都拆成两类,两类自身不存在环,其集合内也不存在环;所以只有三种答案,需要判断图中是否有环1.无环 ans=12.有自环 ans=-13.有非自环 ans=2我这里用Tarjan计算了scc,或者用bfs判环也可以。#include #include #include原创 2013-03-09 19:36:21 · 529 阅读 · 0 评论 -
SOJ3865 红色病毒
指数型母函数的经典题。在泰勒公式中,令x0 = 0,得到麦克劳林级数:e^x = 1 + x/1! + x^2/2! + x^3/3! + ... (1)令x = -x,可得:e^-x = 1 - x/1! + x^2/2! - x^3/3! + ... (2)(1)(2)式相加,即可得到所有偶数项,即:(e^x + e^-x) / 2 = 1 + x^2/原创 2013-10-21 23:32:26 · 767 阅读 · 0 评论 -
SOJ2099 Search Nearest Neighbour
KD树水题,大家就不要看了= =#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace原创 2013-09-25 19:43:50 · 631 阅读 · 0 评论 -
SOJ3296 Windy's S
字符串的最小表示法算法复杂度O(n)也可用于判断字符串的循环同构//#pragma comment(linker,"/STACK:102400000,102400000")#include #include #include #include #include #include #include #include #include #include u原创 2013-09-17 13:37:02 · 728 阅读 · 3 评论 -
SOJ4293 Product
统计大集合A中所有含奇数个元素的子集S中元素乘积的和!(我已经尽量说的很不饶了= =)设ans1是A中所有奇数集元素积的和(要求的答案),ans2是A中所有偶数集元素积的和。赋初值,令ans1=0,ans2=1(方便每次从空集变成单元素集的过程)每个奇数集加入一个元素x后会变成偶数集,其元素积的和会乘以x,偶数集亦然。这样每次加入x操作有:ans1=ans1+ans2*x原创 2013-07-24 01:20:42 · 450 阅读 · 0 评论 -
SOJ2061 8 puzzle
人生中第一次写A*,贡献了4TLE+4RE+4WA才换来一个宝贵的AC。有几个地方需要总结的。1.一定要判断开始局面能否到达结束局面,用逆序数判断。否则A*算法将搜索完所有可能的状态,导致TLE。2.hash函数要选择好,一开始我直接使用了stl::map来hash,很慢,也会导致TLE。用逆序数列来保存状态,可以保证最多有362880个状态。3.在把子节点加入开列表中时,不能直接原创 2013-06-05 22:59:23 · 653 阅读 · 0 评论 -
SOJ3605 The sum of prime number
好吧,其实是水题,但是我觉得其中还有一定的思维难度的。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using n原创 2013-05-28 15:15:59 · 513 阅读 · 0 评论 -
SOJ3600 Balanced Interval
2012-05-21 01:31:13 上一次的提交时间2013-05-23 17:04:52 这次的提交时间时隔一年,再看这条题目,仅用了3分钟就有了思路,本题可以转化为已知所有s[k](第一个数到第k个数的和),求对于每一个s[k],与其相同且距离最远的s[l],则abs(k-l)即为本题答案,代码如下,用map实现的。#include #include #incl原创 2013-05-23 17:10:53 · 427 阅读 · 0 评论 -
SOJ4264 garlic and zombies
好吧,我出的坑爹签到题= =,答案可以手推,也可以开数组递推。答案有三种情况:n=0,n为奇数,n为偶数。分类输出答案即可。解1:#include int main(){ int n; while((scanf("%d",&n))==1){ if(n==0) puts("0.00 0.00 1.00 0.00 0.00");原创 2013-04-15 12:29:36 · 557 阅读 · 0 评论 -
SOJ4270 lightsaber and cake
好吧,我出的坑爹第二题(其实这才是我出的第一题有木有!随机输入搞了好久有木有!!好久好久有木有!!!)题意其实很简单:给一个不规则多边形,和一条直线,求直线在多边形内的长度。解题步骤如下:(1)枚举多边形的每一条边,如果该边与直线有交点,求出交点(2)将所有求出的交点排序(3)对于每两个相邻的交点,求出其中点,并判断中点是不是在多边形内,如果在,则说明这条线段是多边形内原创 2013-04-15 12:38:46 · 640 阅读 · 0 评论 -
SOJ4275 Question
乍一看很简单,求卡特兰数的模,但是(1 (1)用卡特兰数的递推公式 h(n)=h(n-1)*(4*n-2)/(n+1) ,但是除以(n+1)在模m的情况下无法计算(用逆元似乎也不能算出来),因此采用方法2.(2)用卡特兰数的组合数公式 h(n)=C(2n,n)/(n+1) ,同样的问题,除以(n+1)不好算,所以只能直接对C(2n,n)的所有项分解质因数当然不能直接裸暴力枚举所原创 2013-04-22 18:33:26 · 503 阅读 · 0 评论 -
SOJ3866 红色病毒II
也是指数型母函数,跟前面那道一样一样的。AC个数之和为偶数,翻译一下就是AC个数均为奇数或者AC个数均是偶数。写成指数型母函数就是(e^x)^2 * ((e^x+e^-x)/2)^2 + (e^x)^2 * ((e^x-e^-x)/2)^2化简后可以得到答案的公式:2*4^(n-1)#include #define ll long longconst int原创 2013-10-21 23:51:24 · 831 阅读 · 0 评论