1 /** 2 大意: 求[a,b] 之间 phi(a) + phi(a+1)...+ phi(b); 
3 思路: 快速求欧拉函数 4 **/ 5 6 #include 7 #include 8 using namespace std; 9 #define Max 
300000010 11 ...
                            
                            
                                分类:
其他好文   时间:
2014-05-14 00:47:07   
                                阅读次数:
287
                             
                    
                        
                            
                            
                                这种类似大整数的处理的问题还是比较常见的,这道题应该是非常简单的版本。
题目的要求是这样的,输入的vector靠前的位置是数字的高位,因此应该先求出长度,然后从后面往前算。维护一个变量保存进位,这我就不说了。结果的vector怎么办呢?因为最后有可能有个总的进位,比如999加1,结果的vector会比输入的多出一位,因此结果还是从前往后存简单一些。最后如果有进位,就多push_back一个1,然...
                            
                            
                                分类:
其他好文   时间:
2014-05-14 00:31:48   
                                阅读次数:
312
                             
                    
                        
                            
                            
                                【问题】
求一个给定的加权连通图的最小生成树问题。
【代码】
#include 
#include 
#define MAXNUM 1000
#define MAX_VERTEX_NUM 20
typedef char Vertextype;
typedef struct node  
{
	int weight;
}Adjmatrix[MAX_VERTEX_NUM][MAX_VERT...
                            
                            
                                分类:
其他好文   时间:
2014-05-13 23:55:49   
                                阅读次数:
464
                             
                    
                        
                            
                            
                                为了让编译器更好地优化循环,应该尽量让循环中减少判断,方法之一是将判断语句整合进表达式。还是这个例子:
for (int i = 0; i < 1000*10; i++)
{
     sum += data[i/1000][i%10];
}
假如我们需要加一个判断,只有非负整数才需要作求和运算:
for (int i = 0; i 
{
     if (data[i/10...
                            
                            
                                分类:
编程语言   时间:
2014-05-13 23:01:28   
                                阅读次数:
324
                             
                    
                        
                            
                            
                                最长公共子序列是动态规划基本题目,下面按照动态规划基本步骤解出来。
1.找出最优解的性质,并刻划其结构特征
序列a共有m个元素,序列b共有n个元素,如果a[m-1]==b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是a[:m-1]和b[:n-1]的最长公共子序列长度+1;如果a[m-1]!=b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是MAX(a[:m-1]和...
                            
                            
                                分类:
编程语言   时间:
2014-05-13 07:57:53   
                                阅读次数:
538
                             
                    
                        
                            
                            
                                题目链接:点击打开链接
暴力出奇迹。
正解应该是最近点对,以i点为x轴,sum[i](前缀和)为y轴,求任意两点间的距离。
先来个科学的暴力代码:
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 100050
#define ll __int64
ll a[N], su...
                            
                            
                                分类:
其他好文   时间:
2014-05-13 05:45:30   
                                阅读次数:
283
                             
                    
                        
                            
                            
                                三目运算来计算总页数 totalpage=sum/pagesize+sum%pagesize==0?0:1;//计算总页数,sum为总记录数
2.第page页的记录的起始位置和结束位置分别为:
pagesize*(page-1)+1;起始位置
pagesize*page;j、结束位置
注:
1.可以使用差集(minus)在数据库查询中实现分页,但效率低'
2.常用子查询将rownum作为另一结果集的字段来实现分页。
select ee.* from(select e.* , rownum rr...
                            
                            
                                分类:
其他好文   时间:
2014-05-13 05:14:41   
                                阅读次数:
303
                             
                    
                        
                            
                            
                                NFS与PRCNFS就是(NetworkFileSystem的缩写,最初是由sum这家公司所发展起来的。它最大的功能就是可能通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS是通过网络来传输数据的,那么NFS使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但是..
                            
                            
                                分类:
其他好文   时间:
2014-05-13 03:29:06   
                                阅读次数:
294
                             
                    
                        
                            
                            
                                可以用递归简洁的写出,但是会超时。
dp嘛。这个问题需要从后往前算,最右下角的小规模是已知的,边界也很明显,是最后一行和最后一列,行走方向的限制决定了这些位置的走法是唯一的,可以先算出来。然后不断的往前推算。
用distance[i][j]保存从当前位置走到最右下角所需的最短距离,状态转移方程是从distance[i+1][j]和distance[i][j+1]中选一个小的,然后再加上自身的。...
                            
                            
                                分类:
其他好文   时间:
2014-05-13 00:13:56   
                                阅读次数:
339
                             
                    
                        
                            
                            
                                dp[ i][j]=max(四个方向点)+1; 
四个方向上的点应该存在,且大于i,j,表示以i,j开始的点最长路径,递归的结束条件不用判断,因为 dp[][]最大数位置肯定 
直接结束,随后次大值肯定能结束,以此类推,所以可以执行,但自下而上动态规划不好写。因为要确定这些数的大小,麻烦。 #inclu...
                            
                            
                                分类:
其他好文   时间:
2014-05-12 21:21:23   
                                阅读次数:
323