• BC一周年练习赛


    Souvenir

     
     Accepts: 901
     
     Submissions: 2743
     Time Limit: 2000/1000 MS (Java/Others)
     
     Memory Limit: 262144/262144 K (Java/Others)
    Problem Description
    Today is the 1st anniversary of BestCoder. Soda, the contest manager, wants to buy a souvenir for each contestant. You can buy the souvenir one by one or set by set in the shop. The price for a souvenir is $p$ yuan and the price for a set of souvenirs if $q$ yuan. There's $m$ souvenirs in one set. There's $n$ contestants in the contest today. Soda wants to know the minimum cost needed to buy a souvenir for each contestant.
    Input
    There are multiple test cases. The first line of input contains an integer $T$ $(1 le T le 10^5)$, indicating the number of test cases. For each test case: There's a line containing 4 integers $n, m, p, q$ $(1 le n, m, p, q le 10^4)$.
    Output
    For each test case, output the minimum cost needed.
    Sample Input
    2
    1 2 2 1
    1 2 3 4
    Sample Output
    1
    3
    Hint
    For the first case, Soda can use 1 yuan to buy a set of 2 souvenirs. For the second case, Soda can use 3 yuan to buy a souvenir.

    有点贪心的意味,整套买省钱的尽量整套买,不能整套买的,看一整套与单个买哪个省钱。然而终测没过,然后交,并没有终测数据。。。

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    
    int main()
    {
          int T;
          cin >> T;
          int n, m, p, q;
          int ans;
          while(T--) {
                ans = 0;
                cin >> n >> m >> p >> q;
                int zu = n / m;
                int yu = n % m;
                if(zu == 0) {
                      ans = min(yu*p, q);
                } else {
                      if(yu == 0) {
                            ans = min(zu * q, n * p);
                      } else {
                            ans = min(zu * q + yu * p, min((zu + 1)* q , n * p));
                      }
                }
                cout << ans << endl;
          }
          return 0;
    }
    View Code

    Hidden String

     
     Accepts: 437
     
     Submissions: 2174
     Time Limit: 2000/1000 MS (Java/Others)
     
     Memory Limit: 262144/262144 K (Java/Others)
    Problem Description

    Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a string ss of length nn. He wants to find three nonoverlapping substrings s[l_1..r_1]s[l1​​..r1​​], s[l_2..r_2]s[l2​​..r2​​], s[l_3..r_3]s[l3​​..r3​​] that:

    1. 1 le l_1 le r_1 < l_2 le r_2 < l_3 le r_3 le n1l1​​r1​​<l2​​r2​​<l3​​r3​​n

    2. The concatenation of s[l_1..r_1]s[l1​​..r1​​], s[l_2..r_2]s[l2​​..r2​​], s[l_3..r_3]s[l3​​..r3​​] is "anniversary".

    Input

    There are multiple test cases. The first line of input contains an integer T(1 le T le 100)(1T100), indicating the number of test cases. For each test case:

    There's a line containing a string s(1 le |s| le 100)(1s100) consisting of lowercase English letters.

    Output

    For each test case, output "YES" (without the quotes) if Soda can find such thress substrings, otherwise output "NO" (without the quotes).

    Sample Input
    2
    annivddfdersewwefary
    nniversarya
    Sample Output
    YES
    NO
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    char str[110];
    char const s[] = "anniversary";
    int vis[110];
    int len, h;
    bool dfs(int a, int b) {
          h++;
          int i, j, k;
          for(i = a; i < len; ++i) {
                k = b;
                if(str[i] == s[k]) {
                      k++;
                      for(j = i+1; j < len; ++j) {
                            if(str[j] != s[k])
                                  break;
                            k++;
                      }
                      if(s[k] == '' && h<=3)
                            return true;
                      if(dfs(j, k)) {
                            return true;
                      }
                }
          }
          h--;
          return false;
    }
    
    int main() {
          int T;
          scanf("%d%*c", &T);
          while(T--) {
                gets(str);
                len = strlen(str);
                h = 0;
                if(dfs(0, 0))
                      cout << "YES" << endl;
                else
                      cout << "NO" << endl;
          }
          return 0;
    }
    View Code
  • 相关阅读:
    【转】Linux中的特殊权限粘滞位(sticky bit)详解
    【转】Spark实现行列转换pivot和unpivot
    Pyspark 使用 Spark Udf 的一些经验
    CDH 集群机器上部署 Jupyter notebook 使用 Pyspark 读取 Hive 数据库
    Pyspark-SQL 官方 API 的一些梳理(上)
    Kafka-python 客户端导致的 cpu 使用过高,且无法消费消息的问题
    如何创建和管理 MySQL 相关权限
    CDH Yarn 调度资源指南
    Sqoop export(Hive to MySQL) 的一些 reference
    vue2.x学习笔记(二十七)
  • 原文地址:https://www.cnblogs.com/ya-cpp/p/4677676.html
Copyright © 2020-2023  润新知