考試反思(2019/1/26學習筆記)
阿新 • • 發佈:2019-01-26
公交 交換 一道 b- target pri -a += closed
1.公交換乘
一道很簡單的一維dp,很像這道題
1 /* 2 id:Dear_prince 3 */ 4 const int maxn=1e6+5; 5 int m,tot,a[205],f[212]; 6 void read() 7 { 8 for(int i=1;i<=10;i++) 9 a[i]=quick(); 10 m=quick(); 11 } 12 void work() 13 { 14 memset(f,0x3f,sizeof(f)); 15 for(int i=1;i<=10;i++) 16 f[i]=a[i];Code17 for(int i=1;i<=m;i++) 18 for(int j=1;j<=10;j++) 19 f[i+j]=min(f[i]+a[j],f[i+j]); 20 printf("%d",f[m]); 21 }
2.數字矩形
記搜
1 /* 2 id:Dear_prince 3 */ 4 #define INF 0x3f3f3f3f 5 const int maxn=1e6+5; 6 int n,m,f[105][505],a[105][505],ans=INF; 7 int dx[]={1,0,0};Code8 int dy[]={0,1,-1}; 9 void dfs(int x,int y) 10 { 11 if(x==n) 12 { 13 ans=min(ans,f[x][y]); 14 return; 15 } 16 if(x<1||x>n||y<1||y>m) 17 return; 18 if(f[x][y]>ans) 19 return; 20 for(int i=0;i<3;i++) 21 { 22 int xx=x+dx[i];23 int yy=y+dy[i]; 24 if(f[xx][yy]>f[x][y]+a[xx][yy]) 25 { 26 f[xx][yy]=f[x][y]+a[xx][yy]; 27 dfs(xx,yy); 28 } 29 } 30 } 31 int main() 32 { 33 input(); 34 n=quick(); 35 m=quick(); 36 memset(f,0x3f,sizeof(f)); 37 for(int i=1;i<=n;i++) 38 for(int j=1;j<=m;j++) 39 a[i][j]=quick(); 40 for(int i=1;i<=m;i++) 41 f[1][i]=a[1][i]; 42 for(int i=1;i<=m;i++) 43 dfs(1,i); 44 printf("%d",ans); 45 return 0; 46 }
3.排列
沒想到去重能有這麽多種姿勢
1 /* 2 id:Dear_prince 3 */ 4 const int maxn=1e6+5; 5 int t,tot,p,mark; 6 int a[20],f[5000][1200],b[15],ans,js[]={1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800}; 7 int main() 8 { 9 input(); 10 t=quick(); 11 while(t--) 12 { 13 memset(a,0,sizeof(a)); 14 memset(b,0,sizeof(b)); 15 memset(f,0,sizeof(f)); 16 tot=0; 17 ans=0; 18 char ch=getchar(); 19 if(ch==‘\n‘) 20 ch=getchar(); 21 while(ch!=‘ ‘) 22 { 23 a[tot++]=ch-‘0‘; 24 b[ch-‘0‘]++; 25 ch=getchar(); 26 } 27 p=quick(); 28 //tot--; 29 f[0][0]=1; 30 for(int i=0;i<(1<<tot);i++) 31 for(int k=0;k<p;k++) 32 if(f[i][k]) 33 for(int j=0;j<tot;j++) 34 if((i&(1<<j))==0) 35 f[i|(1<<j)][(k*10+a[j])%p]+=f[i][k]; 36 ans=f[(1<<tot)-1][0]; 37 for(int i=0;i<=9;i++) 38 ans/=js[b[i]]; 39 printf("%d\n",ans); 40 } 41 return 0; 42 }Code
考試反思(2019/1/26學習筆記)