【题解】[SCOI2011] 飞镖

模拟题

红靶子的我们先不考虑。

如果是 {1,2,2} , {2,2,3} 这种只涉及两种倍数的话,我们想到不定方程:

ax+by =c 的通解形式(a,b,c 为常数),从而探讨 x,y 在规定取值内是否有解。

探讨 {1,2,3} 的情况。

这个时候不难发现 x ∈ [ 1 , 6 k ] x\in [1,6k] x[1,6k] 是有解的。

如果你暴力每种情况枚举的话会比较麻烦。

我们可以递归求解:(当然这是个笨方法)

对于轮数为 1 的情况相对较少,直接求解。

对于轮数等于 2 的情况,有几种情形:

第一种,有一个为 M 的靶

第二种,有一个为 2M 的靶

第三种,没有红心靶

组合形式为

{2,2}, {1,2} , {2,3}

如果之前有过 2M 的靶,还可以是:

{3,3} , {1,3}

对于轮数等于 3 的情况,有几种情形:

第一种,有一个为 M 的靶

第二种,有一个为 2M 的靶

第三种,没有红心靶

组合形式为

{1,2,3} , {2,2,3} , {2,3,3}

讲一下这个不定方程到底怎么求。

请添加图片描述

#include <bits/stdc++.h>
#define ll long long
using namespace std;
//贪心
int T, res;
ll A1, B1, C1, D1, K1;
ll A2, B2, C2, D2, M1;
ll A3, B3, C3, D3, X1;
bool check(ll X, ll Y, ll M) {ll l = -M - 3 * floor((X - M) / 2.0), r = -M - 3 * ceil((1 - M) / 2.0);if (r >= 1 && l <= Y) {return 1;}return 0;
}
bool solve(int k, ll K, ll M, ll X, int limit) {if (X == 0) {return (limit == 1);}if (k == 1) {if (X == 2 * M || (X % 2 == 0 && X / 2 <= K)) {return 1;}if (limit) {if (X <= K || (X % 3 == 0 && X / 3 <= K) || X == M) {return 1;}}return 0;}if (X >= M && solve(k - 1, K, M, X - M, limit))return 1;if (X >= 2 * M && solve(k - 1, K, M, X - 2 * M, 1))return 1;if (solve(k - 1, K, M, X, limit))return 1;if (k == 2) {if (X % 2 == 0 && X / 2 <= 2 * K)return 1;if (X > 1 && X <= 3 * K)return 1;if (check(K, K, X))return 1;if (limit) {if (X % 3 == 0 && X / 3 <= 2 * K)return 1;if (X <= 4 * K)return 1;}return 0;}if (k == 3) {if (X <= 6 * K)return 1;if (check(2 * K, K, X) || check(K, 2 * K, X))return 1;return 0;}return 0;
}
int main() {//  freopen("data.in","r",stdin);//  freopen("dart.in","r",stdin);//  freopen("dart.out","w",stdout);scanf("%d", &T);scanf("%lld%lld%lld%lld%lld", &A1, &B1, &C1, &D1, &K1);scanf("%lld%lld%lld%lld%lld", &A2, &B2, &C2, &D2, &M1);scanf("%lld%lld%lld%lld%lld", &A3, &B3, &C3, &D3, &X1);//  solve(3,20,32,205,0);res += solve(3, K1, M1, X1, 0);for (int i = 2; i <= T; i++) {K1 = (((__int128)A1 * K1 * K1 + B1 * K1 % D1 + C1) % D1) + 20;M1 = (((__int128)A2 * M1 * M1 + B2 * M1 % D2 + C2) % D2) + 20;X1 = (((__int128)A3 * X1 * X1 + B3 * X1 % D3 + C3) % D3) + 20;res += solve(3, K1, M1, X1, 0);//      if(solve(3,K1,M1,X1,0)) {//          printf("%lld %lld %lld\n",K1,M1,X1);//      }}printf("%d", res);
}
// 20 32 205
//1
//0 0 0 0 100
//0 0 0 0 1000
//0 0 0 0 1001

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619857.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

搭载双筒飞镖?这款无人机太危险

