CodeForces 998B Cutting(贪心)

Posted jiamian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces 998B Cutting(贪心)相关的知识,希望对你有一定的参考价值。

 

https://codeforces.com/problemset/problem/998/B

技术图片

 

 

 技术图片

 

 简单贪心题

 

代码如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <iostream>
 4 #include <string>
 5 #include <math.h>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <stack>
 9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <sstream>
13 const int INF=0x3f3f3f3f;
14 typedef long long LL;
15 const int mod=1e9+7;
16 //const double PI=acos(-1);
17 #define Bug cout<<"---------------------"<<endl
18 const int maxn=1e5+10;
19 using namespace std;
20 
21 int a[105];
22 int b[105];//如果可分,存放差值 
23 
24 int  main()
25 {
26     int n,m;
27     scanf("%d %d",&n,&m);
28     for(int i=0;i<n;i++)
29     {
30         scanf("%d",&a[i]);
31     }
32     int x=0;//前面奇数的个数 
33     int y=0;//前面偶数的个数 
34     int cnt=0;//b数组下标计数器 
35     for(int i=2;i!=n;i+=2)
36     {
37         a[i-2]%2==1? x++ : y++;
38         a[i-1]%2==1? x++ : y++;
39         if(x==y)//该数后面的间隔可分 
40             b[cnt++]=max(a[i],a[i-1])-min(a[i],a[i-1]);
41     }
42     sort(b,b+cnt);
43     int num=0;
44     for(int i=0;i<cnt;i++)
45     {
46         if(m>=b[i])
47         {
48             num++;
49             m-=b[i];
50         }
51         else
52             break;
53     }
54     printf("%d
",num);
55     return 0;
56 }

 

以上是关于CodeForces 998B Cutting(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

Cutting Codeforces Round #493 (Div. 2)

Codeforces Round #521 (Div. 3) D. Cutting Out 二分+排序

codeforces 1077D Cutting Out 二分

@codeforces - 594E@ Cutting the Line

CodeForces 1118F2. Tree Cutting (Hard Version)

Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) DFS