zoukankan      html  css  js  c++  java
  • 2017-0722 模拟赛

    Digits

    (digits.cpp/c/pas)

    Description

    给一个关于 的多项式,并给定一个 ,求该多项式在带入该 时的值最后 位数字。

    Input

    第一行两个整数 、 ;
    之后的 行,每行两个数 和 ,表示多项式的一项 ;
    最后一行一个整数 。
    Output
    输出 行,按顺序输出该多项式带入 后值的最后 位数字,若不足 位,则高位补零。
    Example
    digits.in digits.out
    2 1
    3 2
    1 5
    3
    0
    附加样例见选手目录下『digits』文件夹。
    Hint
    对于 的数据, ;
    对于 的数据, 。

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 #define LL long long
     7 const int N(100005);
     8 LL n,k,x,a[N],b[N];
     9 LL tot,mod=1;
    10 int ans[10];
    11 
    12 LL Qpow(LL a,LL b)
    13 {
    14     LL ret=1,base=a;
    15     for(;b;b>>=1)
    16     {
    17         if(b&1) ret=(ret*base)%mod;
    18         base=(base*base)%mod;
    19     }
    20     return ret;
    21 }
    22 
    23 void read(LL &x)
    24 {
    25     LL ch=getchar();x=0;
    26     for(;ch>'9'||ch<'0';) ch=getchar();
    27     for(;ch>='0'&&ch<='9';ch=getchar()) x=ch-'0'+x*10;
    28 }
    29 
    30 int main()
    31 {
    32     freopen("digits.in","r",stdin);
    33     freopen("digits.out","w",stdout);
    34     read(n); read(k);
    35     for(int i=1;i<=n;i++) read(a[i]),read(b[i]);
    36     read(x);
    37     for(int i=1;i<=k;i++) mod*=10;
    38     for(int i=1;i<=n;i++) tot=(tot%mod+a[i]%mod*Qpow(x,b[i])%mod)%mod;
    39     for(int i=k;i&&tot;i--) ans[i]=tot%10,tot/=10;
    40     for(int i=1;i<=k;i++) printf("%d
    ",ans[i]);
    41     return 0;
    42 }
    View Code


    Equation
    (equation.cpp/c/pas)
    Description
    求方程 在 内有多少组正整数解。
    Input
    一行七个整数 。
    Output
    一行一个整数,原方程有多少正整数解。
    Example
    equation.in equation.out
    10 -24 74 -25 22 -7 -22 5
    附加样例见选手目录下『equation』文件夹。
    Hint
    对于 的数据,方程无解;
    对于 的数据, ;
    对于 的数据, 。

     1 #include <algorithm>
     2 #include <cstdio>
     3 #include <map>
     4 
     5 using namespace std;
     6 
     7 #define LL long long
     8 int k,a[7],ans;
     9 LL tot,cx[666*666];
    10 map<LL,LL>ma;
    11 
    12 int main()
    13 {
    14     freopen("equation.in","r",stdin);
    15     freopen("equation.out","w",stdout);
    16     scanf("%d",&k);
    17     for(int i=1;i<=6;i++) scanf("%d",a+i);
    18     for(int x=1;x<=k;x++)
    19       for(int y=1;y<=k;y++)
    20         for(int z=1;z<=k;z++)
    21         {
    22             tot=a[1]*x+a[3]*y+a[5]*z;
    23             ma[tot]++;
    24         }
    25     for(int x=1;x<=k;x++)
    26       for(int y=1;y<=k;y++)
    27         for(int z=1;z<=k;z++)
    28         {
    29             tot=a[2]*x+a[4]*y+a[6]*z;
    30             ans+=ma[tot];
    31         }
    32     printf("%d",ans);
    33     return 0;
    34 }
    View Code


    Graph
    ( graph .cpp/c/pas)
    Description
    小 Y 又开始了一段旅途。
    这次,他要经过一个图,从 号点到达 号点,每个点设有休息站。
    小 Y 计划用最多 天走完全程,除第 天外,每一天小 Y 都必须在休息站过夜。所以,一段路
    必须在同一天走完。
    小 Y 的体力有限,他希望走的路程最大的一天中走的路尽可能少,请求出这个最小值。
    Input
    第一行三个整数 、 、 表示图的顶点数、边数、天数。
    从第二行开始,之后的 行,每行三个整数 、 、 表示从 和 间有一条双向道路,长度
    为 。
    Output
    一行一个正整数,如果小 Y 能走完全程,输出走的路程最大的一天中走的路程最小值,否则输
    出 。
    Example
    graph.in graph.out
    3 2 4
    3 2 4
    1 2 1
    4
    附加样例见选手目录下『graph』文件夹。
    Hint
    对于 的数据, ;
    对于 的数据, ;
    对于 的数据, , , ;
    保证没有重边和自环。

      1 #include <algorithm>
      2 #include <cstdio>
      3 
      4 using namespace std;
      5 
      6 const int M(200005);
      7 const int N(7555);
      8 int n,m,k,u,v,w,ans=-1;
      9 void read(int &x)
     10 {
     11     int ch=getchar();x=0;
     12     for(;ch>'9'||ch<'0';) ch=getchar();
     13     for(;ch>='0'&&ch<='9';ch=getchar()) x=ch-'0'+x*10;
     14 }
     15 
     16 int head[N],sumedge;
     17 struct Edge
     18 {
     19     int v,next,w;
     20     Edge(int v=0,int next=0,int w=0):
     21         v(v),next(next),w(w){}
     22 }edge[N<<1];
     23 void ins(int u,int v,int w)
     24 {
     25     edge[++sumedge]=Edge(v,head[u],w);
     26     head[u]=sumedge;
     27 }
     28 struct E
     29 {
     30     int u,v,w;
     31     E(int u=0,int v=0,int w=0): u(u),v(v),w(w){}
     32 }road[M];
     33 bool cmp(E a,E b)
     34 {
     35     return a.w<b.w;
     36 }
     37 
     38 int cnt,fa[N];
     39 int find(int x)
     40 {
     41     return x==fa[x]?x:fa[x]=find(fa[x]);
     42 }
     43 bool K()
     44 {
     45     for(int i=1;i<=m;i++)
     46     {
     47         int u=road[i].u,fx=find(u);
     48         int v=road[i].v,fy=find(v);
     49         if(fx==fy) continue;
     50         cnt++;   fa[fx]=fy;
     51         ins(u,v,road[i].w);
     52         ins(v,u,road[i].w);
     53         if(cnt==n-1) return 1;
     54     }
     55     return 0;
     56 }
     57 
     58 int deep[N],dis[N][25],dad[N][25];
     59 void DFS(int x)
     60 {
     61     deep[x]=deep[dad[x][0]]+1;
     62     for(int i=0;dad[x][i];i++)
     63     {
     64         dad[x][i+1]=dad[dad[x][i]][i];
     65         dis[x][i+1]=max(dis[x][i],dis[dad[x][i]][i]);
     66     }
     67     for(int i=head[x];i;i=edge[i].next)
     68     {
     69         int v=edge[i].v;
     70         if(deep[v]) continue;
     71         dad[v][0]=x;
     72         dis[v][0]=edge[i].w;
     73         DFS(v);
     74     }
     75 }
     76 int LCA(int x,int y)
     77 {
     78     int ret=0;
     79     for(int i=24;i>=0;i--)
     80         if(dad[x][i]!=dad[y][i])
     81         {
     82             ret=max(ret,max(dis[x][i],dis[y][i]));
     83             x=dad[x][i]; y=dad[y][i];
     84         }
     85     return max(ret,max(dad[x][0],dad[y][0]));
     86 }
     87 
     88 int main()
     89 {
     90     freopen("graph.in","r",stdin);
     91     freopen("graph.out","w",stdout);
     92     read(n); read(m); read(k);
     93     for(int i=1;i<=m;i++)
     94     {
     95         read(u),read(v),read(w);
     96         road[i]=E(u,v,w);
     97     }
     98     sort(road+1,road+m+1,cmp);
     99     for(int i=1;i<=n;i++) fa[i]=i;
    100     if(K()||find(1)==find(n))
    101         DFS(1),ans=LCA(1,n);
    102     printf("%d",ans);
    103     return 0;
    104 }
    View Code
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    php模拟http请求的方法
    快递100接口开发
    live555从RTSP服务器读取数据到使用接收到的数据流程分析
    VLC源码分析知识总结
    VLC播放器架构剖析
    Android Audio System 之一:AudioTrack如何与AudioFlinger
    VLC各个Module模块之间共享变量的实现方法
    流媒体开发之--HLS--M3U8解析(2): HLS草案
    M3U8格式讲解及实际应用分析
    通用线程:POSIX 线程详解,第 3 部分 条件互斥量(pthread_cond_t)
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7220832.html
Copyright © 2011-2022 走看看