• 百度之星总结篇


    2016"百度之星" - 初赛(Astar Round2A)

    这是一场失败的百度之星,卡服务器,开场半小时,题目还没打开,然后接着就是卡矩阵快速幂,1个小时以后看出这题是矩阵快速幂,一个半小时A掉,然后第二题用优先队列维护一个拓扑序列,最后也没有调出来,直接1题滚粗。

    1001:http://acm.hdu.edu.cn/showproblem.php?pid=5690

    分析:看出来以后就是一个裸的矩阵快速幂f(n)=f(n-1)*10+x,开始被10^10的数据范围迷惑了

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <vector>
     6 #include <algorithm>
     7 #include <set>
     8 #include <map>
     9 #include <bitset>
    10 #include <cmath>
    11 #include <queue>
    12 #include <stack>
    13 using namespace std;
    14 
    15 typedef long long ll;
    16 typedef vector<ll> vec;
    17 typedef vector<vec> mat;
    18 
    19 ll x,m,c,mod;
    20 
    21 mat mul(mat &A,mat &B)
    22 {
    23     mat C(A.size(),vec(B[0].size()));
    24     for(int i=0;i<A.size();i++){
    25         for(int k=0;k<B.size();k++){
    26             for(int j=0;j<B[0].size();j++){
    27                 C[i][j]=(C[i][j]+A[i][k]*B[k][j])%mod;
    28             }
    29         }
    30     }
    31     return C;
    32 }
    33 
    34 mat pow(mat A,ll n)
    35 {
    36     mat B(A.size(),vec(A.size()));
    37     for(int i=0;i<A.size();i++){
    38         B[i][i]=1;
    39     }
    40     while(n>0){
    41         if(n&1) B=mul(B,A);
    42         A=mul(A,A);
    43         n>>=1;
    44     }
    45     return B;
    46 }
    47 
    48 int main()
    49 {    
    50     int t;
    51     cin>>t;
    52     for(int cas=1;cas<=t;cas++)
    53     {
    54         cin>>x>>m>>mod>>c;
    55         mat A(2,vec(2));
    56         A[0][0]=10;A[0][1]=0;
    57         A[1][0]=1;A[1][1]=1;
    58         A=pow(A,m-1);
    59         //cout<<A[1][0]<<endl;
    60         mat B(2,vec(2));
    61         B[0][0]=x;B[0][1]=x;
    62         B[1][0]=0;B[1][1]=0;
    63         A=mul(B,A);
    64         printf("Case #%d:
    ",cas);
    65         if(A[0][0]==c)
    66         printf("Yes
    ");
    67         else  printf("No
    ");
    68     }
    69     return 0;
    70 }
    View Code

    1006:http://acm.hdu.edu.cn/showproblem.php?pid=5695

    分析:这题其实是拓扑排序,将入度为0的优先入队,然后对与有特殊要求的用一个优先队列进行维护,每次将入度-1,这样就可以得到最大的。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <vector>
     6 #include <algorithm>
     7 #include <set>
     8 #include <map>
     9 #include <bitset>
    10 #include <cmath>
    11 #include <queue>
    12 #include <stack>
    13 using namespace std;
    14 const int maxn=100010;
    15 const int INF=1<<30;
    16 int vis[maxn];
    17 int t,n,m;
    18 int main()
    19 {
    20     cin>>t;
    21     while(t--)
    22     {
    23         cin>>n>>m;
    24         memset(vis,0,sizeof(vis));
    25         vector<int> g[maxn];
    26         for(int i=0;i<m;i++){
    27             int a,b;
    28             scanf("%d%d",&a,&b);
    29             vis[b]++;
    30             g[a].push_back(b);
    31         }
    32         priority_queue<int> que;
    33         for(int i=1;i<=n;i++)
    34             if(!vis[i])
    35                 que.push(i);
    36         long long ans=0;
    37         int minx=INF;
    38         while(!que.empty()){
    39             int p=que.top();
    40             que.pop();
    41             minx=min(p,minx);
    42             ans+=minx;
    43             for(int i=0;i<g[p].size();i++){
    44                 vis[g[p][i]]--;
    45                 if(!vis[g[p][i]])
    46                     que.push(g[p][i]);
    47             }
    48         }
    49         cout<<ans<<endl;
    50     }
    51     return 0;
    52 }
    View Code
  • 相关阅读:
    linux 命令终端提示符显示-bash-4.1#解决方法
    实践过配置成功的VNC安装配置
    技术团队新官上任之中层篇
    技术团队新官上任之基层篇
    代码可维护性的神秘面纱
    程序员,如何在工作中崭露头角?
    centos 安装git
    防火墙 -- centos7默认的firewalld
    防火墙 --Ubuntu的ufw工具
    golang的跨平台编译
  • 原文地址:https://www.cnblogs.com/wolf940509/p/5519237.html
Copyright © 2020-2023  润新知