Codeforces Round 863

文章讲述了多个编程竞赛中的题目,涉及数字插入操作、计算两点间的层数差、数组恢复、九进制转换等技术,展示了在不同情境下的算法设计和应用。

Portal.

A. Insert Digit

Portal.

赛时代码:

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

const int maxn=2e5+5;
string b;

int main()
{
	int t;cin>>t;
	while(t--)
	{
		int n,d;cin>>n>>d;
		cin>>b;
		// string res=b;
		// for(int i=0;i<n;i++) 
			// if(b[i]-'0'<d) 
			// {
	            // res.insert(i,1,d+'0');
				// break;
			// }
		// cout<<res<<endl;
		int i=0;
        while(i<n&&b[i]-'0'>=d) ++i;
        if(i==n) cout<< b + to_string(d)<<endl;
        else cout<<b.substr(0, i) + to_string(d) + b.substr(i)<<endl;
		// for(int i=1;i<=n+1;i++) a[i]=0;
		// for(int i=n;i;i--) 
		// {
			// char ch;cin>>ch;
			// a[i]=ch-'0';
		// }
		// int pos=n;
		// for(int i=n;i;i--)
			// if(a[i]<=d) {pos=i;break;}
		// if(d&&pos!=n)
		// {
			// for(int i=n;i>pos;i--) ans[i]=a[i];
			// ans[pos]=d;
			// for(int i=pos;i;i--) ans[i]=a[i];
			// for(int i=n;i;i--) cout<<ans[i];
			// cout<<endl;
		// }
		// else if(pos==n)
		// {
			// cout<<d;
			// for(int i=n;i;i--) cout<<a[i];
			// cout<<endl;
		// }
		// else
		// {
			// for(int i=n;i;i--) cout<<a[i];
			// cout<<0<<endl;
		// }
	}
	return 0;
}

B. Conveyor Belts

Portal.

发现层与层之间可以直接转移,分别计算出两个点的层数作差即可。

这里的层数由外而内递增,易得 i d = min ⁡ ( x , y , n − x + 1. n − y + 1 ) id=\min(x,y,n-x+1.n-y+1) id=min(x,y,nx+1.ny+1)

#include <bits/stdc++.h>
using namespace std;
#define x1 x11
#define x2 x22
#define y1 y11
#define y2 y22

void solve()
{
	int n,x1,x2,y1,y2;cin>>n>>x1>>y1>>x2>>y2;
	int id1=min(min(x1,y1),min(n-x1+1,n-y1+1)),id2=min(min(x2,y2),min(n-x2+1,n-y2+1));
	cout<<abs(id1-id2)<<endl;
}

int main()
{
	int t;cin>>t;
	while(t--) solve();
	return 0;
}

C. Restore the Array

Portal.

b i = max ⁡ ( a i , a i + 1 ) , b i − 1 = max ⁡ ( a i , a i − 1 ) b_i=\max(a_i,a_{i+1}),b_{i-1}=\max(a_i,a_{i-1}) bi=max(ai,ai+1),bi1=max(ai,ai1),所以有 a i ≤ min ⁡ ( b i , b i − 1 ) a_i\leq\min(b_i,b_{i-1}) aimin(bi,bi1)

注意特判边界的 a 1 a_1 a1 a n a_n an

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

const int maxn=2e5+5;
int a[maxn],b[maxn];

void solve()
{
	int n;cin>>n;
	for(int i=1;i<n;i++) cin>>b[i];
	b[0]=1e9,a[n]=b[n-1];
	for(int i=1;i<n;i++) a[i]=min(b[i],b[i-1]);
	for(int i=1;i<=n;i++) cout<<a[i]<<' ';
	cout<<endl;
}

int main()
{
	int t;cin>>t;
	while(t--) solve();
	return 0;
}

D. Umka and a Long Flight

Portal.

sol.

E. Living Sequence

Portal.

很巧妙的一道题。把不含 4 4 4 的数转化为不含 9 9 9 的数,则题目要求的序列就等价于一个九进制数表。把 k k k 转化为九进制,但是把九进制下的 [ 4 , 8 ] [4,8] [4,8] 映射为 [ 5 , 9 ] [5,9] [5,9] 即可。‘

#include <bits/stdc++.h>
using namespace std;
#define int long long

int a[10]={0,1,2,3,5,6,7,8,9};

void solve()
{
	int k;cin>>k;
	int cnt=1,ans=0;
	while(k)
		ans+=a[k%9]*cnt,cnt*=10,k/=9;
	cout<<ans<<'\n';
}

signed main()
{
	int t;cin>>t;
	while(t--) solve();
	return 0;
}

F. Is It Flower?

Portal.

sol.

G1. Vlad and the Nice Paths (easy version)

G2. Vlad and the Nice Paths (hard version)

Portal.

sol.

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值