明若清溪天下绝歌 缱绻成说,不知该在哪处着墨;一生情深怎奈何世事 徒留斑驳,只一念痴恋成奢。

题目描述

众所周知,小 X 是一个身材极好、英俊潇洒、十分贪玩成绩却依然很好的奆老。
这不,他又找了他的几个好基友去他家里玩斗地主了……
身为奆老的小 X 一向认为身边人和自己一样的厉害,他坚信你和他一样有未卜先知的能力,他在他们玩完斗地主后,告诉了你他们的最终得分,希望你猜出他们最少玩了几局牌?
注意:小 X 他们至少玩了 1 局斗地主。
以下是斗地主的规则:发完牌后三人依次叫牌,可叫 1 分、2 分、3 分或不叫,所叫的分数称为底分,分数叫的高赢的多,输的也多。叫完后叫分最高者为地主,然后开始打牌,若地主获胜则地主得到 2 倍的底分,其余两家农民各输掉一份底分;若地主输了则地主输掉2 倍的底分,其余两家农民各赢得一份底分。

输入

输入数据仅有一行包含四个用空格隔开的整数 n,a,b,c,分别表示小 X 他们玩了不超过n 局斗地主,最终三人的得分分别为 a,b,c

输出

输出一行一个整数表示最少打了几付牌,若这个得分在 n 付牌内不可能出现,则输出-1

样例输入

复制样例数据

5 0 0 0

样例输出

2

提示

开始时 3 人得分均为 0 分,第一副牌小 X 做了 3 分地主获胜,3 人得分变为 6,-3,-3,第二副牌小 X 继续做了 3 分地主失败,3 人得分归 0,符合输入要求,牌局结束。

对于 30%的数据,n<=5
对于另外 20%的数据,a,b,c 中有两个数相等
对于 100%的数据,n<=100,-300<=a,b,c<=300,a+b+c=0

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int fa[20] = {0,1,2,3,1,2,3,-1,-2,-3,-1,-2,-3,2,4,6,-2,-4,-6};
int fb[20] = {0,1,2,3,-2,-4,-6,-1,-2,-3,2,4,6,-1,-2,-3,1,2,3};
int a,b,c,n,vis[1500][1500],jg;
struct node
{int a;int b;int bs;
} t,tmp;
queue<node>q;
void bfs()
{a+=400;b+=400;t.bs = 0;t.a = t.b = 400;vis[400][400] = 1;q.push(t);while (!q.empty()){if(t.bs == n){printf("-1");return ;}t = q.front();q.pop();tmp.bs = t.bs+1;for (int i = 1; i <= 18; i++){tmp.a = t.a+fa[i];tmp.b = t.b+fb[i];if (tmp.a == a && tmp.b == b){printf("%d\n", tmp.bs);return;}if (vis[tmp.a][tmp.b] == 0){q.push(tmp);vis[tmp.a][tmp.b] = 1;}}}return;
}
int main()
{scanf("%d%d%d%d",&n,&a,&b,&c);if(a==0&&b==0&&c==0){if(n>=2)printf("2\n");elseprintf("-1\n");}elsebfs();return 0;
}

石油大学个人训练赛(一)补题----问题 A: 斗地主相关推荐

  1. QLU—新生训练赛002补题

    I.十进制中的二进制 解题方法:直接把给定范围内的有0和1组成的数暴力输出,然后开个数组把这些数放进去,进而在数组中找要求的范围内符合条件的数就行了(一开始做的时候还以为有什么规律...一直在找规律, ...

  2. 寒假的牛客训练赛1补题

    寒假我太摸鱼了 牛牛最近做了这么一道题: "对于一给定的 n(1≤n≤109)n(1\leq n\leq 10^{9})n(1≤n≤109),计算ϕ(n)\phi(n)ϕ(n), 之中 ϕ( ...

  3. J - Sum(南京预选赛周末训练赛)补题

    题意:(square-free integer )无平方整数是除了1以外不被其它整数的平方除的数. 一个数n = ab,问你有多少个a,b的组合,a,b都是无平方整数,用f(n)表示,让你求 思路:首 ...

  4. 2021acm-icpc区域赛(南京)补题笔记

    文章目录 前言 题目一览 A.Oops, It's Yesterday Twice More(签到) 题意 思路 M. Windblume Festival(签到) 题意 思路 C. Klee in ...

  5. 2021 CCCC天梯赛L1补题

    前言 这次天梯赛表现没有达到预期,L1的分没有拿全,L2有2题没考虑完全,总之很愧疚拖了队友后腿.今天先补上L1没拿满分的题. L1补题 前言 L1-078 吉老师的回归 输入样例1 输出样例1 输入 ...

  6. 2020年湖南中医药大学“华为杯”大学生程序设计竞赛——正式赛(赛后补题)

    目录 A-幸福小组 B-菜鸡驿站 C-TC的火柴 D-n盏灯 E-电子手表 F- TC的steam账号 G- 万圣节 H-最少颜色 I-2048 J-解密 K-TC的门牌号 L-粗心的小明 M-小明的 ...

  7. 八月十七日个人训练小结(补题)

    前言 今天主要是补题,牛客,杭电和落下的cf 一.杭电补题 1.Shortest Path in GCD Graph 答案只有1和2,开始想用最短路,最后还是没能解决,这不是一个最短路问题,算是思维题 ...

  8. 2018CCPC吉林赛区(重现赛)补题部分——F线段树待补

    A - The Fool 数论分块暴力求和 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optim ...

  9. 2019年湘潭大学程序设计竞赛(重现赛)补题:F.Black White(尺取法)

    链接:https://ac.nowcoder.com/acm/contest/893/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

最新文章

  1. className的高效匹配
  2. matlab 通过矩阵变换使图像旋转平移_opencv图像处理——几何变换
  3. 表单提交时有的字段可以传递到后台有的不可以
  4. intelliJ Idea 添加 Tomcat部署(详细步骤)
  5. MySQL教程(一)—— 数据库设计
  6. 算法—巧排扑克牌(C语言)
  7. VS2010 教程:创建一个 WPF 应用程序 (第一节)
  8. 重构-改善既有代码的设计(十)--简化函数调用
  9. PyTorch 深度学习:30分钟快速入门
  10. python--列表,元组,字符串互相转换
  11. 微信小程序scroll-view横向滚动
  12. 10.运输层(4)---TCP
  13. ElementUI:tree组件背景色、鼠标hover悬浮背景色、选中背景色修改
  14. java并发编程(7)-- 线程 自旋锁
  15. MSP432的CCS工程配置以及使用J-Link下载程序
  16. Q版周鸿祎:带你2分钟看懂互联网+
  17. 微服务调用Ribbon负载均衡、Feign的使用
  18. 向量积计算三角形面积
  19. Android12 apk安装失败 安装包异常 安装包大小显示1k
  20. java常用加密算法

热门文章

  1. tableau各种精典示例经验总结03
  2. ATA工厂测试AT_MODE下震动不振问题分析
  3. 记录常用的xss攻击代码,便于测试系统安全漏洞
  4. 面向开发人员的 ChatGPT 提示词教程 - ChatGPT Prompt Engineering for Developers
  5. 以华为公司为例的我国业务流程管理实践研究
  6. 计算机地图制图原理与算法,计算机地图制图原理与算法基础.ppt
  7. 小小weibo音乐播放器
  8. office2007 ppt制作与应用母板
  9. 叮叮获取所有用户信息_钉钉小程序获取用户信息
  10. oracle的跨会话变量,oracle 回话环境变量 userenv ,oracle connetion context 会话环境 连接的会话环境...