zoukankan      html  css  js  c++  java
  • 2020牛客寒假集训营1

    B.kotori和bangdream

    https://ac.nowcoder.com/acm/contest/3002/B

    大水题

    #include <iostream>
    #include <cstring>
    #include <math.h>
    #include <algorithm>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <map>
    #include <set>
    #define ll long long
    const int N = 1e6 + 10;
    using namespace std;
    double n,a,x,b;
    double ans1,ans2;
    int main() {
      ios::sync_with_stdio(false);
      cin>>n>>x>>a>>b;
      ans1=n*a;
      ans2=n*b;
      double ans=ans1*x/100+ans2*(100-x)/100;
      printf("%.2lf",ans);
        return 0;
    }

    D.hanayo和米饭

    https://ac.nowcoder.com/acm/contest/3002/D

    签到题

    #include <iostream>
    #include <cstring>
    #include <math.h>
    #include <algorithm>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <vector>
    #define ll long long
    using namespace std;
    const int N=1e6+10;
    int n;
    int a[N];
    int t;
     
    int main(){
      cin>>n;
      memset(a,0,n);
     for(int i=1;i<=n-1;i++){
        cin>>t;
        a[t]=t;
     }
     for(int i=1;i<=n;i++){
        if(i!=a[i]){
            cout<<i<<endl;
            return 0;
        }
     }
    return 0;
    }

    A.honoka和格点三角形

    https://ac.nowcoder.com/acm/contest/3002/A

    满足"好三角形"的情况只有两种:

    1.底为1,高为2的三角形

    2.底为2,高为1的三角形

    然后自己去画图数一数就好了

    #include <iostream>
    #include <cstring>
    #include <math.h>
    #include <algorithm>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <map>
    #include <set>
    #define ll long long
    const int N = 1e6 + 10;
    using namespace std;
    ll n,m;
    ll ans;
    ll mod=1e9+7;
    int main() {
      ios::sync_with_stdio(false);
      cin>>n>>m;
         ans=(n-2)*(m-1)*4%mod+(n-1)*(m-2)*4%mod;
        ans=(ans+2*(n-1)*(m-2)%mod*(m-2)%mod+2*(m-1)*(n-2)%mod*(n-2)%mod)%mod;
        ans=(ans+2*(n-2)*(m-1)%mod*(m-2)%mod+2*(m-2)*(n-1)%mod*(n-2)%mod)%mod;
      cout<<ans;
        return 0;
    }

    E.rin和快速迭代

    https://ac.nowcoder.com/acm/contest/3002/E

    直接暴力枚举到sqrt(n),要特别注意当枚举完的所得的因数是奇数时.

    #include <iostream>
    #include <cstring>
    #include <math.h>
    #include <algorithm>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <map>
    #include <set>
    #define ll long long
    const int N = 1e6 + 10;
    using namespace std;
    ll n;
    int a,b;
    int main() {
      ios::sync_with_stdio(false);
      cin>>n;
      while(n!=2){
          int flag=1;
          for(ll i=1;i*i<=n;i++){
              if(n%i==0){
                  if(i*i==n)
                      flag=0;
                  a++;
              }
          }
          if(flag==1) n=2*a;
          else      n=2*(a-1)+1;
          a=0;
          b++;
      }
      cout<<b;
        return 0;
    }

    G.eli和字符串

    https://ac.nowcoder.com/acm/contest/3002/G

    这道题很巧,和几天CF上的一道题非常的相似,这儿也一并提供原题,有兴趣的可以去看看:http://codeforces.com/contest/1295/problem/C

    这题我们首先先将string中每个字母出现的次数存进一个数组当中,并记录字母出现最多的次数m,如果题目所给的t>m,直接输出-1.

    接下来我们用一个二维的vector来记录string中每个字母的位置,然后从string的第一个字母开始进行遍历,如果当前字母之后出现的次数小与t,那么就不满足,直接遍历下一个.

    否则,我们直接用二维的vector来找到当前字母之后的第t个相同字母的位置,并减去当前字母的位置,得到满足条件的连续子串的长度,用一个min函数来记录答案.

    其实本题对于像我这样的菜鸡最大的难点在于这个二维vector的使用,大家可以去了解一下

    #include <iostream>
    #include <cstring>
    #include <math.h>
    #include <algorithm>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <map>
    #include <set>
    #define ll long long
    const int N = 1e6 + 10;
    using namespace std;
    int n,t;
    int num[26];
    int m=-1;
    int ans=N;
    int a[30]={0};
    string s;
    vector<int> A[N];
    int main() {
        memset(num,0,26);
        for(int i=0;i<26;i++)
            A[i].clear();
      ios::sync_with_stdio(false);
      cin>>n>>t>>s;
      for(int i=0;i<n;i++){
          num[s[i]-'a']++;
          m=max(num[s[i]-'a'],m);
          A[s[i]-'a'].push_back(i);
      }
      if(t>m){
          cout<<-1;
          return 0;
      }
      else{
          for(int i=0;i<n;i++){
              if(num[s[i]-'a']>=t && t<=num[s[i]-'a']-a[s[i]-'a']){
                  a[s[i]-'a']++;
                 ans=min(A[s[i]-'a'][a[s[i]-'a']+t-2]-i+1,ans);
              }
          }
          cout<<ans;
      }
        return 0;
    }

    H.nozomi和字符串

    https://ac.nowcoder.com/acm/contest/3002/H

    这题是一道滑动窗口的经典题,大家可以去看看"滑动窗口"这个概念,具体的等我以后有时间再来补

    #include <iostream>
    #include <cstring>
    #include <math.h>
    #include <algorithm>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <map>
    #include <set>
    #define ll long long
    const int N = 1e6 + 10;
    using namespace std;
    int n,k;
    string s;
    int t[N];
    int main() {
      ios::sync_with_stdio(false);
       cin>>n>>k>>s;
       int l=0;
       int r=0;
       int m=0;
       int ml=0;
       while(r<s.size()){
           t[s[r]]++;
           m=max(m,t[s[r]]);
           while(r-l+1-m>k){
             t[s[l]]--;
               l++;
           }
           ml=max(ml,r-l+1);
           r++;
       }
       cout<<ml;
        return 0;
    }
  • 相关阅读:
    DOS批处理中%cd%和%~dp0的区别
    DIH处理包含回车符换行符html标签内容的文本
    国内可用免费语料库(已经整理过,凡没有标注不可用的链接均可用)
    TextRank算法提取关键词的Java实现
    贝叶斯推断及其互联网应用(三):拼写检查
    朴素贝叶斯分类器的应用
    TF-IDF与余弦相似性的应用(三):自动摘要
    TF-IDF与余弦相似性的应用(二):找出相似文章
    TF-IDF与余弦相似性的应用(一):自动提取关键词
    搜索引擎与网页文本分词的原理
  • 原文地址:https://www.cnblogs.com/lr599909928/p/12264177.html
Copyright © 2011-2022 走看看