• Codeforces Round #614 题解


    A题

    关注到本题的数据量不大但是数据很大,可以使用暴力+哈希的方法

    将关闭的餐厅放到map遍历

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int N=4e5+10;
    const int inf=0x3f3f3f3f;
    map<ll,int> m1; 
    int main(){
        int t;
        cin>>t;
        while(t--){
          int n;
          m1.clear();
          int k;
          int i;
          int s;
          int x;
          cin>>n>>s>>k;
          for(i=1;i<=k;i++){
              cin>>x;
              m1[x]=1;
          }
          int sum=0;
          for(i=s;i<=n;i++){
              if(m1[i]){
                  sum++;
              }
            else
            break;
          }
          if(i==n+1)
          sum=inf;
          int res=0;
          for(i=s;i>=1;i--){
              if(m1[i]){
                  res++;
              }
            else
            break;
          }
          if(i==0)
          res=inf;
         cout<<min(res,sum)<<endl; 
        } 
    } 
    View Code

    B题

    学习到了一点,当我们能推出公式但是做不出答案的时候,但是有很多人过,就可以合理猜测答案后证明,一般都是猜测一半或者1,本题答案正是每次1个

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int N=4e5+10;
    const int inf=0x3f3f3f3f;
    const double eps=0.004;
    int main(){
        int n;
        double sum=0;
        cin>>n;
        for(int i=1;i<=n;i++)
        sum+=1.0/i;
        cout<<sum<<endl;
    } 
    View Code

    C题

    这题数据量很大,但是很好看出解答方法,因为只有两排,只要根据情况判断左右,左上右上左下右下几个位置,我进行了暴力枚举发现超时。

    所以我的想法是如何能保留住之前情况下不合法的所有状态,并对每次q进行更新。

    所以我们可以用一个cnt来表述非法状态,然后枚举当前位置的几个隔壁方位,对总量进行修改。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int N=4e5+10;
    const int inf=0x3f3f3f3f;
    int g[3][N];
    int main(){
        int n,q;
        cin>>n>>q;
        int cnt=0;
        while(q--){
            int x,y;
            cin>>x>>y;
            int z=1;
            if(x==1)
            z=2;
            if(g[x][y]){
                cnt=cnt-g[z][y]-g[z][y-1]-g[z][y+1];
            }
            else
               cnt=cnt+g[z][y]+g[z][y-1]+g[z][y+1];
            if(cnt)
            cout<<"No"<<endl;
            else
            cout<<"Yes"<<endl;
            g[x][y]^=1;
        }
    } 
    View Code
  • 相关阅读:
    使用jquery插件操作哈希表Hashtable的应用
    学用 ASP.Net 之 "字符串" (1): 基础
    敬告
    jQuery 练习[一]: 准备工作
    学用 ASP.Net 之 "字符串" (2): string.Format
    jQuery 练习[二]: 获取对象(1) 基本选择与层级
    学用 ASP.Net 之 "字符串" (3): string 类的非扩展方法
    jQuery 练习[二]: 获取对象(2) 定位子对象
    一个分割文本文件的小程序 回复 "jellyang" 的问题
    Delphi 7 类库继承关系表
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/12217320.html
Copyright © 2020-2023  润新知