Codeforces Round 744 (Div. 3)

2023-10-28

A.Casimir's String Solitaire

一个A需要一个B一个C需要一个B,所以只要A和C的个数之和等于B即可

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
void solve()
{
    string s;
    cin>>s;
    int cnt1=0,cnt2=0,cnt3=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='A') cnt1++;
        else if(s[i]=='B') cnt2++;
        else if(s[i]=='C') cnt3++;
    }
//    cout<<cnt1<<endl;
//    cout<<cnt2<<endl;
//    cout<<cnt3<<endl;
    if(cnt1+cnt3==cnt2) puts("Yes");
    else puts("No");
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

B.Shifting Sort

只需要n-1次,第一次将最小的移到第一位,第二次将第二小的移到第二位,以此类推,只需n-1次

但是要注意,d的范围是1到r-l,所以如果哪一次位置已经是对的时候,就不能输出答案,所以要记录答案,最后再一起输出

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#define int long long
using namespace std;
const int N=110;
int b[N];
struct node{
    int x,y;
    int d;
}q[N];
void solve()
{
//    cout<<endl;
    int n;
    cin>>n;
    vector<int>a;//不要乱加括号
    memset(q,0,sizeof q);
    int cnt=0;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        a.push_back(x);
        b[i]=x;
    }
    sort(b+1,b+1+n);
    int m=n;
    for(int i=1;i<n;i++){
        for(int j=0;j<m;j++){
            if(*a.begin()==b[i]){
                if(j) q[++cnt]={i,n,j};
                a.erase(a.begin());
                m--;
                break;
            }
            else{
                a.push_back(*a.begin());
                a.erase(a.begin());
            }
        }
    }
    cout<<cnt<<endl;
    for(int i=1;i<=cnt;i++){
        cout<<q[i].x<<" "<<q[i].y<<" "<<q[i].d<<endl;
    }
//    cout<<endl;
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

C.Ticks

对于每一个星号,去拓展V字型,如果拓展出的V字型的大小大于等于题目要求的k,那么该V字型可生成,标记一下,将其记成一个字母比如说w,不管之前该字符是型号还是点号,都被w覆盖了,最终看是否还存在星号,如果不存在星号,说明所需要绘制的图形可以被我们刚才所做的图形所覆盖,也就是说我们可以绘制出目标图形,则输出Yes,如果还存在星号,则说明不能完整绘制出目标图形,则输出No

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
const int N=50;
string s[N];
void solve()
{
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=0;i<n;i++) cin>>s[i];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(s[i][j]=='.') continue;
            int cnt=0;
            while(i-cnt>=0&&j-cnt>=0&&j+cnt<m&&s[i-cnt][j-cnt]!='.'&&s[i-cnt][j+cnt]!='.') cnt++;
            cnt--;
            if(cnt>=k){
                for(int k=0;k<=cnt;k++){
                    s[i-k][j-k]=s[i-k][j+k]='w';
                }
            }
        }
    }
    bool flag=true;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(s[i][j]=='*'){
                flag=false;
                break;
            }
        }
        if(!flag) break;
    }
    if(flag) puts("Yes");
    else puts("No");
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

D.Productive Meeting

贪心,每次将次数最多的两个进行交谈,直到无法交谈为止,这样做下来,剩下的次数都是尽可能的多,可供交谈的选择也尽可能多

用大根堆

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define int long long
using namespace std;
typedef pair<int,int>PII;
void solve()
{
    cout<<endl;
    int n;
    cin>>n;
    priority_queue<PII>q;
    vector<PII>ans;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        if(x>0) q.push({x,i});
    }
    while(q.size()>1){
        auto t=q.top();
        int x=t.first,i1=t.second;
        q.pop();
        t=q.top();
        int y=t.first,i2=t.second;
        q.pop();
        x--;
        y--;
        ans.push_back({i1,i2});
        if(x>0) q.push({x,i1});
        if(y>0) q.push({y,i2});
    }
    cout<<ans.size()<<endl;
    for(auto v:ans){
        cout<<v.first<<" "<<v.second<<endl;
    }
    cout<<endl;
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

E1.Permutation Minimization by Deque

用双端队列模拟即可

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<deque>
#define int long long
using namespace std;

