现在位置: 首页 > juge发表的所有文章
题意: 桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M); 两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌; 桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。 题解: 尼姆博奕(Nimm Game) Nim-sum = 0   必败态 先求所有堆的 Nim-sum = N1 ^ N2 ^ ... NM 然后 res =Nim-sum ^ Ni 如果 res < Ni, 则先手玩家只要第一步从Ni堆中取走Ni-res个, 则剩下的局面必败态(Nim-sum = 0,) 即为剩下的局面为必败态。则这就一种取胜的方案。 对于每个堆的操作至多只有一种方法可以导败必败态 换汤不换药的题......
阅读全文
  • 11月
  • 06日
综合 ⁄ 共 1610字 评论关闭
       排序算法算是比较基本的算法,同时也是最重要的算法,涉及到的知识也比较多,下面记录一下各种排序算法的实现,包括插入排序,选择排序,快速排序,归并排序,冒泡排序等常见的排序算法: 1、插入排序:  插入排序的原理是每次将一个数插入到有序的集合中,从算法实现的角度讲,就是进行N趟遍历,没次将第i个数插入到前面有序的集合中,最后达到有序。从这我们可以看出算法的复杂度是O(N^2),在实现时将第i个数与前面的i-1个数进行比较,如果小于就交换,最后插入到合适的位置。 void insert_sort(int a[], int n) { ......
阅读全文
  • 10月
  • 23日
综合 ⁄ 共 785字 评论关闭
首先,sasfile statement语法为 SASFILE <libref.>member-name<.member-type> <(password-option(s))> OPEN | LOAD | CLOSE ; 该语句提高效率的原理是将数据一次性读入缓存内,避免了data步中反复地对数据读取或关闭,也减少了input/output操作。 需要特别注意的是,如果数据太大,打到缓存无法容纳的程度,该语句不再适合,容易造成sas崩溃等不良后果。 sasfile应用见下例: libname yugao 'c:/books'; data yugao.test;   do i=1 to 1000000;      nums=i;      chars='abcde';      output;   end;run;*****......
阅读全文
  • 05月
  • 14日
综合 ⁄ 共 55字 评论关闭
http://www.blogjava.net/supercrsky/articles/247449.html
阅读全文
  • 05月
  • 12日
综合 ⁄ 共 7560字 评论关闭
zz http://blog.csdn.net/fuzhufang/archive/2009/03/08/3969375.aspx   先来看下面这棵二叉树。如图 1 。现在我们要对它进行先序遍历。递归思想:就是把这个大树拆分成 N 棵小树,每棵小树都进行一次先序遍历。再把这些遍历连合起来就是这棵树的先序遍历了。同理中序遍历和后序遍历也是一样的方法。下面举例说明先序递归算法: 令先序遍历的结果等于 S ;                        图 1   对于图 2 这棵小树的先序遍历是: 1    2     3 S = 1       2      3                 图 2     但......
阅读全文
  • 04月
  • 24日
综合 ⁄ 共 646字 评论关闭
#include<algorithm> #include<iostream> #include<cstdio> using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } struct data{ int x,y,v; }e[10001]; int n,m,ans,fa[301]; inline bool cmp(data a,data b){return a.v<b.v;} inline int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);} int main(){ n=read();......
阅读全文
  • 04月
  • 24日
综合 ⁄ 共 635字 评论关闭
#include<iostream> #include<cstdio> #define inf 0x7fffffff using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int n,m,k,ans,a[2000001],b[2000001],fa[1000001]; inline int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]); } int main(){ n=read();m=read();k=read(); for(int i=1;i<=n;++i) fa[i]=i; for......
阅读全文
  • 04月
  • 12日
综合 ⁄ 共 4895字 评论关闭
一尾递归 以下是具体实例: 线性递归: long Rescuvie(long n) { return(n == 1) ? 1 : n * Rescuvie(n - 1); } 尾递归: long TailRescuvie(long n, long a) { return(n == 1) ? a : TailRescuvie(n - 1, a * n); //尾递归发生时,父函数的活动记录已经不会再被用到,可以直接被该尾递归的子函数覆盖。 } long TailRescuvie(long n) {//封装用的 return(n == 0) ? 1 : TailRescuvie(n, 1); } 尾递归可以变成迭代。 二递归问题栈化 递归问题非递归化的主要方式是栈模拟递归过程。优点是减少了函数调用的cpu开销。 我们......
阅读全文
  • 04月
  • 08日
综合 ⁄ 共 5194字 评论关闭
转载请注明出处: jiq•钦's technical Blog 本文将主要关注Curator是如何处理连接丢失和会话终止这两个关键问题的。 1.   连接丢失的处理 Curator中利用类ConnectionState来管理客户端到ZooKeeper集群的连接状态,其中用到原子布尔型变量来标识当前连接是否已经建立: private final AtomicBoolean isConnected=new AtomicBoolean(false); 在事件处理函数中(ConnectionState实现了Watcher接口)修改isConnected的值: @Override public void process(WatchedEvent event) { //逐个调用parentWatchers容器中的Watcher......
阅读全文
  • 04月
  • 05日
综合 ⁄ 共 1749字 评论关闭
Android获取图片指定大小的缩略图 在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的decodeFile方法,然后通过传递进去BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几分之一,即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。 然而,如果我们想取固定大小的缩略图就比较困难了,比如,我们想将不同大小的图片去出来的缩......
阅读全文
  • 03月
  • 29日
综合 ⁄ 共 1062字 评论关闭
1)将select 嵌入到PL/SQL中 定义了变量以后,可以使用 SELECT column1 INTO variable1 FROM table_name WHERE column1=xx      --返回唯一的一行记录的一个字段 如果是要讲返回的结果赋给一个记录表/表变量的话:如下 SELECT * BULK COLLECT INTO xx_table FROM table_name where ..... --返回多行记录 2)嵌入INSERt INTO语句 这个相对来说很简单,就是用variable来代替以前的value值 3)嵌入UPDATE语句 跟上面同理 4)DELETE语句     使用控制结构: 条件分支结构: IF vcondition THEN statement; ELSIF condition THEN statem......
阅读全文
  • 02月
  • 24日
综合 ⁄ 共 5888字 评论关闭
隐式转换(implicit conversion) short a=2000; int b; b=a; short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,编译器允许直接转换。 但若反过来 double a=2000; short b; b=a; 此时,是从8字节的double型转成2字节的short型变量,是窄化转换,编译器就会有warning了,如下所示,提醒程序员可能丢失数据。不过需要注意的是,有些隐式转换,编译器可能并......
阅读全文