题目:https://loj.ac/problem/2721 1.注意别一输入 p[ i ] 就 a[ i ] %= p[ i ] ,因为在 multiset 里找的时候还需要真实值. 2.注意用 multiset .并且,因为要 upper_bound( a[ i ] ) ,而 a[ i ] 是一个 long long 类型的,所以即使 multiset 里装的都是 int 类型的,也得开成 long long 的 multiset . 3.注意除了同余的限制,还有一个是 \( x*c_i >…
题目链接 loj#2721. 「NOI2018」屠龙勇士 题解 首先可以列出线性方程组 方程组转化为在模p意义下的同余方程 因为不保证pp 互素,考虑扩展中国剩余定理合并 方程组是带系数的,我们要做的是在%p意义下把系数除过去,(系数为atk[i]) (atk[i],p[i]) 不等于1时无逆元,此时仍可能有解 很显然无解的情况就是 瞎jb猜的,无解的话就是%p[i]意义下atk[i] != 0 ,a[i] = 0 考虑原方程式ai = atk{i] * x + p[i] * y 方程两边同除g…
题意 LOJ #2721. 「NOI2018」屠龙勇士 题解 首先假设每条龙都可以打死,每次拿到的剑攻击力为 \(ATK\) . 这个需要支持每次插入一个数,查找比一个 \(\le\) 数最大的数(或者找到 \(>\) 一个数的最小数),删除一个数. 这个东西显然是可以用 std :: multiset<long long> 来处理的(手写权值线段树或者平衡树也行). 对于每一条龙我们只能刚好一次秒杀,并且要恰好算血量最后为 \(0\)(一波带走). 然后就转化成求很多个方程: \[ \…
「NOI2018」屠龙勇士 题目描述 小\(D\)最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号\(1-n\)顺序杀掉\(n\) 条巨龙,每条巨龙拥有一个初始的生命 值ai .同时每条巨龙拥有恢复能力,当其使用恢复能力时,它的生命值就会每 次增加 \(p_i\) ,直至生命值非负.只有在攻击结束后且当生命值恰好为 \(0\) 时它才会 死去. 游戏开始时玩家拥有\(m\)把攻击力已知的剑,每次面对巨龙时,玩家只能选择一 把剑,当杀死巨龙后这把剑就会消失,但作为奖励,玩家会获得…
「NOI2018」屠龙勇士(EXCRT) 终于把传说中 \(NOI2018D2\) 的签到题写掉了... 开始我还没读懂题目...而且这题细节巨麻烦...(可能对我而言) 首先我们要转换一下,每次的 \(atk[i]\) 都可以用 \(multiset\) 找. 我们发现题目求的是 \(atk*x\equiv a_i(\text{mod}\ p_i)\),所以我们做一遍 \(exgcd\),求出同余方程. 然后就可以愉快的 \(EXCRT\) 了~ 不过发现一次要把龙的血量清零,所以一定要减到负…
青蛙的约会 Language:Default 青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 133470 Accepted: 29610 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,…
「NOI2018」屠龙勇士 首先对于每个龙用哪个剑砍,我们可以用set随便模拟一下得到. 然后求出拿这个剑砍这条龙的答案 \[ atk_ix-p_iy=a_i \] 其中\(atk_i\)是砍第\(i\)条龙的剑的攻击力,\(p_i\)是龙的回复系数,\(a_i\)是初始生命值,然后\(x\)就是单独考虑这个剑砍这个龙的答案. 我们可以拿exgcd去解这个方程,但是冷静分析一波,我们发现回复次数\(y\)需要非负. 然后我们再冷静一波,发现\(p_i\not=1\)的数据都有一个叫性质\(1\)…
题目大意:略 真是一波三折的一道国赛题,先学了中国剩余定理,勉强看懂了模板然后写的这道题 把取出的宝剑攻击力设为T,可得Ti*x=ai(mod pi),这显然是ax=c(mod b)的形式 这部分用exgcd求解x的最小正整数解 先把a,b,c除以gcd(a,b),如果c不能整除gcd(a,b)那么无解.此时a,b互质,用exgcd求得a的逆元,逆元乘回来gcd(a,b)就是x的最小正整数解,注意可能爆long long要用龟速乘 那么此时求得的x是仅仅对于这一个方程的,我们要把它带到excrt…
屠龙勇士 很久很久以前,巨龙突然出现,带来了灾难带走公主又消失不见.王国十分危险,世间谁最勇敢,一位英雄出现-- 学习于该大佬博客 那么你就是这位英雄,不过不同的是,你面对的是一群巨龙,虽然巨龙都不会攻击:你每次使用的剑一打就爆,虽然每打死一条巨龙的奖励是一把新的剑:巨龙不会因为生命值降为负数而死亡,虽然巨龙会憨憨地回血然后把自己奶死:最重要的是你完成游戏不会获得公主的爱,只会获得参加ION8012的报名机会.你一听到最后一条彻底就失去了兴致,于是写了一个机器人帮你完成任务XD 简单来说,就是求…
/* 首先杀每条龙用到的刀是能够确定的, 然后我们便得到了许多形如 ai - x * atki | pi的方程 而且限制了x的最小值 那么exgcd解出来就好了 之后就是扩展crt合并了 因为全T调了一个小时 结果是没加文件?? */ #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<set> #include<iostream&g…