zoukankan      html  css  js  c++  java
  • 2018/11/16 集训队周五第五次测试赛补题题解

    这次基本提高组的题了。。。

    A 无线网路发射器选址

    这个题的数据有点水,直接两次三个for即可。第一次三个for是找到最大值,第二次三个for是寻找个数

    完整代码

    #include <bits/stdc++.h>
    using namespace std;
    struct node
    {
      int x,y,sum;
    }G[100];
    int main()
    {
      ios::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
      int d,maxn=-1,js=0;
      cin>>d;
      int n;
      cin>>n;
      for(int i=0;i<n;i++)
      cin>>G[i].y>>G[i].x>>G[i].sum;
      for(int i=0;i<=128;i++)
      for(int j=0;j<=128;j++)
      {
        int ans=0;
        for(int k=0;k<n;k++)
        {
          if(G[k].x>=i-d&&G[k].x<=i+d&&G[k].y>=j-d&&G[k].y<=j+d)
          ans+=G[k].sum;
        }
        maxn=max(maxn,ans);
      }
      for(int i=0;i<=128;i++)
      for(int j=0;j<=128;j++)
      {
        int ans=0;
        for(int k=0;k<n;k++)
        {
          if(G[k].x>=i-d&&G[k].x<=i+d&&G[k].y>=j-d&&G[k].y<=j+d)
          ans+=G[k].sum;
        }
        if(ans==maxn)
        js++;
      }
      cout<<js<<" "<<maxn;
    }
    

    C 寻找道路

    一眼看上去不是spfa的裸题吗,实际上并不是。。。具体解释在另一个题解中

    完整代码

    #include <bits/stdc++.h>
    using namespace std;
    struct node
    {
      int to,cost;
    };
    map<long long,long long> vis,bk,bk1,dis,bk2;
    queue<int> q,qq;
    vector <node> G1[10005];
    vector <node> G2[10005];
    const int inf=INT_MAX;
    int main()
    {
      ios::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
      int n,m;
      cin>>n>>m;
      while(m--)
      {
        int t1,t2;
        cin>>t1>>t2;
        G1[t2].push_back((node){t1,1});
        G2[t1].push_back((node){t2,1});
      }
      int s,e;
      cin>>s>>e;
      for(int i=1;i<=n;i++)
      dis[i]=i==s?0:inf;
      qq.push(e);
      bk2[e]=1;
      while(qq.size())
      {
        int f=qq.front();
        qq.pop();
        bk[f]=1;
        vis[f]=1;
        for(int i=0;i<G1[f].size();i++)
        {
            vis[G1[f][i].to]=1;
            bk[G1[f][i].to]=1;
            if(!bk2[G1[f][i].to])
            {
              bk2[G1[f][i].to]=1;
              qq.push(G1[f][i].to);
            }
        }
      }
      for(int i=1;i<=n;i++)
      {
        if(!vis[i])
        for(int j=0;j<G1[i].size();j++)
        if(vis[G1[i][j].to])
        bk[G1[i][j].to]=0;
      }
      q.push(s);
      while(q.size())
      {
        int p=q.front();
        q.pop();
        bk1[p]=0;
        if(bk[p])
        {
          for(int i=0;i<G2[p].size();i++)
          {
            if(dis[G2[p][i].to]>dis[p]+G2[p][i].cost)
            {
              dis[G2[p][i].to]=dis[p]+G2[p][i].cost;
              if(!bk1[G2[p][i].to])
              {
                bk1[G2[p][i].to]=1;
                q.push(G2[p][i].to);
              }
            }
          }
        }
       }
      if(dis[e]<INT_MAX)
      cout<<dis[e];
      else
      cout<<-1;
    }
    
  • 相关阅读:
    一个不错的谈架构的链接
    监控报警平台设计思路
    从数据库到NoSQL思路整理
    大数据流式计算:关键技术及系统实例
    接口和类
    学习的逻辑
    [kuangbin带你飞]专题五 并查集 J
    [kuangbin带你飞]专题五 并查集 E
    [kuangbin带你飞]专题五 并查集 D
    [kuangbin带你飞]专题五 并查集 C
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/9979358.html
Copyright © 2011-2022 走看看