基础算法
苏子散人
爱古风,爱代码。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
kmp
#include #include using namespace std; #define MAX 1000001 char s[MAX],p[MAX]; int next1[MAX]; bool f; void getnext(char p[]) { next1[0]=0; int j=0,k=0; for(int i=1;i<strlen(p);i++) { while(k>0&原创 2016-03-30 23:53:10 · 249 阅读 · 0 评论 -
codeforces711D Directed Rodes(dfs)
//每个顶点只有一个出度 #include #include #include #include using namespace std; const int maxn=2e5+1; int mod=1e9+7; int cnt; int s[maxn]; int vis[maxn],num[maxn]; queue cycle; long long pow(long long a,long l原创 2016-09-11 00:44:46 · 313 阅读 · 0 评论 -
hdu5536(字典树的插入和删除)
#include #include #include using namespace std; typedef long long LL; const int N=35000; struct Trie{ LL ch[N][2],sz; int val[N],ed[N]; void Init(){ memset(ch[0],0,sizeof(ch[0])); sz=1;}原创 2016-07-25 14:28:13 · 755 阅读 · 0 评论 -
poj3061(尺取法)
#include using namespace std; const int maxn=1e5+10; #define inf 0xfffffff int a[maxn]; long long sum[maxn]; int main() { int n,T,i; long long s; cin>>T; while(T--) { cin>>n>>s; sum[0]=0;原创 2016-07-24 13:27:15 · 312 阅读 · 0 评论 -
两只船的装载问题
#include using namespace std; int n,c1,c2,w[20],a[20]; int maxw; void check() { int i,weight=0; for(i=0;i<n;i++) { if(a[i]) weight+=w[i]; } if(weight<=c1) if(weight>maxw)原创 2016-06-14 16:17:34 · 1708 阅读 · 0 评论 -
八皇后问题
#include #include using namespace std; int vis_c[10],vis_r[10]; int queen[10]; int num; void dfs(int row,int col,int cnt) { if(cnt==8) { num++; return; } if(row>=7)return;//8行已经全部放好皇后 int i=原创 2016-06-14 13:22:07 · 330 阅读 · 0 评论 -
棋盘覆盖(递归的应用)
当k>0时,将2k×2k棋盘分割为4个2k-1×2k-1 子棋盘(a)所示。 特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。为了将这3个无特殊方格的子棋盘转化为特殊棋盘,可以用一个L型骨牌覆盖这3个较小棋盘的会合处,如 (b)所示,从而将原问题转化为4个较小规模的棋盘覆盖问题。递归地使用这种分割,直至棋盘简化为棋盘1×1。 #include usi翻译 2016-06-13 20:54:33 · 882 阅读 · 0 评论 -
poj1321
方法1 #include #include using namespace std; int k,n; int viscol[8]; char s[8][8]; int num; void dfs(int row,int cnt)//row为当前行,cnt为已经放的棋子个数 { if(cnt==k) { num++; return; } if(row>=n)return;//翻译 2016-06-06 16:20:06 · 270 阅读 · 0 评论 -
poj3258 二分(连续区间求和)
#include #include using namespace std; #define maxn 50010 long long a[maxn],L,b[maxn]; int m,n; bool ok(long long x) { int flag=0,pre=0; long long sum=0; for(int j=1;j<=n+1;j++) {原创 2016-06-28 00:38:45 · 389 阅读 · 0 评论 -
poj3009DFS
#include using namespace std; int w,h,min1; int s[25][25],map[50]; int to[4][2]={0,-1,0,1,-1,0,1,0}; void dfs(int x,int y,int cnt) { int i,xx,yy; if(cnt>10) return; for(i=0;i<4;i++) { xx=x+to[i]原创 2016-06-06 00:09:44 · 309 阅读 · 0 评论 -
HDU1258
#include #include using namespace std; int s[15],map[15]; int t,n,flag; int cmp(int a,int b) { return a>b;} void dfs(int i,int total,int k) { int j; if(total>t) return; if(total==t) { flag=1;原创 2016-06-05 12:13:49 · 439 阅读 · 0 评论 -
poj2785
二分法 #include #include #include using namespace std; int s[4002][4],x[4000*4000],y[4000*4000]; int bin(int key,int b[],int n); int main() { int n,i,j; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<原创 2016-06-24 16:58:20 · 294 阅读 · 0 评论 -
kmp2
#include #include #include #define MAX 1000001 using namespace std; char s[MAX],p[MAX]; int next2[MAX]; void getnext(char p[]) { int i=0,k=-1; next2[0]=-1; while(i<strlen(p)) { if(k==-1||p[i]==p转载 2016-03-31 13:44:31 · 420 阅读 · 0 评论 -
百练1603 floyd算法基础
#include<iostream> #include<cstring> using namespace std; #define INF 0x3f3f3f #define n 20 const int N=25; int dist[N][N]; void init() { for(int i=0;i<=n;i++) for(int j=0...原创 2018-07-23 22:13:12 · 245 阅读 · 0 评论
分享