折叠式的设计使之方便携带&#xff0c;堪称猎犬好搭档。 近日&#xff0c;基于SuperDrone无人机&#xff0c;南非Haevic公司改造了一款搭载飞镖枪的无人机——DartDrone&#xff0c;专为兽医及狩猎人员研发。 据悉&#xff0c;SuperDrone是一款采用可折叠结构的六翼无人机&…

BZOJ2335: [SCOI2011]飞镖

Description 飞镖是在欧洲颇为流行的一项运动。它的镖盘上分为20个扇形区域&#xff0c;分别标有1到20的分值&#xff0c;每个区域中有单倍、双倍和三倍的区域&#xff0c;打中对应的区域会得到分值乘以倍数所对应的分数。例如打中18分里面的三倍区域&#xff0c;就会得到54分。…

飞镖(bzoj 2335)

Description 飞镖是在欧洲颇为流行的一项运动。它的镖盘上分为20个扇形区域&#xff0c;分别标有1到20的分值&#xff0c;每个区域中有单倍、双倍和三倍的区域&#xff0c;打中对应的区域会得到分值乘以倍数所对应的分数。例如打中18分里面的三倍区域&#xff0c;就会得到54分。…

飞镖和招聘

4月16日 公司里面玩飞镖的同事越来越多了&#xff0c;不少人都得了飞镖综合症&#xff08;手酸、腰酸、对休息时间非常敏感&#xff09;。除了飞镖游戏本身的吸引力&#xff0c;我还发现它有很多和我们从事猎头 招聘非常相似的特征&#xff1a; Know how to close the game. 懂…

java设计飞镖游戏_3分钟手把手带你使用Unity制作“扔飞镖游戏”

原标题&#xff1a;3分钟手把手带你使用Unity制作“扔飞镖游戏” 日落西山红霞飞~战士打靶把营归呀巴扎嘿。今天我制作一个简单的打靶游戏(扔飞镖) 在制作之前首先要思考这个游戏需要什么对象&#xff0c;很简单&#xff0c;一只飞镖、一个靶。 这里我把飞镖设置成了刚体&#…

Leetcode——1453. 圆形靶内的最大飞镖数量

墙壁上挂着一个圆形的飞镖靶。现在请你蒙着眼睛向靶上投掷飞镖。 投掷到墙上的飞镖用二维平面上的点坐标数组表示。飞镖靶的半径为 r 。 请返回能够落在 任意 半径为 r 的圆形靶内或靶上的最大飞镖数。 示例 1&#xff1a; 输入&#xff1a;points [[-2,0],[2,0],[0,2],[0,-…

打印飞镖图形

打印如图下非标 代码如下 #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable:6031) #include<stdio.h> #include<string.h> int main() {int n 0;while (scanf("%d", &n) 1){//上n行int i 0;for (i 0; i < n; i){int j 0;for (j 0…

【数据结构与算法】之深入解析“圆形靶内的最大飞镖数量”的求解思路与算法示例

