zoukankan      html  css  js  c++  java
  • Codeforces Round #214 (Div. 2) 解题报告

    Problem A Dima and Guards

    Dima需要贿赂一些宿舍阿姨,每个阿姨需要果汁与巧克力,每个都有一个最小值。只需要送给她的礼物中果汁的值或巧克力的值大于阿姨的最低值,阿姨就会接受礼物。Dima寝室楼一共有四个门,每个门上有两个阿姨把手。所以Dima需挑任意一个门即可。

    简单暴力题读懂题就ok了。

    n>=min(a, b)+min(c, d)时满足要求。

    接下来输出min(a, b)和n-min(a,b)即可注意题目中说了必须正好使用n元。

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <cmath>
     6 #include <algorithm>
     7 #include <queue>
     8 #include <stack>
     9 #include <vector>
    10 #define INF 0x7fffffff
    11 
    12 using namespace std;
    13 
    14 int main()
    15 {
    16 //    freopen("in.txt", "r", stdin);
    17     int n;
    18     while(scanf("%d", &n)!=EOF){
    19         int i, flag = 1;
    20         for(i=1; i<=4; i++){
    21             int a, b, c, d;
    22             scanf("%d%d%d%d", &a, &b, &c, &d);
    23             if(n>=min(a, b)+min(c, d) && flag){
    24                 cout << i << ' ' << min(a, b) << ' ' << n-min(a, b) << endl;
    25                 flag = 0;
    26             }
    27         }
    28         if(flag)cout << "-1" << endl;
    29     }
    30 
    31     return 0;
    32 }
    View Code

    Problem B Dima and To-do List

    在一个序列中找一个子序列的和最小。子序列满足从1-k-1为起始点k为间隔。

    暴力枚举记录起始点即可。

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <cmath>
     6 #include <algorithm>
     7 #include <queue>
     8 #include <stack>
     9 #include <vector>
    10 #define INF 0x7fffffff
    11 
    12 using namespace std;
    13 
    14 int main()
    15 {
    16 //    freopen("in.txt", "r", stdin);
    17     int n, k, task[100100];
    18     while(scanf("%d%d", &n, &k)!=EOF){
    19         for(int i=0; i<n; i++){
    20             scanf("%d", &task[i]);
    21         }
    22         int min = INF, minpos = -1;
    23         for(int i=0; i<k; i++){
    24             int sum = task[i];
    25             int j = (i+k)%n;
    26             while(i!=j){
    27                 sum+=task[j];
    28                 j = (j+k)%n;
    29             }
    30 //            cout << "sum:" << sum << endl;
    31             if(sum<min){
    32                 min = sum;
    33                 minpos = i;
    34             }
    35         }
    36         cout << minpos+1 << endl;
    37     }
    38     return 0;
    39 }
    View Code
    奔跑吧!少年!趁着你还年轻
  • 相关阅读:
    CASE WHEN用法
    BOS消息对话框
    BOS自定义等待窗口
    自定义F7
    BOS接口开发
    BOS开发-增删改查
    金蝶BOS工作流
    金蝶KDTable常用代码
    BOS开发常用代码
    Jenkins2 入门到精通(学习资料)
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3440849.html
Copyright © 2011-2022 走看看