A. X Axis

1.既然要求每个点到a到距离之和最小,不妨让点a为3个点中的中间点,也就是先对三个数从小到大排序,然后输出首尾数减中间值的绝对值之和即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()
void solve()
{
int a[3];
for(int i=0;i<3;i++)
{
cin>>a[i];
} sort(a,a+3);
cout<<abs(a[0]-a[1])+abs(a[2]-a[1]);
cout<<endl; } signed main()
{
int t;
cin>>t;
while(t--)
{
solve();
} }

B. Matrix Stabilization

1.显然如果一个数比它上下左右四个相邻的数大,它就会转化成这四个数中最大的数

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1}; void solve()
{
int n,m;
cin>>n>>m;
int a[105][105];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)
{
cin>>a[i][j];
}
} for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
int ma=-1;
if(i>0) ma=max(ma,a[i-1][j]);
if(i<n-1) ma=max(ma,a[i+1][j]);
if(j>0) ma=max(ma,a[i][j-1]);
if(j<m-1) ma=max(ma,a[i][j+1]);
//先找了合法的上下左右的最大值
//然后比较这个最大值和当前位置的值,如果这个位置的值大于这个最大值就更新
cout<<min(ma,a[i][j])<<" ";
}
cout<<endl;
}
} signed main()
{
ios::sync_with_stdio(0),cin.tie(0);
int t=1;
cin>>t;
while(t--) solve();
return 0;
}

C. Update Queries

1.因为我们可以改变字符串c的下标和索引数组,那么假如说索引数组中,没有重复的数字,也就是s中一个字符只被修改一次,那么将c按字典序排序,索引组也从小到大排序,自然修改后的s就是字典序最小的。

2.当索引数组有重复数字也没关系,因为我们可以把多余的那些次数用字典序大的字符来消耗掉,那么最终也变成了1中的操作步骤,所以答案就是我们先对c排序,然后按照索引从小到大修改即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1}; void solve()
{
int n,m;
map<int,int>mp;
cin>>n>>m;
string s1;
cin>>s1;
int a[100005];
for(int i=0;i<m;i++)
{
cin>>a[i];
mp[a[i]-1]=1;
} string s2;
int p=0;
cin>>s2;
sort(all(s2));
// cout<<s1<<" "<<s2;
//cout<<endl;
for(int i=0;i<s1.size();i++)
{
if(mp[i]==1)
{
if(p<s2.size()) s1[i]=s2[p++];
}
}
cout<<s1<<endl;
} signed main()
{
int t;
cin>>t;
while(t--)
{
solve();
} }

D. Mathematical Problem

1.因为只放n-2个符号,所以一定有一个数是两位数,并且因为只有+和️。

2.我们可以枚举这个两位数,然后算出每种的结果,比较找最大值即可

3.当我们一种方案里有0的时候,可以全部用乘号让结果为0,即为最小,当一种方案有数字1,我们用乘1让其保持不变,其余的数用加法,结果便为最小

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1}; void solve()
{
int n; cin>>n;
string s; cin>>s;
int ve[n];
for(int i=0;i<n;i++)
{
ve[i]=s[i]-'0';
}
int res=1e9;
//因为只能添加n-2个符号,所以有一个数字肯定是两位数
for(int i=1;i<n;i++)//i从1开始 因为j要==i-1
{
vector<int>num;
for(int j=0;j<n;j++)
{
if(j==i-1){//放这个两位数进去
int x=ve[j]*10+ve[j+1];
num.push_back(x);
j++;//这里把下一位用了 j记得++
}else{//放一位数进去
num.push_back(ve[j]);
}
}
//检查这些数 如果有0 相当于全用乘法可以得到最小值为0
//如果某个数为1,相当于乘1,不改变数的值
//其余的数全部用加法即可以得到值最小
int ans=0;
for(int i=0;i<num.size();i++)
{
if(num[i]==0){
cout<<0<<endl;
return;
}else if(num[i]==1)
{
continue;
}else{
ans+=num[i];
}
}
if(ans==0) ans++; //如果没有输出0,但ans为0,可能是1 01这种情况
res=min(ans,res); }
cout<<res<<endl; } signed main()
{
ios::sync_with_stdio(0),cin.tie(0);
int t=1;
cin>>t;
while(t--) solve();
return 0;
}

Codeforces Round 954 (Div. 3)的更多相关文章

  1. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  2. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  3. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  4. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  5. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  6. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  7. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  8. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  9. Codeforces Round #268 (Div. 2) ABCD

    CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...

  10. 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts

    题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...

随机推荐

  1. 数据同步工具-DataX

    1.DataX 基本介绍 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具,致力于实现包括:关系型数据库(MySQL.Oracle等).HDFS.Hive.HBase.ODPS.FTP等各种异 ...

  2. biancheng-Python教程

    目录http://c.biancheng.net/python/ 1Python编程基础2Python编程环境搭建3变量类型和运算符4列表.元组.字典和集合5Python字符串常用方法6Python流 ...

  3. 【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算

    学习&转载文章:[隐私计算笔谈]MPC系列专题(十):安全多方计算下的集合运算 集合运算 集合可以通俗地描述为确定的一堆东西.如有一个集合\(\),一个元素\(\)要么属于集合\(\),记做\ ...

  4. ORACLE存储过程中使用游标+BULK COLLECT的应用

    经过半天的折腾,编译通过调试结果正确,掌握此过程中的知识点,oracle存储过程编写就应用到了90%. CREATE OR REPLACE PROCEDURE JUNAN.P_IPT_QUOTN_IN ...

  5. 释放全球互连的数字潜力!MWC 2024云网高峰论坛召开,中国电信天翼云扬帆起航!

    2月27日,在2024年世界移动通信大会(MWC 2024)期间,中国电信云网高峰论坛顺利召开.本次论坛以"释放全球互连的数字潜力"为主题,汇聚全球多个国家和地区的通信业领袖和重量 ...

  6. DeepSeek 不再卡顿,从此告别服务器繁忙,请稍后再试(建议收藏!)

    大家好,我是六哥. 由于DeepSeek真的太火了,也许你也跟我一样,常会遇到这样的情况: 真的让人抓狂,10条回复里常常有9条是"服务器blabla,请稍后重试",看到这话,就问 ...

  7. jenkins全局工具配置

  8. Linux驱动---设备驱动模型

    目录 一.简介 二.驱动模型 2.1.总线 2.2.设备 2.3.驱动 三.设备树 3.1.设备树简介 3.2.设备树格式 3.3.节点格式 3.4.节点属性 四.设备树API函数 4.1获取设备节点 ...

  9. LeetCode 题解大全

    项目说明 LeetCode 系列题解致力于帮助程序员更好地理解和掌握算法思维,内容包含详细的解题思路分析.图文并茂的示例讲解和完整的代码实现. LeetCode 最全题解:持续更新中,欢迎 Star ...

  10. 用python做时间序列预测八:Granger causality test(格兰杰因果检验)

    如果想知道一个序列是否对预测另一个序列有用,可以用Granger causality test(格兰杰因果检验). Granger causality test的思想 如果使用时间序列X和Y的历史值来 ...