ACM模版
昨日明眸
个人爱好
展开
-
博弈,求SG值
#include using namespace std; #define MAX 1005 /* 计算从1-n范围内的SG值。 Array(存储可以走的步数,Array[0]表示可以有多少种走法) Array[]需要从小到大排序 /*HDU1847博弈SG函数 1.可选步数为1-m的连续整数,直接取模即可,SG(x) = x % (m+1); 2.可选步数为任意步,SG转载 2016-07-29 16:48:22 · 332 阅读 · 0 评论 -
lcs最长公共子序列
#include #include #include using namespace std;char s1[1000],s2[1000];int len1,len2,dp[1000][1000],mark[1000][1000];//如果数据太大,dp数组可以考虑滚动数组void LCS(){ int i,j; memset(dp,原创 2016-08-09 21:31:46 · 355 阅读 · 0 评论 -
尺取法模版
for (int i = 0 ; i < n ; i++) { int id = (a[i]-'a'); //记录首地址 b[id]++; //将出现字符 +1; if (judge()) //若满足条件则开始进行收缩 { while原创 2016-08-11 09:58:25 · 272 阅读 · 0 评论 -
1134 最长递增子序列
1134 最长递增子序列基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。Input第1行:1个数N,N为序列的长度(2 <=原创 2016-08-11 21:05:27 · 452 阅读 · 0 评论 -
1005 大数加法(java写大数问题真有优势)
1005 大数加法基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题给出2个大整数A,B,计算A+B的结果。Input第1行:大数A第2行:大数B(A,B的长度 Output输出A + BInput示例68932147586468711654886Output原创 2016-08-13 09:52:03 · 419 阅读 · 0 评论 -
1137 矩阵乘法
1137 矩阵乘法基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果。Input第1行:1个数N,表示矩阵的大小(2 <= N <= 100)第2 - N + 1行,每行N个数,对应M1的1行(0 <= M1[i] <= 1000)第原创 2016-08-15 18:07:05 · 397 阅读 · 0 评论 -
HDU 1575 Tr A (矩阵乘法)
Tr ATime Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 11 Accepted Submission(s) : 7Font: Times New Roman | Verdana | GeorgiaFont S原创 2016-11-13 13:56:50 · 246 阅读 · 0 评论 -
母函数
#include#include#includeusing namespace std;const int N=50;int c1[N+10],c2[N+10],num[30];int main(){ //freopen("input.txt","r",stdin); int t; scanf("原创 2017-04-13 20:03:07 · 544 阅读 · 1 评论 -
Light OJ 1067 Combinations (乘法逆元)
DescriptionGiven n different objects, you want to take k of them. How many ways to can do it?For example, say there are 4 items; you want to take 2 of them. So, you can do it 6 ways.Take 1, 2原创 2016-08-08 14:59:16 · 243 阅读 · 0 评论 -
最短路dijkstra算法
void dijkstra(int u){ memset(used,0,sizeof(used)); memset(dis,INF,sizeof(dis)); int pos=u; for(i=0;i dis[i]=map[u][i]; } dis[u]=0;原创 2016-08-09 21:23:16 · 265 阅读 · 0 评论 -
DFS与BFS模板
[cpp] view plain copy print?#include #include #include #include using namespace std; const int maxn=100; bool vst[maxn][maxn]; // 访问标记 int dir[4][2]={0,1,0,-1,1,0,转载 2016-07-28 18:04:09 · 372 阅读 · 0 评论 -
二分图最大匹配(匈牙利算法)
二分图最大匹配(匈牙利算法) (1)前提说明:(用到的定义说明)1。二部图: 如果图G=(V,E)的顶点集何V可分为两个集合X,Y,且满足 X∪Y = V, X∩Y=Φ,则G称为二部图;图G的边集用E(G)表示,点集用V(G)表示。2。匹配: 设M是E(G)的一个子集,如果M中任意两条边在G中均不邻接,则称M是G的一个匹配。M中的—条边的两个端点叫做在转载 2016-07-22 21:29:40 · 608 阅读 · 0 评论 -
1174 区间中最大的数(RMQ)
1174 区间中最大的数基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题给出一个有N个数的序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,最大的数是多少。例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题)Inp原创 2016-08-15 17:15:13 · 332 阅读 · 0 评论 -
中国剩余定理
中国剩余定理原理:令某数为M,令素数为A,B,C,D,…,Z,已知M/A余a,M/B余b,M/C余c,M/D余d,…,M/Z余z。求M=?因为A,B,C,D,…,Z为不同的素数,故,B*C*D*…*Z不可能被A整除,有等差数列(B*C*D*…*Z)+(B*C*D*…*Z)N中取A个连续项,这A个连续项分别除以A的余数必然存在0,1,2,3,…,A-1,所以,从这A个连续原创 2016-08-15 15:18:09 · 584 阅读 · 0 评论 -
最小生成树prim算法实现
#include #include #define MaxInt 0x3f3f3f3f#define N 110//创建map二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问int map[N][N],low[N],visited[N];int n;int prim(){int i,j,pos,min,result=0原创 2016-08-03 10:22:37 · 258 阅读 · 0 评论 -
字典数入门开始题目1 : Trie树
题目1 : Trie树时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个原创 2016-08-09 17:15:42 · 320 阅读 · 0 评论 -
#1015 : KMP算法
#1015 : KMP算法时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断一段文字(原创 2016-08-09 18:43:03 · 238 阅读 · 0 评论 -
快速幂
int fun1(__int64 a,__int64 b,__int64 mod) { __int64 ans=1; while(b) { if(b&1) { ans=ans*a%mod; } a=原创 2016-08-09 21:20:49 · 213 阅读 · 0 评论 -
欧拉函数算法
int oula(int n) { int res=n; for(int i=2;i*i {任何和数素因子均不大于n的平方根: if(n%i==0) { n/=i; res=res-res/i;(筛去含有该因子的所有数. while(n%i==0原创 2016-08-09 21:22:05 · 430 阅读 · 0 评论 -
指数型母函数
#include#include#include#includeusing namespace std;#define manx 13double a[manx],b[manx]; /// a[] 代表第一个式子的系数long long num[manx];long long fan(int n){ long long sum=1; for(原创 2017-04-14 17:09:55 · 532 阅读 · 1 评论