博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ambiguous Dates Gym-101522A
阅读量:4156 次
发布时间:2019-05-26

本文共 1304 字,大约阅读时间需要 4 分钟。

Ambiguous Dates Gym-101522A

标签:思维&逻辑


解法一

/*    题意:日期有两种表示day/month/year 或 month/day/year,          7/8/2017(8/7/2017)是引起歧义的, 而15/8/2017和10/10/2017则不会,          要求重新排列月份,使得引起歧义的日期最少,          一年可以有M月(1 <= M <= 10^5),每月有D天(1 <= D <= 10^5)。    分析:某个月份的天数越多,这个月就应该越靠后。排序后,计算引起歧义的日期数量即可。*/#include 
#include
using namespace std;#define maxn 100005int month[maxn], M;int main(){ while(scanf("%d", &M) != EOF){ int i, top = 1; __int64 num = 0, ans = 0; for(i = 1; i <= M; i++) scanf("%d", &month[i]); sort(month + 1, month + M + 1); for(i = 1; i <= M; i++) if(month[i] > i) ans += 2 * min(month[i] - i, M - i); printf("%lld\n", ans); } return 0;}

解法二

#include 
#include
using namespace std;#define maxn 100005int month[maxn], M;int main(){ while(scanf("%d", &M) != EOF){ int i, top = 1; __int64 num = 0, ans = 0; for(i = 1; i <= M; i++) scanf("%d", &month[i]); sort(month + 1, month + M + 1); for(i = 1; i <= M; i++){ while(i != 1 && top < i && month[top] < i){ top++; num--; } //printf("num: %d\n", num); ans += num; num++; } printf("%lld\n", ans * 2); } return 0;}

转载地址:http://nskxi.baihongyu.com/

你可能感兴趣的文章
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Mysql复制表以及复制数据库
查看>>
如何使用 systemd 中的定时器
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>