ACM模板--我的第一份ACM模板.docxVIP

  • 3
  • 0
  • 约8.76千字
  • 约 12页
  • 2017-06-11 发布于北京
  • 举报
求逆序数int solve(int f,int l){ int mid=(f+l)/2,j=0,h1=f,h2=mid+1; int sum=0; if(f==l) return 0; sum+=(solve(f,mid)+solve(mid+1,l)); for(;h1=midh2=l;) {if(str[i][h1]=str[i][h2]){tem[j++]=str[i][h1];h1++;} else {tem[j++]=str[i][h2];h2++;sum+=mid-h1+1;} } while(h1=mid) {tem[j++]=str[i][h1++];} while(h2=l) {tem[j++]=str[i][h2++];} memcpy(str[i][f],tem,sizeof(char)*j); return sum;}经典宽搜visited[a.x][a.y]=0; while (s != e s=N*N e=N*N){ c = queue[s]; if (c.x == b.x c.y == b.y) break; for (i=0;i8;i++){ c = queue[s]; c.x += d[i][0]; c.y += d[i][1]; if (visited[c.x][c.y]==1 c.x=0 c.xl c.y=0 c.yl){ visited[c.x][c.y]=0; c.step++; queue[e++]=c;}} s++;}深搜一道void DFS(int a,int b){int i,j;if(putk == k){sum++;return;}visited[b]=1;for(i=a+1;in;i++)for(j=0;jn;j++)if(c[i][j]==# visited[j]==0){putk++;DFS(i,j);putk--;}visited[b]=0;}滑雪 DPint f(int a,int b){ int tem=0; if(visited[a][b]==1) return arr[a][b]; if(a-1=0 map[a-1][b]map[a][b]) if(temf(a-1,b)) tem=f(a-1,b); if(a+1r map[a+1][b]map[a][b]) if(temf(a+1,b)) tem=f(a+1,b); if(b-1=0 map[a][b-1]map[a][b]) if(temf(a,b-1)) tem=f(a,b-1); if(b+1c map[a][b+1]map[a][b]) if(temf(a,b+1)) tem=f(a,b+1); //此处切记不要把f写成arr!! visited[a][b]=1; arr[a][b]=tem+1; return arr[a][b];}最长上升子序列(二分)for(i=0;in;i++){left=1;right=len;while(left=right){mid=(left+right)/2;if(b[mid]a[i]) left=mid+1;else right=mid-1;}b[left]=a[i];f[i]=left;if(lenleft) len=left;if(ansleft) ans=left;}最长上升子序列void DP(int x){ int i,j=0,max=0; for(i=0;ix;i++) if(a[i]a[x]) h[j++]=f[i]; for(i=0;ij;i++) if(maxh[i]) max=h[i]; f[x]=max+1;}01背包int main(){int i,ans,j,t;scanf(%d%d,n,m);for(i=0;in;i++)scanf(%d%d,a[i].w,a[i].d);for(i=0;i=m;i++)f[0][i]=0;for(i=1,t=1;i=n;i++,t=1-t)for(j=0;j=m;j++){f[t][j]=f[1-t][j];if(j=a[i-1].w f[1-t][j-a[i-1].w]+a[i-1].df[t][j]) f[t][j]=f

文档评论(0)

1亿VIP精品文档

相关文档