一、题目要求 墙壁上挂着一个圆形的飞镖靶,现在请你蒙着眼睛向靶上投掷飞镖。投掷到墙上的飞镖用二维平面上的点坐标数组表示,飞镖靶的半径为 r,请返回能够落在任意半径为 r 的圆形靶内或靶上的最大飞镖数。示例 1:输入:points = [[-2,0],[2,0],[

【题解】飞镖

题目描述 小明喜欢玩飞镖游戏&#xff0c;他会把每次的得分都记录在数组中。今天有个飞镖大奖&#xff0c;得奖的规则是&#xff1a;如果你4次飞镖的得分先后是&#xff08;a&#xff0c;b&#xff0c;c&#xff0c;d&#xff09;&#xff0c;满足abcd。 小明准备把记录里的其他…

OpenCV技巧篇——多目标视觉定位(以飞镖定位为例)

OpenCV技巧篇【1】——多目标视觉定位&#xff08;以飞镖定位为例&#xff09; 1、针对问题 多目标视觉定位是指通过计算机视觉技术对一张图片中的多个目标进行识别和定位的过程。本篇将以对飞镖定位为例&#xff0c;提出一个简单有效的多目标定位技巧&#xff0c;最终实现如…

LeetCode 1453. 圆形靶内的最大飞镖数量(几何题)

1. 题目 墙壁上挂着一个圆形的飞镖靶。现在请你蒙着眼睛向靶上投掷飞镖。 投掷到墙上的飞镖用二维平面上的点坐标数组表示。飞镖靶的半径为 r 。 请返回能够落在 任意 半径为 r 的圆形靶内或靶上的最大飞镖数。 示例 1&#xff1a; 输入&#xff1a;points [[-2,0],[2,0…

一个飞镖模型

#飞镖 #一个角 from turtle import* def angle():pu()goto(0,0)pendown()pencolor("black")left(45)fd(50)left(68)fd(91.73)left(157)fd(120)begin_fill()fillcolor("black")right(135)fd(50)right(68)fd(91.73)right(157)fd(120)end_fill()#飞镖复杂化 d…

扔飞镖游戏

日落西山红霞飞~战士打靶把营归呀巴扎嘿。今天我制作一个简单的打靶游戏&#xff08;扔飞镖&#xff09; 在制作之前首先要思考这个游戏需要什么对象&#xff0c;很简单&#xff0c;一只飞镖、一个靶。 这里我把飞镖设置成了刚体&#xff0c;什么是刚体&#xff1f;简而言之&…

2022赛规整理——飞镖

2022赛规整理——飞镖 ​ V1.0 2021.10.23 1、比赛场地 &#xff08;1&#xff09;打击角度及距离 飞镖口——前哨站&#xff1a;左6.5&#xff0c;直线距离15865mm 飞镖口—— 基地 &#xff1a;右7.3&#xff0c;直线距离25233mm &#xff08;2&#xff09;基地示意图 基…

QT之“飞镖盘”自定义控件

QT之“飞镖盘”自定义控件 前言控件预览实现 前言 现在发一个我之前看过有人写了一个抽奖转盘&#xff0c;所以闲来无事写了一个飞镖盘控件&#xff0c;在我看来它其它没有什么实用价值&#xff0c;纯属写来玩玩而已。 控件预览 实现 画背景 void QDartboard::drawBkg(QPai…

在window上配置NASM

NASM是支持x86、x64架构CPU的汇编器(汇编软件)&#xff1b;NASM也支持大量的文件格式&#xff0c;包括Linux&#xff0c;*BSD&#xff0c;a.out&#xff0c;ELF&#xff0c;COFF&#xff0c;Mach−O&#xff0c;Microsoft 16−bit OBJ&#xff0c;Win32以及Win64&#xff0c;同…

pc单机版雷电修改器源码

记得以前第一次接触电脑玩的第一个游戏就是雷电&#xff0c;那时候觉得这游戏真好玩&#xff0c;很过瘾。闲来没事干&#xff0c;所以想重温一下游戏&#xff0c;&#xff08;当时玩的不是这个版本的雷电&#xff09;&#xff0c;那时候是和小伙伴一起玩的&#xff0c;可惜现在…

《愤怒的小鸟》登陆PC 绿色免安装版首发

这群去年风靡手机的小鸟就不用过多的介绍了&#xff0c;一个月前其开发商游戏开发商Rovio表示将会推出PC版。今天为大家带来的就是绿色免安装版的愤怒的小鸟。 游戏的玩法很简单&#xff0c;将弹弓上的小鸟弹出去&#xff0c;砸到绿色的肥猪&#xff0c;将肥猪全部砸到就能过关…

Pygame小游戏之俄罗斯方块凭什么火了30年?(史上最畅销单机游戏)

前言 一款俄罗斯方块火了30年&#xff0c;成为有史以来最畅销的单机游戏。 它为什么有那么的魔力经久不衰? 小编总结了一些原因&#xff1a;上手极其简单&#xff0c;技巧却很多&#xff0c;满足在混乱中创造秩序的渴望…… 工程师阿列克谢说&#xff0c;人们并没有意识到&…

硬盘图标修改器 V1.0 绿色版

软件名称&#xff1a;硬盘图标修改器 V1.0 绿色版软件语言&#xff1a; 简体中文授权方式&#xff1a; 免费软件应用平台&#xff1a; Win7 / Vista / Win2003 / WinXP / Win2008 软件大小&#xff1a; 12.3MB图片预览&#xff1a; 软件简介:是否厌倦了千篇一律的Windows硬盘图…