- 博客(41)
- 资源 (3)
- 收藏
- 关注
原创 HDU4394(数论中的广搜)
题目:Digital Square 题意:Given an integer N,you should come up with the minimumnonnegative integer M.M meets the follow condition: M2%10x=N (x=0,1,2,3....) 从低位向高位广搜,如果当前情况满足M^2 % 10^y = N %
2013-05-31 14:33:36 2012
原创 高斯消元基础题
题目:EXTENDED LIGHTS OUT 题意:5*6的一个由灯组成的方阵 操作一个灯 周围的上下左右四个灯会发生相应变化 即由灭变亮 由亮变灭 问如何操作使灯全灭。本题方法:猛戳这里#include #include #include #include using namespace std;const int N=105;int eq
2013-05-31 02:44:29 4074
原创 SPOJ Finding Fractions
题目地址:http://www.spoj.com/problems/FINFRAC/题目大意:给4个整数a,b,c,d,寻找两个整数p,q,使得a/b 连分数解法:设[a/b]表示a/b向下取整如果a/b >= 1,设k = [a/b],可以知道 ( a/b ) - k 如果a/b如果c/d>1,那么p = q = 1如果c/d 欲知详解请猛戳这里
2013-05-30 21:37:18 1452
原创 高斯消元原理
高斯消元法的步骤:设方程组中方程的个数为equ,变元的个数为var,注意:一般情况下是n个方程,n个变元,但是有些题目就故意让方程数与变元数不同)1. 把方程组转换成增广矩阵。2. 利用初等行变换来把增广矩阵转换成行阶梯阵。枚举k从0到equ – 1,当前处理的列为col(初始为0) ,每次找第k行以下(包括第k行),col列中元素绝对值最大的列与第k行交换。如果col列中的元
2013-05-30 17:10:36 4774
原创 HDU4302(map的用法)
题目:Holedox Eating #include #include #include #include #include using namespace std;const int oo=1000000;int main(){ mapmymap; int t,l,n,co,a,b,ca=0; map::iterato
2013-05-30 16:28:11 1616
原创 构造类斐波那契数列矩阵
题目链接题目:给定正整数a,b,n,m,求的值。其中0 以前做过的矩阵连乘啊,就是构造矩阵就可以轻松解决。我们知道0,可以知道后面的那一坨一定是整数,这个公式明显成立。然后像斐波那契数列那样构造矩阵。注意n是从1开始的。#include #include #include #include using namespace std;typedef lo
2013-05-30 13:29:05 4416
原创 关于方程a^x=1(mod m)的最小x解
题目:Description has only two Sentences 题意:输入X,Y,a,其中Y%(X-1)=0,求最小的正整数k,满足Y/(X-1)*(X^k-1)%a=0分析:令m=Y/(X-1),即m(X^k-1)%a=0,对于m,a先求出g=gcd(m,a)然后约去g,即约分后只需(X^k-1)%(a/g)=0即可。设c=a/g 则(X^k-1)
2013-05-29 19:12:58 4718
原创 fibonacci数列的性质(ZOJ3707)
题目:Calculate Prime S 题意:Define S[n] as the number of subsets of {1, 2, ...,n} that contain no consecutive integers. For eachS[n], if for alli (1 ≤ i n) gcd(S[i],S[n]) is 1, we call that S[
2013-05-29 15:56:46 5116
原创 整数Hash的应用
HDU1425 题意:给你n个整数,请按从大到小的顺序输出其中前m大的数。每组测试数据有两行,第一行有两个数n,m(0个各不相同,且都处于区间[-500000,500000]的整数。#include #include #include using namespace std;const int N=1000005;int a[N];i
2013-05-29 13:47:10 2687
原创 HDU4307(最小割)
题目:Matrix 之所以能够用最大流解决这个问题,关键在于最大流可以求解下面这个函数的最小值:接下来就分析一下如何用最大流求解上面这个函数的极值。首先xi一共只有两种选择,那么最终可以按xi的取值将xi划分成两个集合,那么如果xi在值为1的集合里,xj在值为0的集合里,那么就会产生一个代价cij。同时如果xi选择0就会产生一个bi的代价,如果xi选择1就会产生一个ai的代
2013-05-29 12:14:19 1624
原创 UVA10173(求凸包的面积最小外接矩形)
题目:10173 - Smallest Bounding Rectangle 求凸包的最小外接矩形的面积。思路:旋转卡壳给定点集S,求S的最小覆盖矩形最小覆盖矩形的四条边上,其中一条边有至少两个点,其他边上至少有一个点。然后沿着凸包的边旋转,维护矩形另外三条边上的点。#include#include#include#define eps 1e-8
2013-05-16 13:21:20 4371
原创 平面最近点对
题目:Quoit Design /**最近点对问题,时间复杂度为O(n*logn*logn)*/#include #include #include #include #include using namespace std;const double INF = 1e20;const int N = 100005;struct Point
2013-05-16 13:09:40 1430
原创 POJ4449(三维凸包+空间坐标旋转+二维凸包)
题目:Building Design 题意:题目就是给了一个凸多面题。要把这个凸多面体放到地上,一个面要接触到地面。求一种放法,使得最高点最高,最高点相同时使投影面积最小。输出最高点高度H和投影面积S。先三维凸包一下求得所有的三角形表面。然后枚举每一个表面,进行坐标变换,旋转使得这个表面变水平,然后投影求投影面积,算最高点高度。 题目的数据好像没有n==1 ,2
2013-05-16 13:01:45 1713
原创 HDU4082(相似三角形的个数)
题目:Hou Yi's secret #include#include#include#include#includeusing namespace std;const double eps=1e-6;mapmp;struct Node{ int x,y;}node[50];double dis(Node a,Node b){
2013-05-16 12:49:06 1414
原创 HDU3400(计算几何中的三分法利用)
题目:Line belt 题意:就是给你两条线段AB , CD ,一个人在AB上跑速度p, 在CD上跑q,在其他地方跑速度是r。问你从A到D最少的时间是好多。#include#include#include using namespace std;typedef struct{ double x , y ;}point;point a,b,c
2013-05-16 11:57:25 1347
原创 HDU4273(求三维凸包重心到表面的最短距离)
题目:Rescue 题意:求三维凸包重心到表面的最短距离#include#include#include#include#includeusing namespace std;const int MAXN=1050;const double eps=1e-8;struct Point{ double x,y,z; Point(
2013-05-16 11:42:36 1443
原创 HDU3662(求三维凸包表面的多边形个数,表面三角形个数,体积,表面积,凸包重心,凸包中点到面的距离)
题目:3D Convex Hull 题意:给定空间中的n个点,求这n个点形成的凸包的表面的多边形个数。增量法求解:首先任选4个点形成的一个四面体,然后每次新加一个点,分两种情况:1> 在凸包内,则可以跳过2> 在凸包外,找到从这个点可以"看见"的面S(看不看得见可以用法向量,看点是否在面外侧),删除这些面S,然后对于S的每条边E进行判断,看该点还能否看到这些边E的另一侧的面
2013-05-16 02:39:46 2241
原创 ZOJ2112(区间动态求第K大)
题目:Dynamic Rankings 题意:N给定一个数组A[1]~A[N],有M个操作每个操作可以如下Q i j t 输出 A[I]~A[J]之间第t小的数C i t 将A[I]赋值为t#include #include #include #include #include using namespace std;#define N
2013-05-15 16:35:51 2118
原创 HDU1823(二维线段树)
题目:Luck and Love 题意:当操作符为‘I’时,表示有一个MM报名,后面接着一个整数,H表示身高,两个浮点数,A表示活泼度,L表示缘分值。(100当操作符为‘Q’时,后面接着四个浮点数,H1,H2表示身高区间,A1,A2表示活泼度区间,输出符合身高和活泼度要求的MM中的缘分最高值。 (100其实对于二维线段树,可以这样理解:母树保存x轴上面的信息;子树保存当
2013-05-15 16:00:31 1696
原创 动态树模板(HDU4010题)
题目:Query on The Trees #include #include #include #include #include const int maxn=100011;const int INF=0x7fffffff;using namespace std;struct SplayTree{ int val,mn,lazy;
2013-05-13 22:34:16 1612
原创 优先队列
按照优先权的大小出队#include #include using namespace std;priority_queue,greater >Q;/**greater是最小值优先出队,而less是最大值最先出队*/int main(){ int x,n,i; while(cin>>n) { for(i=0;i
2013-05-13 20:13:32 857
原创 Python中的join()函数和split()函数的用法
题目:CFUltra-Fast Mathematician 题意:给两个长度相等的0,1字符串,在相同的位置的两个字符不同就输出1,否则输出0.比如:10101000100101就输出:1110001代码:print ''.join("10"[i==j] for i,j in zip(raw_input(),raw_input()))join()函数
2013-05-13 13:02:26 9234
原创 Python基础语法
Python里面增加了**运算符和//运算符**用于幂的计算,比如计算2的3次方,就直接a=2**3>>> a = 2**3>>> print a8>>> //用于向下取模,主要用于浮点数,比如3//1.7 = 1.0>>> a = 3//1.7>>> print a1.0>>> 数字类型的内建函数转换函数:将其他类型的数字转换为相应类型
2013-05-11 21:02:49 1487
转载 像烟灰一样松散(毕淑敏)
近年结识了一位警察朋友,好枪法。不单单在射击场上百发百中,更在解救人质的现场,次次百步穿杨。当然了,这个“杨”不是杨树的杨,而是匪徒的代称。 我向他请教射击的要领。他说,很简单,就是极端的平静。我说这个要领所有打枪的人都知道,可是做不到。他说,记住,你要像烟灰一样松散。只有放松,全部潜在的能量才会释放出来,协同你达到完美。 他的话我似懂非懂,但从此我开始注意以前
2013-05-11 19:32:25 1917
原创 Spaly_Tree 模版
/******************************************数据结构:Splay_Tree,伸展树;性质:伸展树是二叉查找树的一种改进;与二叉查找树一样,伸展树也具有有序性;即伸展树中的每一个节点x都满足:该节点左子树中的每一个元素都小于x;而其右子树中的每一个元素都大于x;与普通二叉查找树不同的是,伸展树可以自我调整;特点
2013-05-09 20:01:42 1225
原创 HDU4006(The kth great number)
两种方法做:优先队列和SBT。先说说SBT吧。。。。/*************************************************题目大意:针对每次查询,输出第K大数;算法思想:(1)根据题意可知,只需保留前K个大数,并且按降序排列;也就是说每加入一个数就找到这个数的位置;然后将大于K个元素之外的数删除;利用优先级队列就可以很好的做
2013-05-09 19:55:42 793
原创 BST(Binary Search Tree 二叉查找树模版)
/******************************************数据结构:BST(Binary Search Tree),二叉查找树;性质:若结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若结点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;该结点的左、右子树也分别为二叉查找树;遍历:对于一个已知的二叉查找树,
2013-05-09 19:47:26 1146
原创 SBT模版(Size Balanced Tree)
关于SBT的介绍及学习,请戳这里。 SBT模版:/*************************************************数据结构:SBT(Size Balanced Tree),又称傻逼树;数据域:值域key,左孩子left,右孩子right,保持平衡的size;性质:每棵子树的大小不小于其兄弟的子树大小;插入:插
2013-05-09 19:42:21 1236 1
原创 C++ STL的妙用
题目:Subsegments 题意:输入一个长度为n的整数数组,然后再输入m,然后求从第一个数开始找连续的m个数中的最大的没有重复的数,然后又从第二个数开始。。。。。。如果不存在的情况就输出Nothing比如输入为:5 31 2 2 3 3那么就有1 2 22 2 32 3 3这3种情况,它们的最大的没有重复的数字分别是1,3,2#include
2013-05-09 18:07:04 1267
原创 SGU247(排列组合与大数运算)
题目:Difficult Choice 题目分析以及公式推导: import java.io.*;import java.util.*;import java.math.BigInteger;public class Solution{ public static BigInteger fac[]=new BigInteger[2013];
2013-05-09 17:01:59 1560
原创 面向对象编程
1.第一个HelloWorldclass MyClass: def tell(self): print 'HelloWorld!'Test = MyClass()Test.tell()2.特殊函数:class MyClass: def tell(self): print('This is MyClass')
2013-05-09 11:41:30 1075
原创 求n!,C(n,m)和A(n,m)最后的非零位。
求n!,C(n,m),A(n,m)最后的非零位。 先说说怎样求n!最后的非零位吧!比如找10!最后的非零位,由于质因数2和5的组合之后末尾会产生0,所以我们先把2,5的质因子全部去掉,由于2的数目要比5多,所以我们要在最后考虑多余的2对末尾的影响。比如:1*2*3*4*5*6*7*8*9*10去掉2,5的因子后就是:1*1*3*1*1*3*7*1*9*1,由于去
2013-05-08 21:10:07 1581
原创 map()和zip()操作
如果要将一个string list转换成int list (list里每个string都转成int),比如:['0','1','2'] -> [0,1,2]可以使用:[int(x) for x in list]或者使用map操作: map(func, list) 对list里的每个元素apply func.map(int, list)假设有一个2维数组(用list实现):
2013-05-07 21:26:59 1689
原创 input()与raw_input()
raw_input() 与 input()这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。举两个小例子。>>> raw_input_A = raw_input("raw_input: ") raw_input: abc >>> input_A = input("Input: ") Input: abc Traceb
2013-05-07 21:01:31 2937 1
原创 Pythont特殊语法filter,map,reduce,apply
首先介绍一下匿名函数lambda lambda的使用方法如下:lambda [args1[,args2,args3,...,argsn]] : expression 例如:>>> add = lambda x,y : x + y>>> add(1,2)3接下来分别介绍filter,map和reduce。1、filter(bool_func,seq):此函数的功能相当
2013-05-07 20:25:07 1395
原创 POJ2527(两多项式取余)
题目:Polynomial Remains #include using namespace std;const int N = 10005;int n,k,i;int val[N];int main(){ while(cin>>n>>k) { if(n==-1&&k==-1) break; for
2013-05-07 15:14:19 1963 1
原创 HDU4475(找规律+预处理加速)
题目:Downward paths 设size=i,答案是ai; a1=2=1+1; a2=8=2+2*2+2; a3=48=8+8*2+8*2+8; a4=384 =48+48*2+48*2+48*2+48; ......很明显规律:an=an-1+2*(n-1)an-1+an-1=2*n*an-1;
2013-05-05 21:29:28 1305
原创 大数开方(C++版)
题目:1153. Supercomputer题目大意:N=x*(x+1)/2,给你N (N 600),输出x分析:求sqrt(2*N)即可#include #include #include #include #include using namespace std;#define MAXN 20000int big(char s1[],char s
2013-05-04 21:18:28 4496
原创 POJ1220(高精度进制转换)
题目:NUMBER BASE CONVERSION 就是后面的数字以a进制的形式给出,要求转化为b进制输出。#include #include #include #define MAXSIZE 60000char in[MAXSIZE];int oldbase,newbase;int a[MAXSIZE],b[MAXSIZE],r[MAXSIZE];
2013-05-04 20:37:00 1845
原创 原根
定理:如果p为素数,那么素数p一定存在原根,并且p的原根的个数为phi(p-1).设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.假设一个数g对于P来说是原根,那么g^i mod P的结果两两不同,且有 1那么g可以称为是P的一个原根,归根到底就是g^(P-1) = 1 (mod P)当且仅当指数为P-1的时候成立.(这里P是素数).求原根目前的做法只
2013-05-04 12:14:39 11632 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人