摘要: 棋盘覆盖问题刚开始 用最暴力的方法进行分割覆盖感觉要出一个答案 要很久,然后进行一次预处理就ok了 然后就很快了 ,这个重复覆盖是有规律的 然后我就将他们mod了个10086然后就ok了#include #include#includeusing namespace std;struct point{ int x,y,k; point(int a=0,int b=0,int c=0) { x=a;y=b,k=c; }};int num[4];int dp[34][4][4];void judget(point T,point &A){ int i; T.... 阅读全文
posted @ 2014-01-09 13:07 来自大山深处的菜鸟 阅读(160) 评论(0) 推荐(0) 编辑
摘要: ACM 训练大纲Changsha University of Science & TechnologyJuly 31, 20121 推荐题库• http://ace.delos.com/usaco/美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以baidu 一个叫NOCOW 的网站。• http://livearchive.onlinejudge.org/上面有全部的赛区真题,绝大部分都可以提交,不适合当题库刷,不过在这里找题非常方便。• http://poj.org/不解释了,中国最知名的oj,题量非常之大 阅读全文
posted @ 2014-01-05 09:48 来自大山深处的菜鸟 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 在TC/CF稳定在黄色之前最好不要去定谁去学什么,DP/数据结构这么基础的东西谁都需要去掌握、 做题不要看题解,看题解的时候保证你已经想得头发都要脱落了。专注很重要,在退役之前不要揽项目,如果你还想出线的话。沉下心,把每次比赛看了但是没过的题都过了,不要给自己留坑,会的东西就要把它弄的滚瓜烂熟。掌握一门算法,要把它的每一个细节都弄清楚,regional不会有模板题没必要为学校的氛围发愁,因为有网络,可以很方便的和各个学校的acmer交流只要组到两个一样喜欢acm的队友,可以为acm在实验室吃泡面睡觉就够了一场比赛之后要能找到一些比你牛逼的人,讨论起来,这很重要现场赛的经验是再多的模拟赛都模拟不 阅读全文
posted @ 2014-01-04 10:39 来自大山深处的菜鸟 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 这题说的是一在一个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 &. 阅读全文
posted @ 2013-12-28 14:53 来自大山深处的菜鸟 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 刚开始二分写错了 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... 阅读全文
posted @ 2013-12-27 22:39 来自大山深处的菜鸟 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 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... 阅读全文
posted @ 2013-12-27 14:44 来自大山深处的菜鸟 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 康托展开 康托展开的公式是 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,所 阅读全文
posted @ 2013-12-21 16:14 来自大山深处的菜鸟 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 在做编程题目的时候经常会遇到“斐波那契数列”相关的题目,尤其在做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... 阅读全文
posted @ 2013-12-20 22:47 来自大山深处的菜鸟 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 背包问题,可以很明显的判断为背包问题,因为他要求所有的 砝码都必须放上去,于是乎就变成了 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",& 阅读全文
posted @ 2013-12-20 16:13 来自大山深处的菜鸟 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 初期:一.基本算法: (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 阅读全文
posted @ 2013-12-20 10:12 来自大山深处的菜鸟 阅读(253) 评论(0) 推荐(0) 编辑