题意:给出N种类的数量,求是否可以把N种牌按3-5张连续的顺子打出,顺子必须连续.

分析:相当于把这个序列分成若干长度为[3,5]的区间,当然其实分成若干段大于3的区间即可.因为大于5的区间又可以分拆成若干段长度为[3,5]的区间.

令\(b[i] = a[i] - a[i-1]\), 则\(b[i] >0\) 表示有\(b[i]\)段区间以此为起点, \(b[i] < 0\)表示有\(|b[i]|\)段区间以\(i-1\)为终点. 那么对于每个区间的起点i,必须在i+3开始的位置一直向后寻找终点,且起点和终点必须数量相等,若不相等则不能打出顺子.

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 2e5+5;
LL a[MAXN], b[MAXN];
int N; bool check()
{
LL sum = 0;
if(b[2] <0 || b[3]<0) return false;
for(int i=1;i<=N+1;++i){
int p = i + 3;
if(b[i] > 0) sum += b[i];
if(p > N+1) break;
if(b[p]<0 ){
sum += b[p];
b[p] = 0;
}
if(sum<0) break;
}
if(sum !=0) return false;
return true;
} int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
int T,cas=1; scanf("%d",&T);
while(T--){
scanf("%d", &N);
for(int i=1;i<=N;++i){
scanf("%lld", &a[i]);
b[i] = a[i] - a[i-1];
}
b[N+1] = -a[N]; printf("Case #%d: ",cas++);
if(check()) printf("Yes\n");
else printf("No\n");
}
return 0;
}

Straight Master Gym-101775J (思维+差分)的更多相关文章

  1. LZH的多重影分身 qduoj 思维 差分

    LZH的多重影分身 qduoj 思维 差分 原题链接:https://qduoj.com/problem/591 题意 在数轴上有\(n\)个点(可以重合)和\(m\)条线段(可以重叠),你可以同时平 ...

  2. Straight Master (贪心)

    题目如下:A straight is a poker hand containing five cards of sequential rank, not necessarily to be the ...

  3. Gym 101775J Straight Master(差分数组)题解

    题意:给你n个高度,再给你1~n每种高度的数量,已知高度连续的3~5个能消去,问你所给的情况能否全部消去:例:n = 4,给出序列1 2 2 1表示高度1的1个,高度2的2个,高度3的2个,高度4的1 ...

  4. 2017 ECL-FINAL J.Straight Master

    题目链接:http://codeforces.com/gym/101775/problem/J 思路:序列差分一下,然后用得到的查分序列乱搞就可以了 注意差分序列第一项等于a[i],之后n-1项为ch ...

  5. Gym - 101981E 思维

    Gym - 101981EEva and Euro coins 题意:给你两个长度皆为n的01串s和t,能做的操作是把连续k个相同的字符反转过来,问s串能不能变成t串. 一开始把相同的漏看了,便以为是 ...

  6. Magic Stones CodeForces - 1110E (思维+差分)

    E. Magic Stones time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  7. 2017CCPC 杭州 J. Master of GCD【差分标记/线段树/GCD】

    给你一个n个初始元素都为1的序列和m个询问q. 询问格式为:l r x(x为2or3) 最后求1~n所有数的GCD GCD:把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是 ...

  8. AtCoder Beginner Contest 188 D - Snuke Prime (思维,差分)

    题意:你需要订阅一些服务,每个服务每天需要花费\(c_i\),要从第\(a_i\)用到第\(b_i\)天,你可以购买会员,会员每天需要花费\(C\),但是这天的服务不用再另花钱了,问你订阅这些服务的最 ...

  9. Problem D. Berland Railroads Gym - 101967D (思维)

    题目链接:https://cn.vjudge.net/contest/274029#problem/D 题目大意:给你0-9每个数的个数,然后让你找出最大的数,满足的条件是任意三位相连的都能被三整除. ...

随机推荐

  1. 在VS2013下如何配置DirectX SDK的开发环境_百度经验

    jpg改rar

  2. Excel 一个工作表进行按行数拆分

    1. 如下Excel表,总共有120多行数据,如何将以50行数据为一个工作表进行拆分 Sub ZheFenSheet() Dim r, c, i, WJhangshu, WJshu, bt As Lo ...

  3. 应急分析异常通信的小思路和自己写的小工具(查询CNAME和A记录)

    一.背景: 在很多时候,应急会发现.卧槽,异常连接,只有一个域名或者IP. 怎么办?上防火墙看记录,查域名对应的记录累成狗,自己把之前的代码改了改,写了个小工具,一条命令查询DNS相关记录,也可以指定 ...

  4. Java项目使用oh-my-email发送邮件

    本文使用Github开源项目oh-my-email进行测试邮件发送,并未进行更为深度的测试,如果想要快速使用,的确是一个很好的邮件发送组件.https://github.com/biezhi/oh-m ...

  5. jenkins multijob 插件使用

    如果你想要停止对下游/上游工作链定义的混乱 当您想要添加具有层次结构的任务时,按顺序执行或并行执行 安装multijob插件可以让jenkins任务按照分组.顺序执行 jenkins版本:2.80 1 ...

  6. JAVA基础之sql模糊匹配、外键以及jsp中include的用法

    一.SQL模糊匹配 适用于对字符串进行模糊搜索 格式:   字段名 Like '%关键词%'      %          表示这个位置可有任意个字符(没有也可以) %关键词%  只要包含关键词就算 ...

  7. wordpress 忘记密码

    update wp_users set user_pass=md5("123456") where user_login='帐号';

  8. [已解决]centos6.4 php连接mysql和memcache提示权限不允许

    昨天新安装了64位系统,所以就重新安装了一个centos的虚拟机,配置了一个测试环境,刚开始是页面打不开,这个确定是selinux规则没有设置好使用如下命令解决: chcon -R -h -t htt ...

  9. 解决mysql不能通过'/tmp/mysql.sock 连接的问题

    解决方法:php标准配置正是通过'/tmp/mysql.sock',但一些mysql安装方法将mysql.sock放在/var/lib/mysql.sock或者其他地方,你可以通过修改/etc/my. ...

  10. 安装canal

    一.安装前准备 配置Mysql: [mysqld] log-bin=mysql-bin #添加这一行就ok binlog-format=ROW #选择row模式 server_id=1 #配置mysq ...