P3078 [USACO13MAR] Poker Hands S
题目描述
Bessie 和她的朋友们正在玩一种独特的扑克牌游戏,这个游戏使用一副有 NNN 种不同牌面(1≤N≤100,0001 \leq N \leq 100,0001≤N≤100,000)的牌组,牌面被方便地编号为 111 到 NNN(普通的牌组有 N=13N = 13N=13)。在这个游戏中,牛们只能打出一种牌型:可以选择一张标号为 iii 的牌和一张标号为 jjj 的牌,并打出从 iii 到 jjj 的所有牌。这种牌型称为「顺子」。
Bessie 的手牌中当前持有 aia_iai 张牌面为 iii 的牌(0≤ai≤1000000 \leq a_i \leq 1000000≤ai≤100000)。帮助她找到必须打出的最少顺子数目以清空她所有的牌。
输入格式
* 第 1 行:整数 NNN。
* 第 2 行到第 1+N1+N1+N 行:第 i+1i+1i+1 行包含 aia_iai 的值。
输出格式
* 第 1 行:Bessie 必须打出的最少顺子数目以清空她所有的牌。
输入输出样例 #1
输入 #1
5
2
4
1
2
3
输出 #1
6
说明/提示
Bessie 可以打出一个从 1 到 5 的顺子,一个从 1 到 2 的顺子,一个从 4 到 5 的顺子,两个从 2 到 2 的顺子,以及一个从 5 到 5 的顺子,总共需要 6 轮来清空她所有的牌。
(由 ChatGPT 4o 翻译)
C++实现
#include<cstdio>
using namespace std;
long long n,a[100005];
long long ans=0;
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=2;i<=n;i++)
if(a[i]>a[i-1])
ans+=a[i]-a[i-1];
printf("%lld\n",a[1]+ans);
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
用C++实现信奥 P3078 USACO13MAR Poker Hands S&spm=1001.2101.3001.5002&articleId=147939571&d=1&t=3&u=cb9e6c471f334eaf890b985a56802408)
834

被折叠的 条评论
为什么被折叠?



