当前位置: 首页 > news >正文

ABC370

## A - Raise Both Hands (模拟)

题意:输入l,r,如果l=1r=0输出yes,l=0r=1输出no,否则输出Invalid

代码:

```
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
    int l,r;cin>>l>>r;
    if(l==1&&r==0)cout<<"Yes"<<endl;
    else if(l==0&&r==1)cout<<"No"<<endl;
    else cout<<"Invalid"<<endl; 
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int t=1; 
    while(t--)sol();
    return 0;
}

```

## B - Binary Alchemy(模拟)

题意:当元素i和元素j组合在一起,如果i>=j,他们就变成aij,否则aji,求最后得到的元素

代码:

```
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
    int n;cin>>n;
    int a[n+10][n+10];
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            cin>>a[i][j];
        }
    }
    int b=1;
    for(int i=1;i<=n;i++){
        if(b<i){
            b=a[i][b];
        }
        else b=a[b][i];
    }
    cout<<b<<endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int t=1; 
    while(t--)sol();
    return 0;
}

```

## C - Word Ladder(模拟)

题意:给定两个数,每次可以修改一个字符,每次修改完必须是字典序最小,输出每次修改完的字符

代码:

```
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
    string s,t;cin>>s>>t;
    vector<string>v;
    map<string,int>mp;
    while(s!=t){
        string ss=s;
        mp.clear();
        for(int i=0;i<s.size();i++){
            char c=ss[i];
            if(ss[i]!=t[i]){
                ss[i]=t[i];
                mp[ss]++;
                ss[i]=c;
            }
        }
        for(auto &x:mp){
            v.push_back(x.first);
            s=x.first;
            break;
        }
    }
    cout<<v.size()<<endl;
    for(int i=0;i<v.size();i++)cout<<v[i]<<endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int t=1; 
    while(t--)sol();
    return 0;
}

```

## D - Cross Explosion(二分)

题意:给定h×w的墙,给定q个坐标,如果当前坐标有墙则摧毁,否则摧毁离它最近的上下左右四个墙

分析:将每一行每一列存入1-w,1-h,用二分寻找上下左右离当前位置最近的四个坐标并消除,最后求出每一行剩余个数相加

代码:

```
#include<bits/stdc++.h> 
using namespace std;
int main() {
  int H, W, Q;
  cin >> H >> W >> Q;
  vector<set<int>> g1(H), g2(W);
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      g1[i].insert(j);
      g2[j].insert(i);
    }
  }
  auto erase = [&](int i, int j) { g1[i].erase(j), g2[j].erase(i); };

  while (Q--) {
    int R, C;
    cin >> R >> C;
    --R, --C;
    if (g1[R].count(C)) {
      erase(R, C);
      continue;
    }
    // up
    {
      auto it = g2[C].lower_bound(R);//第一个大于r 
      if (it != begin(g2[C])) erase(*prev(it), C);//*prev(it)it的前一个值 
    }
    // down
    {
      auto it = g2[C].lower_bound(R);
      if (it != end(g2[C])) erase(*it, C);
    }
    // left
    {
      auto it = g1[R].lower_bound(C);
      if (it != begin(g1[R])) erase(R, *prev(it));
    }
    // right
    {
      auto it = g1[R].lower_bound(C);
      if (it != end(g1[R])) erase(R, *it);
    }
  }

  int ans = 0;
  for (int i = 0; i < H; i++) ans += g1[i].size();
  cout << ans << "\n";
}

```

## E - Avoid K Partition(dp+前缀和)

题意:将一组数组任意分成若干份,这些分割方法中,有多少种没有任何一段子序列的和等于k

分析:用fi记录前i个数划分情况,用前缀和记录区间和,pre[j]=pre[i]-k,用map记录

代码:

```
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
const ll mod=998244353;
ll a[N],f[N],pre[N];
void sol(){
    ll n,k,sum=1;cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++){
        pre[i]=pre[i-1]+a[i];
    }
    map<ll,ll>mp;
    f[0]=1;mp[0]=1;
    for(int i=1;i<=n;i++){
        f[i]=(sum-mp[pre[i]-k]%mod+mod)%mod;
        mp[pre[i]]=(mp[pre[i]]+f[i])%mod;
        sum=(sum+f[i])%mod;
    }
    cout<<f[n]<<endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int t=1; 
    while(t--)sol();
    return 0;
}

```

http://www.lryc.cn/news/470047.html

相关文章:

  • C语言[求x的y次方]
  • JavaScript part2
  • HarmonyOS开发 - 本地持久化之实现LocalStorage实例
  • 【C++打怪之路Lv12】-- 模板进阶
  • 第23周Java主流框架入门-SpringMVC 2.RESTful开发风格
  • QT枚举类型转字符串和使用QDebug<<重载输出私有枚举类型
  • 手机柔性屏全贴合视觉应用
  • 《Python游戏编程入门》注-第3章3
  • Netty-TCP服务端粘包、拆包问题(两种格式)
  • centos安装指定版本的jenkins
  • QT 周期性的杀死一个进程(软件),一分钟后自动退出
  • MySQL任意版本安装卸载和数据库原理图绘制
  • 技术成神之路:设计模式(二十三)解释器模式
  • 2024软考《软件设计师》-Python专题知识(含历年真题解析)
  • 基于大数据 Python+Vue 旅游推荐可视化系统(源码+LW+部署讲解+数据库+ppt)
  • 使用虚拟机搭建环境:CentOS7 Docker、MySQL、Redis 安装与配置
  • [分享] Docker容器可视化管理工具 - WGCLOUD
  • 保存网页中 canvas 的内容
  • PID控制原理
  • python 使用 企微机器人发送消息
  • ARM/Linux嵌入式面经(五二):华为
  • [旧日谈]高清画面撕裂问题考
  • Nginx反向代理-域名代理前后端项目部署流程
  • 代码随想录(十二)——图论
  • 如何通过 Service Mesh 构建高效、安全的微服务系统
  • MySQL 临时表详解
  • Kafka系列之:Kafka集群新增节点后实现数据均衡
  • 实验:使用Oxygen发布大型手册到Word格式
  • 一个基于.NET8+WPF开源的简单的工作流系统
  • MFC工控项目实例二十七添加产品参数