HELLO WORLD--一起加油(🍺)!|

kingwzun

园龄:3年6个月粉丝:111关注:0

"蔚来杯"2022牛客暑期多校训练营4补题 K,H

K NIO's Sword 思维

题意:
玩家初始有一把攻击力为A=0的剑,需要依次击杀 𝑛n<1e6 个敌人,仅当攻击力模 𝑛 与 𝑖 同余才能击杀第 𝑖 个敌人。玩家可以升级剑,每次升级相当于A=10×A+x,x为1-9的任何一个数,问最少需要几次升级,才成杀死所有的敌人。
做法:
很明显我们有
A%n=i就没有A%n=i1,因此每次都至少升级一次。
因为n<1e6,所以每次升级次数不会大于6次。

设为了击杀第 𝑖 只怪物进行了 ki 次升级,则有
Ai1×10ki+xiAi(modn) 0𝑥𝑖<10𝑘𝑖

由于 Aii(modn)
则有
Ai1×10ki+xi=i(modn) 0𝑥𝑖<10𝑘𝑖

对于每个 i 值,从小到大枚举 ki 的取值,并计算 xi可取的最小非负值,直到找到一个满足条件的解即可。

#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 ,然后枚举长宽whwh=s.

这样我们就只需要一行一行的放这些矩形小方块即可。

有一个贪心的结论,每次我们都放入,小于等于当前行剩下的长度中最大的那一个方块。

本文作者:kingwzun

本文链接:https://www.cnblogs.com/kingwz/p/16535785.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   kingwzun  阅读(15)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示