简要题意

给你一个格式为 \(\texttt{MM-DD}\) 的日期。你每一次可以更改一个整数,花费 \(1\) 的代价。求将该日期改为一个合法的日期的最小代价。(注:\(2\) 月视为 \(28\) 天)

思路

我再也不会看不起红题了!

首先判断月份是否合法,如果不合法,那么调整月份,分为一下情况:

  • 若月份的十位为 \(1\),那么我们可以用 \(1\) 的代价,将月份改为 \(12\)(因为 \(12\) 月有 \(31\) 天,比 \(11\) 月多)
  • 若月份个位为 \(2\),那么我们可以用 \(1\) 的代价,将月份改为 \(12\)。
  • 否则将其改为个位数(个位数总是合法)。

然后判断天数,如果大于当前月份(如果不合法那么要改过的)的天数,那么花费 \(1\) 的代价,将它改为个位数即可。

时间复杂度 \(O(1)\)。

代码

#include <bits/stdc++.h>
using namespace std; int month,day,tot;
int md[]={114514,31,28,31,30,31,30,31,31,30,31,30,31}; signed main(){
scanf("%d-%d",&month,&day);
if(month==0||month>12){
if(month/10==1){
month=12;
tot++;
}
else if(month%10==2){
month=12;
tot++;
}
else{
month=month%10;
tot++;
}
}
if(day==0||md[month]<day){
tot++;
}
cout<<tot<<'\n';
return 0;
}

最新文章

  1. 导入dmp文件时的注意事项
  2. c#中各类日期的计算方法,收藏
  3. js 猜数字游戏
  4. .NET使用OpenSSL生成的pem密钥文件
  5. Filter实现全站违法关键词屏蔽
  6. ADO.NET数据库
  7. struts2+Hibernate4+spring3+EasyUI环境搭建之二:搭建spring
  8. oracle 字段上下两条记录的相减
  9. SHGetSpecialFolderLocation
  10. EffectiveC#3--选择is或者as操作符而不是做强制类型转换
  11. [转]设置MS Office Word for mac的默认显示比例
  12. 深入理解Arrays.sort() (转)
  13. Thinking in Java系列 文档+代码+简评
  14. 【渗透笔记】友情检测朋友公司并拿下shell过程
  15. Tornado 用户身份验证框架
  16. JAVA中if多分支和switch的优劣性。
  17. UE4中创建第一、第三人称角色,并进行角色间的切换
  18. 资源预加载preload和资源预读取prefetch简明学习
  19. Django使用redis实现缓存
  20. 关于C#mvc用iis发布,虚拟目录的问题。

热门文章

  1. Linux基础_7_文本显示
  2. git-secret:在 Git 存储库中加密和存储密钥(下)
  3. SpringBoot内置工具类,告别瞎写工具类了
  4. LAPM概述及配置
  5. 孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识
  6. 编码工具使用(go语言)
  7. openssh编译rpm包(防火防盗防漏扫)
  8. UBOOT编译--- UBOOT编译过程目标依赖分析(八)
  9. swap,传参实质
  10. javaSE--核心之一:IO流