• Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)


    A. Trip For Meal

    题目链接:http://codeforces.com/contest/876/problem/A

    题目意思:现在三个点1,2,3,1-2的路程是a,1-3的路程是b,2-3的路程是c,从1点开始,小熊维尼在1点吃过一次蜂蜜了,但是他要吃n次蜂蜜,每次他离开一个地方以后这个地方的蜂蜜就会自动补充,问最少需要走多少距离。

    题目思路:如果n=1,那么就是0,如果n等于2,那么答案说就是min(a,b),如果n>2,答案就是min(a,b)+(n-2)*min(a,b,c);

    代码:

     1 //Author: xiaowuga
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 #define inf 0x3f3f3f3f
     5 #define MAX INT_MAX
     6 #define mem(s,ch) memset(s,ch,sizeof(s))
     7 const long long N=100000; 
     8 const long long mod=1e9+7; 
     9 typedef long long LL;
    10 typedef int II;
    11 typedef unsigned long long ull;
    12 #define nc cout<<"nc"<<endl
    13 #define endl "
    "
    14 int main() {
    15     ios::sync_with_stdio(false);cin.tie(0);
    16     int n,a,b,c;
    17     cin>>n>>a>>b>>c;
    18     int k=min(a,b);
    19     k=min(k,c);
    20     if(n==1) {cout<<0<<endl;return 0;}
    21     if(k==a||k==b){cout<<(n-1)*k<<endl;return 0;}
    22     cout<<min(a,b)+(n-2)*k<<endl;
    23     return 0;
    24 }
    View Code

    B. Divisiblity of Differences

    题目链接:http://codeforces.com/contest/876/problem/B

    题目意思:现在有n个数,问是否可以从里面找出k个数,那么这k个数两两之间的差的绝对值是m的倍数。

    题目思路:如果两个数的差是m的倍数,那么这两个数%m以后的余数相同,所以把所有数根据%m以后余数的不同分类,然后看是不是又哪一类中的元素超过k个。

    代码:

     1 //Author: xiaowuga
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 #define inf 0x3f3f3f3f
     5 #define MAX INT_MAX
     6 #define mem(s,ch) memset(s,ch,sizeof(s))
     7 const long long N=100000; 
     8 const long long mod=1e9+7; 
     9 typedef long long LL;
    10 typedef int II;
    11 typedef unsigned long long ull;
    12 #define nc cout<<"nc"<<endl
    13 #define endl "
    "
    14 map<int,int>a;
    15 vector<int>G[N];
    16 int main() {
    17     ios::sync_with_stdio(false);cin.tie(0);
    18     int n,k,m;
    19     int t;
    20     cin>>n>>k>>m;
    21     int ct=0;
    22     for(int i=0;i<n;i++){
    23         cin>>t;
    24         int x=t%m;
    25         if(a.count(x)==0) a[x]=ct++;
    26         G[a[x]].push_back(t);
    27     } 
    28     int ans=-1;
    29     for(int i=0;i<ct;i++){
    30         if(G[i].size()>=k){
    31             ans=i;
    32             break;
    33         }
    34     }
    35     if(ans==-1) {cout<<"No"<<endl;return 0;}
    36     else{
    37         cout<<"Yes"<<endl;
    38         for(int i=0;i<k;i++){
    39             cout<<G[ans][i]<<' ';
    40         }
    41     }
    42     cout<<endl;
    43     return 0;
    44 }
    View Code

    C. Classroom Watch

    题目链接:http://codeforces.com/contest/876/problem/C

    题目意思:现在有一个数

  • 相关阅读:
    钓鱼
    Webpack3.x升级至 4.x 小记
    设计模式六大原则(总结)
    Spring Data RedisTemplate抛出SerializationException
    pcap文件过滤、分割、合并处理工具
    如何查看Linux服务器的负载
    java8 List按照两个属性第一个属性升序排序第二个属性降序排序
    什么是云原生
    vuecli创建vue3项目
    nfs 问题汇总
  • 原文地址:https://www.cnblogs.com/xiaowuga/p/7696130.html
Copyright © 2020-2023  润新知