zoukankan      html  css  js  c++  java
  • Codeforces Round #590 (Div. 3)

    题目链接:https://codeforces.com/contest/1234


    A:

    题意:找出一个数,使得以这个数为价格卖出所有商品的钱大于等于以之前的各个商品初始价格卖出的钱。

    idea:取平均值,向上取整

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath> 
     4  
     5 using namespace std;
     6 int t, n;
     7 double a[110];
     8  
     9 int main()
    10 {
    11     scanf("%d",&t);
    12     while (t -- )
    13     {
    14         double sum = 0, ans = 0;
    15         scanf("%d",&n);
    16         for (int i = 0; i < n; i ++ )
    17         {
    18             scanf("%lf",&a[i]);
    19             sum += a[i];
    20         }
    21         ans = sum / n;
    22         double s = ans - (int)ans;
    23         if (!s) cout << (int)ans << endl;
    24         else cout << (int)(ans + 1) << endl;
    25     }
    26     return 0;
    27 }
    View Code

    ps:对于向上取整,可以 (sum + n - 1) / n,让我又学到了,菜啊...

    B1:

    题意:n次查询,若消息未出现,就加入,若长度超过k,就删除最后一条(相对最后一条加入的消息)

    idea:由于 n 和 k 的范围较小,暴力模拟即可

     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4 int n, k, kk, a[210], b[210], id;
     5  
     6 int main()
     7 {
     8     cin >> n >> k;
     9     int ss = min(n,k);
    10     for (int i = 0; i < n; i ++ )  cin >> a[i];
    11     
    12     for (int i = 0; i < n; i ++ )
    13     {
    14         int flag = 0;
    15         for (int j = kk; j < id; j ++ )
    16         {
    17             if (a[i] == b[j])
    18             {
    19                 flag = 1;
    20                 break;
    21             }
    22         }
    23         if (!flag)
    24         {
    25             b[id ++ ] = a[i];
    26             if ((id - kk) > ss) kk ++ ;
    27         }
    28     }
    29     
    30     cout << id - kk << endl;
    31     for (int i = id - 1; i >= kk; i -- )  cout << b[i] << " ";
    32     return 0;
    33 }
    View Code

    B2:

    题意:同B1

    idea:由于 n 和 k 的范围变大,所以问题就转变为如何快速查询消息是否出现过,自然想到用set

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <set>
     4 
     5 using namespace std;
     6 const int MAXN = 2 * 1e5 + 10;
     7 int n, k, q[MAXN], hh, ed;
     8 
     9 int main()
    10 {
    11     set<int> s;
    12     scanf("%d%d",&n,&k);
    13     for (int i = 0; i < n; i ++ )
    14     {
    15         int x;
    16         scanf("%d",&x);
    17         if (!s.count(x))
    18         {
    19             if ((ed - hh) >= k)
    20             {
    21                 int temp = q[hh];
    22                 hh ++ ;
    23                 s.erase(temp);
    24             }
    25             q[ed ++ ] = x;
    26             s.insert(x);
    27         }
    28     }
    29     cout << ed - hh << endl;
    30     for (int i = ed - 1; i >= hh; i -- )  cout << q[i] << " ";
    31     return 0;
    32 }
    View Code

    C:

    题意:给出对应水管,询问是否能在最后一个区域内出水(即右下角)

    idea:模拟发现,水管的水流向是固定的,所以模拟即可

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 
     5 using namespace std;
     6 int q, n;
     7 string s[2];
     8 
     9 int main()
    10 {
    11     scanf("%d",&q);
    12     while (q -- )
    13     {
    14         scanf("%d",&n);
    15         cin >> s[0] >> s[1];
    16         int i, j;
    17         j = 0;
    18         for (i = 0; i < n; i ++ )
    19         {
    20             if (s[j][i] >= '3')
    21             {
    22                 if (s[j ^ 1][i] < '3')  break;  //^1,让j上下移动,明显减少代码量,十分巧妙 
    23                 else
    24                 {
    25                     j ^= 1;
    26                 }
    27             }
    28         }
    29         if (i == n && j == 1)  puts("YES");
    30         else  puts("NO");
    31     }
    32     return 0;
    33 }
    View Code

    D:

    题意:定点删除,定点替换,区间查询

    idea:待补

  • 相关阅读:
    优化不易,且写且珍惜
    作为过来人的感悟:进了小公司的程序员如何翻身进入大公司
    腾讯/阿里/百度 BAT人才体系的职位层级、薪酬、晋升标准
    校招生向京东发起的“攻势”,做到他这样,你,也可以
    通过Java 线程堆栈进行性能瓶颈分析
    基于Spring Cloud的微服务落地
    多线程技术使用指南
    Android 处理含有EditText的Activity虚拟键盘
    Android ListView的监听事件
    Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
  • 原文地址:https://www.cnblogs.com/chuyds/p/11623558.html
Copyright © 2011-2022 走看看