zoukankan      html  css  js  c++  java
  • Codeforces Round #530 (Div. 2) (前三题题解)

    总评

    今天是个上分的好日子,可惜12:30修仙场并没有打。。。

    A. Snowball(小模拟)

    我上来还以为直接能O(1)算出来没想到还能小于等于0的时候变成0,那么只能小模拟了。从最高的地方进行高度的模拟,如果遇到石头就去判断一下会不会小于0其他没有什么好说的了

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
      ios::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
      int a,b,c,d,e,f;
      cin>>a>>b>>c>>d>>e>>f;
      for(int i=b;i>=0;i--)
      {
        a+=i;
        if(d==i)
        {
          a-=c;
          if(a<=0)
          a=0;
        }
        else if(f==i)
        {
          a-=e;
          if(a<=0)
          a=0;
        }
      }
      cout<<a;
    }
    

    B. Squares and Segments(数学)

    题目真是贼长啊,实际上就是找到最小的边能够映射成给定的正方形。上来我直接被样例的4给昏迷了,怎么还能4条边围成4个正方形,实际上2*2就可以

    进而想到了如果这个正方形的个数是个完全平方数那么就是sqrt(n)*2

    然后进行了一次推敲,如果不是完全平方数那么就用原本的个数减去最近的完全平方数然后去凑列,也就是说看差值能凑成多少最近的完全平方数的行的列,然后加上这些列就是边数

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
      ios::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
      int t;
      cin>>t;
      if(sqrt(t)==int(sqrt(t)))
      cout<<sqrt(t)*2;
      else
      cout<<int(sqrt(t))*2+(t-int(sqrt(t))*int(sqrt(t)))/int(sqrt(t))+(t%int(sqrt(t))!=0);
    }
    

    C. Postcard (字符串基础)

    这个地方真的是语法上有太多的漏洞,当时直接看了c++一半就来了。。。语法漏洞还是比较多。用了string类的erase后续的会向前移并且坐标也会前移,也就是说你erase了两个然后坐标又前移了两个,如果继续遍历的话会出错必须把坐标改回来

    然后我们来看看具体的情况有多少

    首先要看看特例也就是不可能的情况

    (1)如果去掉标记的字符还不能达到给定的长度,那么不可能

    (2)如果没有*但是长度比原本的字符的长度长那么不可能

    然后我们再去算可能的

    (1)去掉型,去掉合适的然后能够得到答案

    (2)增加型,存在。先把?的标记都去掉然后把第一个增加去掉其他的*即可

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
      ios::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
      string a;
      cin>>a;
      int len,ans=0,f=0;
      cin>>len;
      for(int i=0;i<a.size();i++)
      {
        if(isalpha(a[i]))
        ans++;
        else if(a[i]=='*')
        f++;
      }
      int mk=a.size()-ans;
      if(ans-mk>len||(ans<len&&!f))
      return cout<<"Impossible",0;
      if(ans-mk<=len&&ans>=len)
      {
        int re=ans-len;
        int now=1;
        for(int i=0;i<a.size();i++)
        {
          if(!isalpha(a[i]))
          {
            if(now<=re)
            now++,a.erase(i-1,2),i-=1;
            else
            a.erase(i,1);
          }
        }
        cout<<a;
      }
      if(ans<len)
      {
        for(int i=0;i<a.size();i++)
        if(a[i]=='?')
        a.erase(i-1,2),i-=1;
        int te=a.size()-f;
        for(int i=0;i<a.size();i++)
        if(a[i]=='*')
        {
          a.erase(i,1);
          if(te<len)
          a.insert(i,len-te,a[i-1]),te=len;
        }
        cout<<a;
      }
    }
    
  • 相关阅读:
    雪花算法解决的问题
    ServiceStack6000次限制破解
    电商 详情页面 nginx 配置 优先请求静态页,若没有请求动态页,同时生成静态页
    docker 使用汇总
    .net 5 新特性 -- EFCoreDBFirst 介绍 和 .NET5 AOP 5个Filter
    模板方法设计模式:定义抽象类-模板:定义业务流程,执行步骤--》各业务类继承抽象类,实现各自不同 具体的执行步骤
    通过代理模式(包一层),实现对业务增加功能如日志,异常处理,缓存结果,到达不破坏原有的业务代码,扩展了功能
    设计模式
    mongodb 基本操作(增删改查),事务,数据失效机制
    log4net.Config
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/10230327.html
Copyright © 2011-2022 走看看