Codeforces 731 B. Coupons and Discounts【贪心】
来源:互联网 发布:matlab定义字符串数组 编辑:程序博客网 时间:2024/05/22 00:42
题目大意:
一共有N天,对应每天需要购买的披萨数目已知,对应当前天可以有两种操作:
①直接买两个披萨
②买一个披萨,并且对下一天预定一个披萨,那么到第二天的时候,那个披萨就相当于买了。
问能否通过上述两种操作将这N天的披萨数都正好对应的购买。
思路:
1、首先考虑如果第N天预定了披萨,那么N+1天的时候就购买了一个披萨,明显这是我们不想要的结果。那么我们贪心的点从这个角度出发。最后一天不能进行预定操作,那么如果最后一天是一个奇数,那么显然那个多余出来的1,一定是从上一天预定过来的。
2、那么根据这个特性,我们逆序思维,从最后一天开始向前处理,如果当前天的数是一个奇数,那么对应一定从前一天预定了一份披萨到今天,那么a【i-1】-=1;那么在这个向前推的过程中遇到了a【i】<0的时候,一定是NO的情况。
3、那么对应已知向前推,一直推到第一个的时候,判断第一个的奇偶性,如果其实奇数,那么输出NO,否则就是YES、
Ac代码:
#include<stdio.h>#include<string.h>using namespace std;int a[2004000];int main(){ int n; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { scanf("%d",&a[i]); } int flag=0; for(int i=n-1;i>=0;i--) { if(a[i]<0) { flag=0;break; } if(i!=0) { if(a[i]%2==1) { a[i-1]-=1; } } else if(a[i]%2==0)flag=1; else flag=0; } if(flag==1)printf("YES\n"); else printf("NO\n"); }}
1 0
- Codeforces 731 B. Coupons and Discounts【贪心】
- CodeForces 731B-Coupons and Discounts(贪心 模拟)
- 【50.49%】【codeforces 731B】Coupons and Discounts
- CodeForces 731B Coupons and Discounts
- CodeForces 731B 之 Coupons and Discounts
- Codeforces 731 B. Coupons and Discounts
- codeforces 731B Coupons and Discounts
- Codeforces B. Coupons and Discounts
- CodeForces 731 B.Coupons and Discounts(水~)
- 【codeforces 710 B Coupons and Discounts】
- 【贪心】Coupons and Discounts
- B. Coupons and Discounts
- Codeforce 731B. Coupons and Discounts
- Codeforces Round #376 (Div. 2) B. Coupons and Discounts(贪心)
- 【Codeforces Round #376 (Div. 2)】 Codeforces 731B Coupons and Discounts
- Codeforces Round #376 (Div. 2) B. Coupons and Discounts
- Codeforces Round #376 (Div. 2) B. Coupons and Discounts
- Coupons and Discounts(水题)
- 基于神经网络的序列标注
- 安装aptitude
- Linux命令之"ps"
- 几种常见的排序算法及实现(二)
- Android view刷新
- Codeforces 731 B. Coupons and Discounts【贪心】
- Linux下的文件管理函数(不带I/O缓冲)
- HDU_4585_Shaolin
- android view怎样刷新
- 【信息论】信源与信源熵(三)
- 导数 学习笔记
- 关于linux脚本编程的一些笔记
- Spark程序设计——基本流程
- 怎样让自己与众不同