zoukankan      html  css  js  c++  java
  • 考试反思(2019/1/26学习笔记)

    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];
    17     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 }
    Code

    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};
     8 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 }
    Code

    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=='
    ')
    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
    ",ans);
    40     }
    41     return 0;
    42 }
    Code
  • 相关阅读:
    全角 半角转换 .net
    [下载]微软Windows命令行PowerShell 2.0
    logstash收集java程序日志
    使用filebeat替代logstash收集日志
    Kibanna图形统计
    MySQL Blind Sql Injection
    超级后门泄露版
    HACKING WITH JAVASCRIPT
    Exploiting Common Vulnerabilities in PHP Applications
    3389安全记录批处理
  • 原文地址:https://www.cnblogs.com/Achensy/p/10323096.html
Copyright © 2011-2022 走看看