zoukankan      html  css  js  c++  java
  • “科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛(2020-5-10)

    “科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛

    地址:https://ac.nowcoder.com/acm/contest/5477#question

    A 张老师和菜哭武的游戏

    1到n中,如果p能被拿走,则一定满足p=x*a+y*b,所以p一定是a,b最小公因数的倍数,所以最后判断奇偶即可

     1 #include<bits/stdc++.h>
     2 #include<iostream>
     3 #include<vector>
     4 #include<queue>
     5 #include<string>
     6 #include<list>
     7 #include<set>
     8 #include<map>
     9 #include<stack>
    10 # define PI 3.14159265358979323846
    11 using namespace std;
    12 typedef long long ll;
    13 const int maxn = 2e5+10;
    14 const int mod = 11092019;
    15 int main()
    16 {
    17     int t;
    18     cin>>t;
    19     while(t--)
    20     {
    21         int n,a,b;
    22         cin>>n>>a>>b;
    23         int f = n/__gcd(a,b);
    24         if(f%2==0) cout<<"No"<<endl;
    25         else cout<<"Yes"<<endl;
    26     }
    27     return 0;
    28 } 

     

    B 伤害计算

    以“+”号分割字符串,分为两类:含有d和没有d,注意:最好全程都用int,最后/2;

    输出浮点数的时候,如果有1000000之类的数可能会输出成1e+06的形式 

     1 #include<bits/stdc++.h>
     2 #include<iostream>
     3 #include<vector>
     4 #include<queue>
     5 #include<string>
     6 #include<list>
     7 #include<set>
     8 #include<map>
     9 #include<stack>
    10 # define PI 3.14159265358979323846
    11 using namespace std;
    12 typedef long long ll;
    13 const int maxn = 2e5+10;
    14 const int mod = 11092019;
    15 int main()
    16 {
    17     vector<string> v;
    18     string s;
    19     cin>>s;
    20     string t;
    21     for(int i=0;i<s.length();i++)
    22     {
    23         if(s[i]!='+')
    24         {
    25             t+=s[i];
    26         }
    27         else
    28         {
    29             v.push_back(t);
    30             t.clear();
    31         }
    32         if(i==s.length()-1) v.push_back(t);
    33     }
    34     
    35     
    36 //    for(auto it=v.begin();it!=v.end();it++){
    37 //        cout<<*it<<endl;
    38 //    }
    39     
    40     
    41     int sum1 = 0;
    42     int sum2 = 0;
    43     for(auto it=v.begin();it!=v.end();it++)
    44     {
    45         string x = *it;
    46         if(x.find('d')!=x.npos)
    47         {
    48             int a=0,b=0;
    49             int i=0;
    50             for(i;i<x.length();i++)
    51             {
    52                 if(x[i]!='d')
    53                 {
    54                     a = a*10+(x[i]-'0');
    55                 }
    56                 else
    57                 {
    58                     i++;
    59                     break;
    60                 }
    61             }
    62             for(i;i<x.length();i++)
    63             {
    64                 b = b*10+(x[i]-'0');
    65             }
    66 //            cout<<a<<" "<<b<<endl;
    67             sum1+=a*(b+1);
    68         }
    69         else
    70         {
    71             int p = 0;
    72             for(int i=0;i<x.length();i++)
    73             {
    74                 p = p*10+(x[i]-'0');
    75             }
    76 //            cout<<p<<endl; 
    77 //                     为了使用int,现加双份,最后/2
    78             sum2 += p+p;
    79             
    80         }
    81     }
    82     int sum = sum1+sum2;
    83     if(sum%2==0) cout<<sum/2<<endl;
    84     else cout<<sum/2<<".5"<<endl;
    85     return 0;
    86 } 

    F 排列计算

    知识点:差分前缀和;

    前缀和:就是一个数组,要快速静态查询区间和,我们只要处理一个数组时A[i]=a[1]+a[2]+...+a[i].

    那么查询区间[l,r]的时候只要输出A[r]-A[l-1].

    差分数组 :多次在给定数组的某区间加上某数,使用差分数组可以加快运算速度。

     1 #include<bits/stdc++.h>
     2 #include<iostream>
     3 #include<vector>
     4 #include<queue>
     5 #include<string>
     6 #include<list>
     7 #include<set>
     8 #include<map>
     9 #include<stack>
    10 # define PI 3.14159265358979323846
    11 using namespace std;
    12 typedef long long ll;
    13 const int maxn = 2e5+10;
    14 const int mod = 11092019;
    15 int main()
    16 {
    17     ll node[maxn]={0};
    18     ll n,m;
    19     cin>>n>>m;
    20     while(m--)
    21     {
    22         ll a,b;
    23         cin>>a>>b;
    24         node[a]++;
    25         node[b+1]--;
    26     }
    27     for(ll i=1;i<=n;i++)
    28     {
    29         node[i]+=node[i-1];
    30     }
    31     sort(node+1,node+n+1);
    32     ll x = 1;
    33     ll ans = 0;
    34     for(ll i=1;i<=n;i++)
    35     {
    36         ans+=node[i]*x;
    37         x++;
    38     }
    39     cout<<ans<<endl;
    40     return 0;
    41 } 
  • 相关阅读:
    [Tyvj模拟赛]运
    [NOIP 2011]聪明的质监员
    暑假集训D10总结
    暑假集训D9总结
    [POI2008]枪战Maf
    [Usaco2007 Open]Fliptile 翻格子游戏
    [bzoj1592] Making the Grade
    学生信息管理系统(增删改查)【代码不完整】
    《程序员修炼之道》第五次读后感
    《程序员修炼之道》第四次读后感
  • 原文地址:https://www.cnblogs.com/subject/p/12871886.html
Copyright © 2011-2022 走看看