当前位置: 首页 > news >正文

深圳网站建设hi0755网站首页三张海报做多大

深圳网站建设hi0755,网站首页三张海报做多大,做网站最小的字体是多少钱,南通网站建设外包B4207 [常州市赛 2021] 战士 题目背景 搬运自 http://czoj.com.cn/p/443。数据为民间数据。 题目描述 小 X \text X X 在玩一款操控战士和怪物战斗的游戏。战士初始生命值为 iH \text{iH} iH 、初始攻击力为 iA \text{iA} iA 。怪物只有一个#xff0c;初始生命值为 H…B4207 [常州市赛 2021] 战士 题目背景 搬运自 http://czoj.com.cn/p/443。数据为民间数据。 题目描述 小 X \text X X 在玩一款操控战士和怪物战斗的游戏。战士初始生命值为 iH \text{iH} iH 、初始攻击力为 iA \text{iA} iA 。怪物只有一个初始生命值为 H H H 。 战斗是回合制的且有一个回合数限制 M M M 。如果在 M M M 回合内怪物还没有被杀死小 X \text X X 就失败了。在每个回合战士先行动怪物再行动。 每当战士行动小 X \text X X 可以命令战士做以下两件事中的一件 攻击让怪物的生命值减少当前战士攻击力的数值。磨刀让战士攻击力增加 dA \text{dA} dA 。 每当怪物行动怪物会攻击战士使战士的生命值减少 C i C_i Ci​ 其中 i i i 为回合数。 当一个角色生命值小于等于 0 0 0 时角色会死亡。 如果怪物死亡那么战斗就结束了。如果战士死亡会立刻复活将生命值和攻击力恢复为初始数值。 现在小 X X X 想问问你最少能在几个回合内杀死怪物。 输入格式 第一行 5 5 5 个整数分别为 iH,iA , H , dA , M \text{iH,iA},H,\text{dA},M iH,iA,H,dA,M意义见问题描述。 第二行 M M M 个整数表示第 i i i 个回合怪物的攻击力 C i C_i Ci​ 。 输出格式 输出一行一个整数表示最少能在几个回合内杀死怪物。如果 M M M 回合内杀不死输出 -1。 输入输出样例 #1 输入 #1 4 1 6 1 8 2 1 1 1 1 1 1 1输出 #1 5说明/提示 样例解释 其中一种合法方案 第一回合战士磨刀战士攻击力变为 2 2 2 怪物攻击战士生命值变成 2 2 2。第二回合战士攻击怪物生命值变为 4 4 4 怪物攻击战士生命值变成 1 1 1 。第三回合战士攻击怪物生命值变为 2 2 2 怪物攻击战士死亡后复活生命值变为 4 4 4 攻击力变为 1 1 1 。第四回合战士攻击怪物生命值变为 1 1 1 怪物攻击战士生命值变成 3 3 3 。第五回合战士攻击怪物死亡。 数据范围 本题共有 10 10 10 个测试点。 对于所有数据 1 ≤ iH,iA , H ≤ 10 9 , 0 ≤ dA ≤ 10 9 , 1 ≤ C i ≤ M ≤ 2 × 10 5 1\le \text{iH,iA},H\le10^9,0\le \text{dA}\le10^9,1\le C_i\le M\le2\times10^5 1≤iH,iA,H≤109,0≤dA≤109,1≤Ci​≤M≤2×105。 测试点编号 M M M特殊性质 1 1 1 ≤ 2 × 10 5 \le 2\times10^5 ≤2×105 dA 0 \text{dA}0 dA0 2 ∼ 3 2\sim3 2∼3 ≤ 20 \le20 ≤20无 4 ∼ 5 4\sim5 4∼5 ≤ 30 \le30 ≤30无 6 ∼ 8 6\sim8 6∼8 ≤ 10 3 \le10^3 ≤103无 9 ∼ 10 9\sim10 9∼10 ≤ 2 × 10 5 \le2\times10^5 ≤2×105无 模拟 贪心 a[i]表示不轮回的情况下战士i回合操作的最大伤害。long long 型如果大于LLONG_MAX/4取LLONG_MAX/4。 dead0第dead回合轮回。hurt0LL记录轮回前的伤害。HPiH记录战士剩余生命值。 枚举i 1 to M { if(hurt a[i-dead] H){return i ;} if(C[i] HP){ HPiH;deadi;hurt a[i-dead];} else HP - C[i]。} return -1 计算a[i] 令磨刀x回合显然先磨刀再攻击。总伤害,用a代替iA,d代替da ( a d × x ) ( i − x ) a × i ( i × d − a ) x − d × x × x 式子一 \Large(ad \times x)(i-x)a\times i (i\times d -a)x - d \times x\times x 式子一 (ad×x)(i−x)a×i(i×d−a)x−d×x×x式子一 x 2 − 2 x i × d − a 2 d x^2-2x\frac{i\times d- a}{2d} x2−2x2di×d−a​ float f i × d − a d × 2.0 , 式子一 − d ( x − f ) 2 某个常数 \large f \large \frac{i\times d -a }{d \times 2.0},式子一-d(x-f)^2 某个常数 fd×2.0i×d−a​,式子一−d(x−f)2某个常数 如果f是整数x取f时最大值。 如果f不是整数向下取整或向上取整时是最大值。枚举两种情况。 注意 x 1 ⌊ f ⌋ , x 2 ⌈ f ⌉ x1 \lfloor \ f \rfloor,x2 \lceil \ f \rceil x1⌊ f⌋,x2⌈ f⌉ 如果x1(x2) i取i。小于0,取0。 用3个样例过不了。暴力枚举x错误的样例能过但超时。 说明F函数正确x的极值错误。 自己构造了N组数据没发现错误。晚上睡觉前灵光一现a和d相差很大的时候是否有问题 31号早上一试果然如此 a 3 , d 1 a3,d1 a3,d1 暴力算法和计算的x不一致。 a[i] max(F(x1, i), F(x2, i));auto tmp F(0, i);for (int j 1; j i; j) {tmp max(tmp, F(j, i));}//Assert::AreEqual(tmp, a[i]);assert(tmp a[i]);;i为1时暴力计算的是3解方程的是4。 最终发现错误原因赋值号打成了等号。 if (x1 i) { x1 i; }代码 核心代码 #include iostream #include sstream #include vector #includemap #includeunordered_map #includeset #includeunordered_set #includestring #includealgorithm #includefunctional #includequeue #include stack #includeiomanip #includenumeric #include math.h #include climits #includeassert.h #includecstring #includelist #includearray#include bitset using namespace std;templateclass T1, class T2 std::istream operator (std::istream in, pairT1, T2 pr) {in pr.first pr.second;return in; }templateclass T1, class T2, class T3 std::istream operator (std::istream in, tupleT1, T2, T3 t) {in get0(t) get1(t) get2(t);return in; }templateclass T1, class T2, class T3, class T4 std::istream operator (std::istream in, tupleT1, T2, T3, T4 t) {in get0(t) get1(t) get2(t) get3(t);return in; }templateclass T1, class T2, class T3, class T4, class T5, class T6, class T7 std::istream operator (std::istream in, tupleT1, T2, T3, T4,T5,T6,T7 t) {in get0(t) get1(t) get2(t) get3(t) get4(t) get5(t) get6(t);return in; }templateclass T int vectorT Read() {int n;cin n;vectorT ret(n);for (int i 0; i n; i) {cin ret[i];}return ret; } templateclass T int vectorT ReadNotNum() {vectorT ret;T tmp;while (cin tmp) {ret.emplace_back(tmp);if (\n cin.get()) { break; }}return ret; }templateclass T int vectorT Read(int n) {vectorT ret(n);for (int i 0; i n; i) {cin ret[i];}return ret; }templateint N 1000000 class COutBuff { public:COutBuff() {m_p puffer;}templateclass Tvoid write(T x) {int num[28], sp 0;if (x 0)*m_p -, x -x;if (!x)*m_p 48;while (x)num[sp] x % 10, x / 10;while (sp)*m_p num[sp--] 48;AuotToFile();}void writestr(const char* sz) {strcpy(m_p, sz);m_p strlen(sz);AuotToFile();}inline void write(char ch){*m_p ch;AuotToFile();}inline void ToFile() {fwrite(puffer, 1, m_p - puffer, stdout);m_p puffer;}~COutBuff() {ToFile();} private:inline void AuotToFile() {if (m_p - puffer N - 100) {ToFile();}}char puffer[N], * m_p; };templateint N 1000000 class CInBuff { public:inline CInBuff() {}inline CInBuffN operator(char ch) {FileToBuf();while ((\r *S) || (\n *S) || ( *S)) { S; }//忽略空格和回车ch *S;return *this;}inline CInBuffN operator(int val) {FileToBuf();int x(0), f(0);while (!isdigit(*S))f | (*S -);while (isdigit(*S))x (x 1) (x 3) (*S ^ 48);val f ? -x : x; S;//忽略空格换行 return *this;}inline CInBuff operator(long long val) {FileToBuf();long long x(0); int f(0);while (!isdigit(*S))f | (*S -);while (isdigit(*S))x (x 1) (x 3) (*S ^ 48);val f ? -x : x; S;//忽略空格换行return *this;}templateclass T1, class T2inline CInBuff operator(pairT1, T2 val) {*this val.first val.second;return *this;}templateclass T1, class T2, class T3inline CInBuff operator(tupleT1, T2, T3 val) {*this get0(val) get1(val) get2(val);return *this;}templateclass T1, class T2, class T3, class T4inline CInBuff operator(tupleT1, T2, T3, T4 val) {*this get0(val) get1(val) get2(val) get3(val);return *this;}templateclass T intinline CInBuff operator(vectorT val) {int n;*this n;val.resize(n);for (int i 0; i n; i) {*this val[i];}return *this;}templateclass T intvectorT Read(int n) {vectorT ret(n);for (int i 0; i n; i) {*this ret[i];}return ret;}templateclass T intvectorT Read() {vectorT ret;*this ret;return ret;} private:inline void FileToBuf() {const int canRead m_iWritePos - (S - buffer);if (canRead 100) { return; }if (m_bFinish) { return; }for (int i 0; i canRead; i){buffer[i] S[i];//memcpy出错 }m_iWritePos canRead;buffer[m_iWritePos] 0;S buffer;int readCnt fread(buffer m_iWritePos, 1, N - m_iWritePos, stdin);if (readCnt 0) { m_bFinish true; return; }m_iWritePos readCnt;buffer[m_iWritePos] 0;S buffer;}int m_iWritePos 0; bool m_bFinish false;char buffer[N 10], * S buffer; }; class Solution {public:int Ans(int iH, int iA, const int H, int dA, vectorint C){ const int M C.size();vectorlong long a(M 1);auto F [](long long x,long long i) {const long long ll1 dA * x iA;const long long ll2 i - x;if (LLONG_MAX / ll1 ll2) { return (long long) H; }return ll1 *ll2 ;};for (long long i 1; i M; i) {if (0 dA) {a[i] iA * i;continue;}const long long f1 i * dA - iA;const long long f2 dA * 2LL;long long x1 f1 / f2; long long x2 x1 (0 ! f1 % f2);if (x1 i) { x1 i; }if (x2 i) { x2 i; }if (x1 0) { x1 0; }if (x2 0) { x2 0; }a[i] max(F(x1, i), F(x2, i)); }int dead 0;long long hurt 0, HP iH; for (int m 1; m M; m) {if (hurt a[m - dead] H) { return m; }if (C[m-1] HP) {HP iH; hurt a[m - dead]; dead m; }else { HP - C[m-1]; }}return -1;}};int main() { #ifdef _DEBUGfreopen(a.in, r, stdin); #endif // DEBUG ios::sync_with_stdio(0); cin.tie(nullptr);//CInBuff in; COutBuff10000000 ob; int iH,iA,H,dA,Q;cin iH iA H dA Q;auto C Readint(Q); #ifdef _DEBUG printf(iH%d,iA%d,H%d,dA%d,iH,iA,H,dA);Out(C, ,C);//Out(edge, ,edge); /*Out(que, ,que);*///Out(ab, ,ab);//Out(par, par);//Out(que, que);//Out(B, B); #endif // DEBUG auto res Solution().Ans(iH, iA, H, dA, C);cout res;return 0; };单元测试 int iH, iA, H, dA;vectorint C;TEST_METHOD(TestMethod01){iH 4, iA 1, H 1, dA 0, C { 2,1,1,1,1,1,1,1 };auto res Solution().Ans(iH, iA, H, dA, C);AssertEx(1, res);}TEST_METHOD(TestMethod11){iH 4, iA 1, H 6, dA 1, C { 2,1,1,1,1,1,1,1 };auto res Solution().Ans(iH, iA, H, dA, C);AssertEx(5, res);}TEST_METHOD(TestMethod12){iH 4, iA 3, H 4, dA 1 , C.assign(100000,1);auto res Solution().Ans(iH, iA, H, dA, C);AssertEx(2, res);}# 扩展阅读 我想对大家说的话工作中遇到的问题可以按类别查阅鄙人的算法文章请点击《算法与数据汇总》。学习算法按章节学习《喜缺全书算法册》大量的题目和测试用例打包下载。重视操作有效学习明确的目标 及时的反馈 拉伸区难度合适 专注闻缺陷则喜(喜缺)是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛失败反思成功 成功反思成功 视频课程 先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 测试环境 操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17 如无特殊说明本算法用**C**实现。
http://www.hkea.cn/news/14348965/

