"蔚来杯"2022牛客暑期多校训练营4补题 K,H
K NIO's Sword 思维
题意:
玩家初始有一把攻击力为A=0的剑,需要依次击杀 𝑛 个敌人,仅当攻击力模 𝑛 与 𝑖 同余才能击杀第 𝑖 个敌人。玩家可以升级剑,每次升级相当于,x为1-9的任何一个数,问最少需要几次升级,才成杀死所有的敌人。
做法:
很明显我们有
就没有,因此每次都至少升级一次。
因为,所以每次升级次数不会大于6次。
设为了击杀第 只怪物进行了 次升级,则有
由于
则有
对于每个 i 值,从小到大枚举 的取值,并计算 可取的最小非负值,直到找到一个满足条件的解即可。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define int long long int pw[20]; int n; int A; int check(int len,int i) { int res=A*(pw[len]%n); res%=n; int need=(i-res+n)%n; if(need<pw[len]) return 1; else return 0; } signed main() { cin>>n; pw[0]=1; for(int i=1;i<=15;i++) pw[i]=pw[i-1]*10; int ans=0; for(int i=1;i<=n;i++) { for(int j=0;j<=6;j++) { if(check(j,i)) { A=i; ans+=j; break; } } } cout<<ans<<endl; return 0; }
H Wall Builder II 贪心
给定一个n (n<100)。
则给你有 n 个 11 的矩形, n-1 个 12 的矩形, n-2 个 13 的矩形...... 一个 1n 的矩形。
现在你需要把他们排成一个矩形,使得周长最长。
注意:只能横着放。
输出方案。
思路
模拟即可。
我们先获得这个大矩形的面积 s ,然后枚举长宽.
这样我们就只需要一行一行的放这些矩形小方块即可。
有一个贪心的结论,每次我们都放入,小于等于当前行剩下的长度中最大的那一个方块。
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/16535785.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步