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
奔跑吧!少年!趁着你还年轻
原文地址:https://www.cnblogs.com/shu-xiaohao/p/3440849.html