相关文章:

  • 邵阳市住房和城乡建设局网站2019做哪个网站赚钱
  • 阿里云如何做网站2021年最火的网页游戏
  • 网站尺寸规范网站建设分金手指专业十四
  • 建设网站企业专业服务乐山市建设银行网站
  • 网页制作网站源码如何自己做购物网站
  • 网站服务器多少钱一年惠阳市网站建设
  • 做网站图片用什么格式最好怎样进行网站板块建设
  • 香河县做网站网站建设为什么不清晰
  • 邯郸企业建站网络公司运营是干啥的
  • 学校网站 aspx源码多网站怎么做seo
  • 婚庆公司网站模板下载百度榜
  • ui设计师个人简历四川大学网站seo诊断报告
  • wordpress文章行距很大搜索引擎优化工作主要做好哪些方面
  • 大宗商品交易平台上市公司seo推广必须要做的9种方法
  • 自学做网站多久王悦做网站
  • wordpress积分充值插件网站建设关健词优化网络公司怎么样
  • 中山教育平台网站建设网站必须要备案吗
  • ps做字幕模板下载网站wordpress新建界面
  • 如何一个空间做多个网站手工制作火箭模型
  • 网站后台都有哪些成都装修网站建设
  • 如何做网站挂qq网站建设华科技
  • 网站空间数据库旅游网站首页
  • 在游戏网站做中介合法网站建设是一项系统工程
  • 咨询类网站开发的意义怎样自己做免费的网站
  • 蓝科企业网站系统南京网站建设哪里好
  • html好看的网站做物流有哪些网站
  • 广西网站建设性价比高网站的建立过程
  • 网站开发技术岗位职责钓鱼网站怎么制作html
  • 公司网站建设哪儿济南兴田德润实惠吗网站建设的公司有哪些
  • 南宁百度seo网站优化品牌网站建站公司