void solve()
{
    int n;
    cin>>n;
    int x;
    deque<int>q;
    for(int i=0;i<n;i++){
        cin>>x;
        if(q.empty()) q.push_back(x);
        else{
         if(x<q.front()) q.push_front(x);
        else q.push_back(x);
        }
    }
//    cout<<q.size()<<endl;
    while(q.size()){
        cout<<q.front()<<" ";
        q.pop_front();
    }
    cout<<endl;
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Codeforces Round 744 (Div. 3) 的相关文章

  • 电话号码的正则表达式,不允许全零

    需要您的正则表达式帮助 我当前的正则表达式是 d 8 最小长度为 8 不允许包含字母 特殊字符和空格 我还想禁止全零 如 00000000 Thanks 该模式应该可以满足您的需求 0 d 8 The 0 部分是负前瞻 将阻止仅输入零 Ex
  • 如何将十六进制字符串转换为十六进制数字[重复]

    这个问题在这里已经有答案了 可能的重复 如何将十六进制字符串转换为有符号整数 https stackoverflow com questions 3705429 how do i convert hex string into signed
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时
  • 键盘加速器在 UWP 应用中停止工作

    我正在尝试将键盘加速器添加到 UWP 应用程序中的 CommandBar 菜单项 当应用程序启动时 这工作正常 但在我第一次打开溢出菜单后 加速器停止工作 这似乎不会发生在主要命令 菜单之外 上 只有溢出菜单内的辅助命令才会发生 此外 单击
  • 静态类变量与外部变量相同,只是具有类作用域吗?

    在我看来 静态类变量与外部变量相同 因为你只需要declare它在static int x extern int x语句 并在其他地方实际定义它 通常在 cpp 文件中 静态类变量 h file class Foo static int x
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • 如何在 Asp.net Gridview 列中添加复选框单击事件

    我在 asp 中有一个 gridview 其中我添加了第一列作为复选框列 现在我想选择此列并获取该行的 id 值 但我不知道该怎么做 这是我的 Aspx 代码
  • 方法“xxx”不能是事件的方法,因为该类派生的类已经定义了该方法

    我有一个代码 public class Layout UserControl protected void DisplayX DisplayClicked object sender DisplayEventArgs e CurrentDi
  • 如何使用 wpf webbrowser 将数据发布到 Web 服务器

    我想从数据库获取数据并使用它来让用户登录到网站 我有一个包含 Web 浏览器控件的 wpf 页面 我有这样的代码 用于将用户登录到用 php 编写的网站
  • 存储过程上的 OdbcCommand - 输出参数上出现“未提供参数”错误

    我正在尝试执行存储过程 通过 ODBC 驱动程序针对 SQL Server 2005 但收到以下错误 过程或函数 GetNodeID 需要参数 ID 但未提供该参数 ID 是我的过程的 OUTPUT 参数 在存储过程中指定了一个输入 mac
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 单线程公寓问题

    从我的主窗体中 我调用以下命令来打开一个新窗体 MyForm sth new MyForm sth show 一切都很好 但是这个表单有一个组合框 当我将其 AutoCompleteMode 切换为建议和追加时 我在显示表单时遇到了这个异常
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 错误左值需要作为赋值C++的左操作数

    整个程序基本上只允许用户移动光标 如果用户位于给定的坐标范围 2 2 内 则允许用户键入输入 我刚刚提供了一些我认为足以解决问题的代码 我不知道是什么导致了这个问题 你能解释一下为什么会发生吗 void goToXY int int 创建一
  • 如何访问窗口?

    我正在尝试使用其句柄访问特定窗口 即System IntPtr value Getting the process of Visual Studio program var process Process GetProcessesByNam
  • “int i=1,2,3”和“int i=(1,2,3)”之间的区别 - 使用逗号运算符的变量声明[重复]

    这个问题在这里已经有答案了 int i 1 2 3 int i 1 2 3 int i i 1 2 3 这些说法有什么区别 我无法找出任何具体原因 Statement 1 Result Compile error 运算符的优先级高于 运算符
  • ASP.NET Core Razor Page 多路径路由

    我正在使用 ASP NET Core 2 0 Razor Pages 不是 MVC 构建系统 但在为页面添加多个路由时遇到问题 例如 所有页面都应该能够通过 abc com language 访问segment shop mypage 或
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec

随机推荐