12 2013 档案
摘要:这题说的是一在一个N*M的房间内,然后有些房间不能被灯光照亮,有一个灯可以转动方向,其他的灯只能在固定一个方向上,因为数据比较小,所以比较水,直接暴力的进行枚举就好了,但是还是 wa了很久,原因没认真读题,然后就是小细节的错误,在标记的时候背后面的,点给覆盖了,(考虑不周全)。#include #include#includeusing namespace std;const int MAXX=1000000;struct point{ int x,y; point (int a=0,int b=0){x=a;y=b;}};bool operator ==(const point &.
阅读全文
摘要:刚开始二分写错了 wa了很久 这个二分 的好好想想#include #include#include#includeusing namespace std;const double eps=1e-10;double dp[2005],L[2005],R[2005];int n;int BIN(int len,double x){ int left=0,right=len-1,mid; while(leftL[mid])left=mid+1; else right=mid; } return left;}int work(int l...
阅读全文
摘要:log函数的应用,因为log(a^b)=b*log(a);log(a*b)=log(a)+log(b);比如 log10(123456789)==log10(1.23456789)+8;log(1.23456789)是log(123456789)的小数部分。使用 pow()函数将其小数部分还原为1.23456789,然后就得到我们所求的 前4位了。代码:#include#include#include#includeusing namespace std;int F[22];int main(){ int k=0; double sum,n,m1,m2; F[0]=0;F...
阅读全文
摘要:康托展开 康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)。 这个公式可能看着让人头大,最好举个例子来说明一下。例如,有一个数组 s = ["A", "B", "C", "D"],它的一个排列 s1 = ["D", "B", "A", "C"],现在要把 s1 映射成 X。n 指的是数组的长度,也就是4,所
阅读全文
摘要:在做编程题目的时候经常会遇到“斐波那契数列”相关的题目,尤其在做OJ中。下面说一些方法: (一)递归 递归是最慢的会发生重复计算,时间复杂度成指数级。long long fac(int n){ if(n==1) return 1; else if(n==2) return 2; else return fac(n-1)+fac(n-2);} (二)循环 利用临时变量来保存中间的计算过程,加快运算。long long fac(int n){ long long a=1,b=2,c; if(n==1) return 1; else if(n==2...
阅读全文
摘要:背包问题,可以很明显的判断为背包问题,因为他要求所有的 砝码都必须放上去,于是乎就变成了 01背包了 ,每种状态的取决于前一个状态,然后分析一下,因为他有-15 由于杠杆原理可以很清楚的知道最小的 为 20*15*25 于是就将状态平衡的位置进行相应的 移到了 dp【7500】;好了现在问题都解决了 接下来进行dp就可以了#include #include#includeusing namespace std;int dp1[15000],dp2[15000];int d[22],w[22];int main(){ int C,G; while(scanf("%d%d",&
阅读全文
摘要:初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法(prim,krus
阅读全文
摘要:想了好久都没想到怎么去判断当分类dp的时候大于或者等于要求的 值时应该怎么半 后来经过停了 qlx的想法 然后就 敲了出来这题说的是 一个整数 分解成几个素数的和 按这个数的含有的最大素数 进行排列给定的一个数 小于200 求这个数的 第k大的数是什么,然后让你计算出 第k大是组成数是什么.分类进行dp比如起始位进行dp 分类进行的dp可以按照从小到大的排列进行 大的数 只能用比他小的数 进行dp 类似于完全背包,这样在查找的时候也分类进行查找记得从大到小查找ok[cpp] view plaincopyprint?#include #include #include usingnamesp..
阅读全文
摘要:叉积的运用 ,不断的用叉积去判断 最小的拼图, 刚开始对点进行排序,每个人的排序规则不同做法可能不同,我是按照点的x轴进行x轴相同用y小的在前面,然后每个点按照最下的点开始进行查找 每次从一个点出发然后结束后无论找不找到都得 将出发的那条边删掉,ok然后就可以不断的去瓜分这张大的图,#include #include #include#include#include#include#includeusing namespace std;struct point{ double x,y; point(double a=0,double b=0) {x=a;y=b;}}node[...
阅读全文
摘要:转载 http://blog.csdn.net/niushuai666/article/details/6960985一.简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], char T [ ], int pos ){/* 若串 S 中从第pos(S 的下标0≤posS[0]!= S[1],S[1] != S[2],所以S[1]!= T[0],S[2] != T[0].还是从理论上间接比较了。有人疑问又来了,你分析的是不是特殊轻况啊。假设S不变,在S中搜索T=“abaabd”呢?答:这种情况,当比较到S[2]和T[2]时,发现不等,就去看next[2
阅读全文
摘要:http://acm.fafu.edu.cn/problem.php?id=1136根据dp建边,建边的时候记得判断如果原本数的大小就ok了 好久没在自家OJ上刷了#include #include#include#include#include//称这个机会吧EK 和DINIC都写一遍复习一下;using namespace std;int dp[1105],a[1105],n,max_val,NUM;int map[1105][1105],flow[1105][1105];int first[1105],next[1000000],v[1000000];int dist[1105];voi
阅读全文
摘要:字符串简单的有 LIS (最长递增子序列的三种方法)LCSLDS嘎嘎 搞了一早上
阅读全文
摘要:转载的弱校ACM奋斗史九月 15th, 2011 | Posted by diaorui in 故事杂谈 欢迎转载,转载请注明出处。55这是一篇老文章,不过由于无法找到最初的发文地址,这里就不能粘贴原文网址了。本站转载此文与ACMer们共勉。感谢acmerfight供稿。题解:还记得2年前的一个晚上,我和一个女孩一起写完了这篇文章。写完后,她哭了,我笑了。然后,她走了,我哭了。2年后,我又找到她,这次,我没有让她走掉,她成了我的新娘。不知道什么时候,开始知道ACM;也不知道什么时候,开始喜欢上ACM。但是,我知道,我喜欢上了,而且不会后悔。我是大一的时候进的学校ACM队,那个时候,一切都是冰冷
阅读全文
摘要:计算两个凸包之间的最小距离,旋转卡壳法详解在旋转卡壳的用法之计算两个凸 包上的最近距离#include #include#include#includeusing namespace std;const double eps=1e-10;const double INF=1e10;struct point{ double x,y; point (double a=0,double b=0) { x=a; y=b; }};double min_val(double a,double b){ return a>b?b:a;}int dcmp...
阅读全文
摘要:以POJ的2420为例来说明一下,我感觉这个应该算得上是二分吧.先进行点的变换,确定当前最优,在二分距离,这样应该就能得出答案了吧!#include #include#include#includeusing namespace std;struct point{ double x,y; point (double a=0,double b=0){x=a;y=b;}}p[105];double work1(point a,int n){ int i; double ans; ans=0; for(i=0;i0.1) { f...
阅读全文

浙公网安备 33010602011771号