Codeforces Round 954 (Div. 3)

A. X Axis
题意:在一条x轴上给定三个点,找到一个点,使得: ∑ i = 1 3 ∣ x − a i ∣ \sum_{i=1}^{3}|x-ai| i=13xai最大。

解:注意到: 0 < = x < = 10 0<=x<=10 0<=x<=10,故遍历每个点计算即可。

B. Matrix Stabilization
题意:给定一个 n ∗ m n*m nm的矩阵,找到某个单元格 ( i , j ) (i,j) (i,j),与它相邻的单元格的值严格小于它的值,然后将该单元格的值一直减小直到不满足严格小于的条件;若有多个这样的单元格,从左到右、从上到下执行。问最后的矩阵如何。

解:若有这样一个单元格,那么这个单元格一定会变成与它相邻的单元格中的最大值。
顺序检查修改即可。

C. Update Queries
题意:给定长度为 n n n的字符串 s s s m m m个整数 i n d i ind_{i} indi,其中 i n d i ind_{i} indi对应 s s s中的索引,以及长度为 m m m的字符串 c c c,可以任意排列 i n d ind ind数组,按照顺序执行: s [ i n d i ] = c [ i ] s[ind_{i}]=c[i] s[indi]=c[i],问可以得到字典序最小的字符串 s s s

解:首先可以对字符串 c c c按照字典序排序,因为 i n d ind ind数组可以任意打乱。字符串 s s s中只有 i n d i ind_{i} indi位置上会改变,按照排序后的字符串依次放入即可。需要注意的是我们需要对 i n d ind ind数组去重,因为存在覆盖关系。

AC代码:

void solve()
{
   
      int n, m; cin >> n >> m;
      string s; cin >> s;
      vector<int> ind(m);
      forn (i, 0, m) cin >> ind[i];
      set<int> pos;
      forn (i, 0, m) pos.insert(ind[i]);
      string c; cin >> c;
      sort(all(c)); int cnt = 0;
      for(auto i : pos) {
   
            s[i - 1] = c[cnt++];
      }
      cout << s << endl;
}

D. Mathematical Problem
题意:给定长度为

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MuzJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值