其实这道题的主体并不难,主要是细节很多


我们可以把题目分成界限分明的两部分,第一部分,屠每条龙所用的剑只和当前拥有的剑有关。于是可以单独开一个数据结构按题目维护。

另一部分找到最小攻击次数,可以化作以下式子:

\(atk \cdot x \equiv a[i](mod\;p[i])\)

这时我们便能明白题目中所有宝剑攻击力均为1的部分分的含义。因为此时就是标准的exkmp模板。

所以我们要解决的就是x带系数的一元同余方程组。

思考excrt的步骤:

设 \(m = gcd(p_1,p_2...,p_{i-1})\),x满足前i-1个同余方程,则满足前i个方程的解必须为 \(x+tm\) 的形式(t为常数)

那么实际上方程为:\(x+tm \equiv a_i(mod\;p_i)\)

既然x为定值,那么可以把x移动到右边,使方程变为\(tm \equiv a_i-x(mod\;p_i)\)

于是可以化为:\(tm+pa_i=b_i-x\)。即一个以t,p为未知数的二元一次不定方程。然后用扩展欧几里得求解。

发现实际上,当x带系数 atk 时最后一个不定方程可以转化为:

\(tm\cdot atk+pai=b_i-atk\cdot x\)

其实也就是把 \(x+tm\)变成了\(atk(x+tm)\)。

这同样是一个同余方程,所以同样可以用扩欧求解

但要注意几个小问题:

  1. 不同于一般的excrt第一个方程直接赋值解决,这里第一个方程也需要做一次扩欧,所以和后面一起循环就好。

  2. 与 excrt 模板一样,在进行乘法时,也需要__int128或龟速乘帮忙。

  3. 注意题目中必须要砍到龙血量为非正数才能杀死龙,所以当最终答案不足以杀死血最厚的龙时需要不断地加上所有攻击的最小公倍数(为什么是最小公倍数?原因和设m的原因相同)。

  4. 为什么excrt和atk要用代码块?因为不这样会有烦人的语法检查

P4774 倚天屠龙传 题解的更多相关文章

  1. Bzoj 4591: [Shoi2015]超能粒子炮·改 数论,Lucas定理,排列组合

    4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 178  Solved: 70[Submit][Stat ...

  2. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 128[Submit][Status ...

  3. 【数论·错位排列】bzoj4517 排列计数

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1428  Solved: 872[Submit][Statu ...

  4. bzoj 4723 [POI2017]Flappy Bird 模拟

    [POI2017]Flappy Bird Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 482  Solved: 196[Submit][Status ...

  5. 3993: [SDOI2015]星际战争

    3993: [SDOI2015]星际战争 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1244  Solved: ...

  6. 【BZOJ 4151 The Cave】

    Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 293  Solved: 144[Submit][Status][Di ...

  7. bzoj 4897 天赋 有向图的矩阵数定理

    4894: 天赋 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 104  Solved: 80[Submit][Status][Discuss] De ...

  8. bzoj3874&2832 [Ahoi2014]宅男计划 模拟退火,三分

    [Ahoi2014&Jsoi2014]宅男计划 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 962  Solved: 371[Submit][ ...

  9. bzoj3609 [Heoi2014]人人尽说江南好 博弈

    [Heoi2014]人人尽说江南好 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 581  Solved: 420[Submit][Status][D ...

  10. [Bzoj3611][Heoi2014]大工程(虚树)

    3611: [Heoi2014]大工程 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 2000  Solved: 837[Submit][Status ...

随机推荐

  1. 【Java】List

    对List中map集合中某个字段排序 升序排列 方法1 Collections.sort(maps, new Comparator<Map<String, Object>>() ...

  2. [OC] APP唤醒,URL Scheme,工程中的 URL Types 和 LSApplicationQueriesSchemes

    1.网页唤醒APP: 假设我们有一个APP,名字叫做 "APP甲",需要通过网页唤起 APP甲,我们首先需要在 APP甲的工程文件里配置参数 URL Types: 在 info.p ...

  3. CCF 202012-2 期末预测之最佳阈值

    #include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...

  4. 小凡的Python之路——启航

    小凡,经过自己的努力考上了一所普通的二本大学.高考填写志愿的时候,根本不知道选择什么专业,稀里糊涂的被调剂到"应用统计学". 老师和同学都说,现在是大数据时代,数据分析现在是热门岗 ...

  5. BZOJ1008 [HNOI2008]越狱 (快速幂,组合)

    题目大意 求\(m\)种数字组成的长度为\(n\)的序列的种数,序列中至少有一段连续的数字 分析 用可重排列的种数减去,相邻数字互不相同的序列种数 考虑相邻互不相同,第一个元素有\(m\)种可能,后面 ...

  6. SQL servr——基础篇之DML增删改查

    DML:数据操作语言 用于添加.更新.删除和查询数据库中的语言 添加--insert语句 向数据表中插入新的行(记录)可多行可一行 语法:insert  [into]  表名  [(column1,. ...

  7. Redis 集群模式的安装与配置【源码安装redis-7.0.5】

    Redis最新版下载地址:http://download.redis.io/releases/redis-7.0.5.tar.gz 步骤如下: 1)wget http://download.redis ...

  8. Python爬虫之Scrapy框架爬虫实战

    Python爬虫中Scrapy框架应用非常广泛,经常被人用于属于挖掘.检测以及自动化测试类项目,为啥说Scrapy框架作为半成品我们又该如何利用好呢 ?下面的实战案例值得大家看看. 目录: 1.Scr ...

  9. Python生态工具

    Python内置小工具 1秒钟启动一个下载服务器 在实际工作中,时常会有这样的一个需求:将文件传给其他同事.将文件传给同事本身并不是一个很繁琐的工作,现在的聊天工具一般都支持文件传输.但是,如果需要传 ...

  10. VUE-使用touchstart、touchmove、touchend实现拖拽卡片列表,实现更新排序功能

    感谢本文参考地址,原文解析更加清晰如有需要请移步:https://blog.csdn.net/weixin_40400844/article/details/114849253 怕原链接失效,将代码拷 ...