- 博客(120)
- 资源 (11)
- 收藏
- 关注
原创 hdu 1564 证明 (2)
之前写了一个:http://blog.csdn.net/topc0o0der/article/details/5928391最近有个师弟又问,感觉当时写的不怎么好。绕来绕去。下面我精简一下证明。仍然拿奇数棋盘论证。设先手A,后手B,设A和B走过的棋子和为S。设当A和B的路径把棋盘第一次分割为两个部分的时候,一个部分棋盘个数为X1,另一个为X2,显然 X1+X2+S+1 = N*
2015-02-27 18:32:27 578 1
转载 IR的评价指标-MAP,NDCG和MRR
IR的评价指标-MAP,NDCG和MRRMAP(Mean Average Precision):单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。MAP 是反映系统在全部相关文档上性能的单值指标。系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为
2015-02-27 13:59:29 1223
原创 JAVA为什么不让创建泛型数组
首先,我觉得定制java标准的那些人完全可以让java创建泛型数组;只是他们权衡了一下,觉得还是禁止了的好,一下就说说我的揣测:如果我们写如下代码是没有问题的: List a = new ArrayList();那么为嘛到了数组就不行呢: List[] arr = new ArrayList [10];我们先来看看数组变量和普通变量的区别:数组变量arr和普通变量a都在栈中,
2014-09-08 23:30:43 1466
原创 google code jam 2014 RB_A
呵呵。#include #include #include using namespace std;int T,X,N,S[10001];int main(){ freopen("A-large-practice.in","r",stdin); freopen("a.large","w",stdout); cin>>T; for(int cas=1; cas<=T; ++
2014-07-11 20:55:48 498
原创 3689 浮云
<br />赛后a题都是浮云,就是不明白,之前怎么就连这么简单的题都不敢写。这种dp有什么,建个状态转移图不久ok了,什么时候我才不悲剧!!!!!!!!!!!<br />#include <iostream><br />#include <cstring><br />using namespace std;<br /><br />struct Node{<br /> int next[26];<br /> double p;<br />} node[10];<br /><br />struct
2010-11-12 22:46:00 485
原创 hdu 1030
贪心思想,锻炼基本运算能力。 坐标采取中轴,水平;这样很好做 #include #include using namespace std;#define ABS(a) (a>0?a:-a)int main(){ int n,m; int fn,fm; int xn,xm; while(cin>>n>>m){ fn=ceil(sqrt(n)); fm=ceil(sqrt(m)); x
2010-11-08 05:57:00 662
原创 康拓展开
http://baike.baidu.com/view/437641.htm#4 康托展开 百科名片 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,a为整数,并且0=2;i--) { k=S>> 3*(i-1); S-=k0;i--) { temp=0;e=1; xp=m/fac[i]; m=m%fac[i]; for(j=1;j #include using namespace std;
2010-11-07 21:21:00 1022
原创 1023
明显的卡特兰数: http://baike.baidu.com/view/2499752.html 前几个数值: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147
2010-11-07 00:15:00 627
原创 1021
贴个模板 #include #include using namespace std; int mat[2][2]; int fmat[32][2][2]; int tmp[2][2]; int e[2][2]={1,0,0,1}; int r[2][2]; void pre(){ memcpy(fmat,e,sizeof(e)); memcpy(fmat[1],mat,sizeof(mat)); ////////////////////////
2010-11-06 23:35:00 759
原创 1018
这个还不错; http://wenku.baidu.com/view/fc25e338376baf1ffc4fadec.html 纯暴力的话,10^7*(10^14)=10^21; 算死也算不完。 math.h要用好: http://baike.baidu.com/view/673537.htm 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有: 1 三角函数 double sin (double); double cos (double); dou
2010-11-06 23:03:00 454
原创 1029
stl水过 值得一提的是这道题规定大于等于一般,所以有种更好的方法,就是加减,结果的值一定大于等于0; #include #include using namespace std; int main(){ map hash; int n,tmp; while(~scanf("%d",&n)){ hash.clear(); for(int i=0; i::iterator it; fo
2010-11-06 16:49:00 384
原创 1010
dfs精髓剪枝呀,长时间不做搜索,剪枝都忘了,7*7图的复杂度应该是4^49吧。 #include using namespace std;char map[7][7];bool mm[7][7];int m,n,t;int sx,sy;int ex,ey;int cnt;bool ok;int step[4][2]={{1,0},{-1,0},{0,1},{0,-1}};void dfs(int x,int y,int tt){ if(tt>t)
2010-11-05 22:16:00 385
原创 1007
二分思想: #include #include #include using namespace std;struct point{ double x,y; bool operator =ans) break; ans=min(sqrt((tp[i].x-tp[j].x)*(tp[i].x-tp[j].x)+(tp[i].y-tp[j].y)*(tp[i].y-tp[j].y)),ans); } } return ans;}int mai
2010-11-05 20:39:00 393
原创 1006
关键是精度;3600*24=86400;10E-4题目要求的是10E-5所以最少也要把一秒分为10份,但是我分到1000才对的。为啥呢,其实算上四舍五入的话,题目要求E-6,而计算时应该更小,因为有累加效果。当然我的这个方法会超时,没事,打表就行了。#include #include #include #include using namespace std;int t;int min(int a,int b){return a>b?b:a;}int abs(int a){return a>0?a:-a;}
2010-11-05 11:26:00 419
原创 sfys2
给出个官方答案:http://wenku.baidu.com/view/05c3f2eae009581b6bd9eb80.html 1.2.8 不一定。有些数学方法比贪心更直接。 1.2.9 感觉不行。因为不管怎么贪心,后面的状态都会根据当前的选择变化,而且问题很复杂。 1.2.10 定理一根据定义是显然的吧。定理二可以用构造方法证明。 1.2.11 用定理一不难证明。 1.2.12 很明显的贪心 1.2.13 我有个没怎么证明的贪心策略: 能取左上角就取左上角(当这一点的下方或者右边没有时,对
2010-11-01 23:49:00 384
原创 sfys
1.2.1 不一定。 1.2.2位置*方案,等我做的时候再思考吧。 1.2.3答案:0 1 2 2 4 4 4 4 2 0 abcceeeeca; 1.2.4枚举,注意边界条件。 1.2.5枚举列然后贪心 1.2.6注意只需枚举相邻两个就行。 1.2.7这个。。。java写的在poj和ural上超时,ural卡在第29个,zoj上是能ac的,2700ms; ural连接:http://acm.timus.ru/problem.aspx?space=1&num=1165 zoj连接:http://acm.z
2010-10-30 09:12:00 7441
原创 hdu 3221
汗死的题。 做这题时,以为a^x%P=a^(x%PI(P))%P,结果一直wa。以为是long long的问题。其实一开始的公式如果a和P互质,就是对的。但是如果a和P不互质的话,这样有一种情况是错的。比如a=2,P=6,pi(6)=2(1,5); 2^4=16; 2^0=1; 16%6=4;2^(2+0)=4; 正确的公式:A^x%C=A^(x%phi(C)+phi(C))%C (x>=phi(C)); #include #define LL long long using names
2010-10-19 20:07:00 684
原创 精确覆盖
zoj3209 #include #include #include #include using namespace std; typedef long long LL; const int INF=6000; const int max_size = 1000*501; int ygx_ans; const int maxint = 0x3f3f3f3f; int L[max_size], R[max_size], U[max_size],
2010-10-18 11:46:00 475
原创 PKU 3537
这题的中间状态比较好想。但是边界有点绕人。原因是子游戏出现了边界,未定义的情况。 import java.util.*; public class Main { /** * @param args */ static int[] dp=new int[2001]; public static int DP(int a){ if(a
2010-10-17 11:49:00 450
原创 pku 1704
import java.util.*; public class Main { /** * @param args */ static int[] grid=new int [10000]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin=new Scanner(S
2010-10-17 01:56:00 632
原创 poj 3710
组合游戏。 import java.util.*; public class Main { /** * @param args */ static int N; static boolean[] cir=new boolean[100]; static boolean[] vis=new boolean[100]; static int[][] tree=new int[100][100];
2010-10-17 01:01:00 547
原创 every_sg
step(v) if(v==end) =0; else if(sg(v)>0) =max(step(u))+1&&sg(u)==0 else =min(step(u))+1 这个模型暂且没有例题,找到之后补上。
2010-10-17 00:58:00 478
原创 sg变形——一堆变多堆
原题连接 http://www.acm.cs.ecnu.edu.cn/problem.php?problemid=1328 Stripes Time Limit:1000MS Memory Limit:30000KB Total Submit:23 Accepted:11 Description Stripes is a two player game. Necessary requisites are a board and rectangular stripes in three
2010-10-14 21:02:00 618
原创 Nim游戏变形之一
取走最后一颗石子的输。 刚一开始,我想可能要把sg的值变一下。原先sg(0)=0; 我想如果保持0为输态,那么sg(1)就应该是0,而sg(0)!=0; 但是sg函数怎么能随便改呢,sg不仅仅是个符号,他后面的性质和他的定义有密切的联系。 回顾sg: sg游戏的特点是信息对称。所以每个状态的胜负确定。容易理解,双方都想赢,必输态肯定是子状态都是必胜态才行。不然,就可以找到一个必输态,从而是自己必胜。所以,必胜态就是能达到必输态的。必输态只能达到必胜态。从结果往前搜索自然可以把博弈树
2010-10-14 19:12:00 967
原创 hdu 1564 证明
定义记号(1,1)表示x坐标为奇,有坐标为奇,(0,1)为x坐标为偶,y坐标为奇 ,(0,0)(1,0)类推。 先说明一下结论: n是奇数,后手胜,n是偶数,先手胜。 以n为奇数为例,说明一下制胜策略。 那么5*5棋盘为例,可以表示为: (1,1)(1,0)(1,1)(1,0)(1,1) 1,2,3,4,5 (0,1) (0,0) (0,1) (0,0) (0,1) 6,7,8,9,10 (1,1)(1,0)(1,1)(1,0)(1,1) (0,1) (0,0) (
2010-10-08 22:47:00 1681
原创 sg函数
给出百度百科解释:(应该是从论文里截的一段,可以看出有前后文) 给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移 动者判负。事实上,这个游戏可以认为是所有Impartial Combinatorial Games的抽象模型。也就是说,任何一个ICG都可以通过把每个局面看成一个顶点,对每个局面和它的子局面连一条有向边来抽象成这个“有向图游戏”。下 面我们就在有向无环图的顶点上定义Sprague-Garundy函数。首先定义mex(minimal excludan
2010-10-08 12:09:00 591
原创 hdu 1517
这个sg函数有个特点,就是sg可以按照区间取值。连续的一段的sg值是一样的。所以只需判断区间个数的奇偶就行了。(n+8)/9是必胜区间最后一个。最后一个的/2取上整,是必败的最后一个。看最后区间的最后一个什么时候等于1就是了。判断中间走了多少布。判断奇偶。代码不放了。
2010-10-08 10:55:00 1409 1
原创 hdu 1404 sg
题目唯一的难点在于dp中某些状态的转移不好用。原因是有些状态不能用int表示,比如002这种的数,但容易知道第一个是0的都是必胜态,转移时,比如201,能转移乘001,如果不考虑前导0,会到1,而1是必输态,这样201会是必胜态,但是001是必胜态,所以要判断前面的数字去掉之后,有没有前导0;(s-P[up][i]+P[j][i])>P[1][i-1](判断前导0的)sg函数其实不用int,用bool就行。dp即为sg函数值。#include <cstdio>#include <cstring>us
2010-10-08 09:40:00 1087
原创 hdu 2965
这道题其实有更简单的做法。四个判断就ok。由于我比较死板。什么都想套理论。3000ms的代码就诞生了。 考虑时,可以这样。先放一条边。如果这条边能用小长方形的两条边精确覆盖,那么考虑另一条边的覆盖。 wa了那么多次,只不过是个大括号的问题。。。 #include #include #include #include using namespace std; long long a,b,c,d,t; bool ok; long long ex_eulid(lon
2010-10-05 00:42:00 679
原创 整数行列式计算 高斯方法 无精度损失
<br />没用double,用的分数表示。不能算太大的。<br /> <br />#include <iostream><br />#include <cstring><br />#include <cstdio><br />#include <cmath><br />#define MAXN 50<br />#define MOD 1000000007<br />using namespace std;<br />struct mat{<br /> int size;<br />
2010-09-29 23:08:00 656
原创 每日小结2 baby-step_giant_step
维基百科:baby-step_giant_step名字已经暗示了算法的精髓。感觉和桶计数很像。就是把小单位合并。用大单位和小单位一起精确查找。和杭州网络赛的中值滤波很像呀。an==b(mod c) 给定你n的范围。可能很大。但是由数论的知识知道n简单论述一下啊:{an},n~1,2,3... 可以看成a的生成群。其实也不是严格的。严格的a必须与c互质才行。因为不互质的话,a是没有逆元的。再次对上句话进行证明。(ps:为啥我老是证明呢。因为我刚学。很多东西都不能像加减乘除那样一眼看出来。还有可能是反应慢吧。
2010-09-28 23:58:00 832
原创 HDU 3341
<br />Qinz的题。。。<br />题意: 给定AGTC的数目,求组成的串中能含给定的串最大数目;trick可以有一样的给定串,但是要算两次。题目不严谨呀^_^;<br /> <br />之前自动机只是局限于入门级的题。这回在构建auto时,每个节点的next都有值;这和之前统计的计数不一样了。<br /> <br />看到网上好多dfs,感觉效率不高,其实就是个背包。自动机充当了状态转移的工具。<br /> <br />代码效率不是很高。2900ms。但也不低。。。。。。<br /> <br />代
2010-09-21 22:53:00 997
转载 知识点
<br />时间复杂度(渐近时间复杂度的严格定义,NP问题,时间复杂度的分析方法,主定理)<br />排序算法(平方排序算法的应用,Shell排序,快速排序,归并排序,时间复杂度下界,三种线性时间排序,外部排序)<br />数论(整除,集合论,关系,素数,进位制,辗转相除,扩展的辗转相除,同余运算,解线性同余方程,中国剩余定理)<br />指针(链表,搜索判重,邻接表,开散列,二叉树的表示,多叉树的表示)<br />按位运算(and,or,xor,shl,shr,一些应用)<br />图论(图论模型的建立,
2010-09-19 20:38:00 359
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人