2023牛客暑期多校训练营2

news2024/11/26 3:21:18

题目顺序不分难度

KBox

状态dp,因为每个棋子只能移动到 i-1 到 i+1的位置,所以直接用4个状态表示棋子在哪

f[i][0] 表示前i个位置中,i-1到i+1都没有棋子

f[i][1] 表示前i个位置中,i-1有棋子

f[i][2] 表示前i个位置中,i有棋子

f[i][3] 表示前i个位置中,i+1有棋子

考虑转移

f[i][max(0,j-1)]=max(f[i][max(0,j-1)],f[i-1][j]);

因为i-1到i的位置挪动了一位,所以上面的 i 的状态1= i-1的状态0,2=1,3=2..

然后那个k循环就是因为i-1的的状态的位置因为有棋子了,不能动他,所以i只能从其他位置挪枚举挪的距离即可

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
#define int long long
int a[N],b[N];
int n,m;
int f[N][4]
void solve(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    
    for(int i=1;i<=n;i++){
        for(int j=0;j<4;j++){
            f[i][max(0,j-1)]=max(f[i][max(0,j-1)],f[i-1][j]);
            for(int k=j;k<4;k++){
                if(k&&b[i+k-2]){
                    f[i][k]=max(f[i][k],f[i-1][j]+a[i]);
                }
            }
        }
    }
    cout<<max({f[n][0],f[n][1],f[n][2]});
}
signed main(){
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
}

ILink with Gomoku

我直接分四种情况讨论了大体框架都是

XOXO

XOXO

XOXO

XOXO

OXOX

这样然后因为n*m是奇数的情况下X要比O剁,或者有奇数列和奇数行,我直接把第一行固定了,让他变成偶数

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10,mod=998244353;
#define int long long
typedef pair<int, int> PII;
typedef long long LL;
int n,m,k;
int a[N];
int qmi(int a, int k, int p)  // 求a^k mod p
{
    int res = 1;
    while (k)
    {
        if (k & 1) res = (LL)res * a;
        a = (LL)a * a ;
        k >>= 1;
    }
    return res;
}

void solve()
{
    cin>>n>>m;
    int now=0;
    string s="xo";
    char x='x';
    if(m%2==0)
    {
        if(n%2==0)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1,c=0;j<=m;j++,c^=1)
                {
                    cout<<s[c];
                }
                now++;
                cout<<"\n";
                if(now==4) swap(s[0],s[1]),now=0;
            }
        }
        else
        {
            for(int i=1,c=1;i<=m;i++,c^=1){
                cout<<s[c];
            }
            cout<<"\n";
            for(int i=2;i<=n;i++)
            {
                for(int j=1,c=0;j<=m;j++,c^=1)
                {
                    cout<<s[c];
                }
                now++;
                cout<<"\n";
                if(now==4) swap(s[0],s[1]),now=0;
            }  
        }
    }
    else
    {
        if(n%2==0)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1,c=0;j<=m;j++,c^=1)
                {
                    if(j==m){
                        cout<<x;
                        if(x=='x') x='o';
                        else x='x';continue;
                    }
                    cout<<s[c];
                }
                now++;
                cout<<"\n";
                if(now==4) swap(s[0],s[1]),now=0;
            } 
        } 
        else
        {
            for(int j=1,c=1;j<=m;j++,c^=1)
            {
                if(j==m){
                    cout<<'x';continue;
                }
                cout<<s[c];    
            }
            cout<<"\n";
            for(int i=2;i<=n;i++)
            {
                for(int j=1,c=0;j<=m;j++,c^=1)
                {
                    if(j==m){
                        cout<<x;
                        if(x=='x') x='o';
                        else x='x';continue;
                    }
                    cout<<s[c];
                }
                now++;
                cout<<"\n";
                if(now==4) swap(s[0],s[1]),now=0;
            } 
        }
    }

}
// 2 3  1 3  3 
signed main(){
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    
    cin>>t;
    while(t--) solve();
}

我是直接枚举分母,然后二分y的

因为y越大x越大,反之一样,有单调性,所以我直接二分了

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=998244353;
#define int long long
typedef pair<int, int> PII;
typedef long long LL;
int n,m,k;
int a[N];
int b[N];
int qmi(int a, int k)  // 求a^k mod p
{
    int res = 1;
    while (k)
    {
        if (k & 1) res = (LL)res * a ;
        a = (LL)a * a ;
        k >>= 1;
    }
    return res;
}

void solve()
{
    int x;
    cin>>x;
    for(int i=0;i<18;i++)
    {
        int l=0,r=1e9;
        while(l<r){
            int mid=l+r+1>>1;
            if(mid*mid/qmi(10,i)<=x) l=mid;
            else r=mid-1;
        }
        if(l*l/qmi(10,i)==x){
            cout<<l<<"\n";return ;
        }
    }
    cout<<"-1\n";
}
// 2 3  1 3  3 
signed main(){
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    
    cin>>t;
    while(t--) solve();
}

 

 第一个操作是把X取反,等于-X-1

对于X来说,B操作是+1,A操作是-1

对于-X来说,B操作是-1,A操作上+1

X最后的正负只取决于[l,r]中 A的奇偶性,偶数为正,否则为反

最后答案相当于 (+-X)+C,C为上面ab操作合起来的常数,使用前缀和统计常数和和A的个数

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
#define ll long long
int a[N],b[N];
int n,m;
char s[N],x[N];
void solve()
{
    cin>>n>>m;
	scanf("%s",s+1);
	vector<int> cnt(n+10,0),pre(n+10,0);
	for(int i=1;i<=n;i++)
	{
		if(s[i]=='A'){
			pre[i]=-pre[i-1]-1;
			cnt[i]=cnt[i-1]+1;
		}
		else{
			pre[i]=pre[i-1]+1;
			cnt[i]=cnt[i-1];
		}
	}
	ll lastans=0;
	while(m--)
	{
		ll l,r;
		scanf("%lld%lld%s",&l,&r,x+1);
		l=(lastans^l)%n+1;r=(lastans^r)%n+1;
		if(l>r)	swap(l,r);
		int k=strlen(x+1);
		ll xnum=0;
		for(int i=1;i<=k;i++){
			xnum=2ll*xnum+(x[i]-'0');
		}
		ll mod=(1ll<<k);
		ll ans=0;
		if((cnt[r]-cnt[l-1])%2){
			ans=pre[r]+pre[l-1];
			xnum=-xnum;
		}
		else{
			ans=pre[r]-pre[l-1];
		}
		ans=((xnum+ans)%mod+mod)%mod;
		for(int i=1;i<=k;i++){
			cout<<((ans>>(k-i)&1));
		}puts("");
		lastans=ans;
	}
  
}
signed main(){
    //cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
}

可以确定的是每个人为了最大化自己的贡献,当前一定会选择剩余菜中对自己最大的那个

那么顺着贪心会有问题,因为最后的人可能也会选这道菜,那么这样自己就会浪费一个机会,正确的贪心是从后往前贪心

#include<bits/stdc++.h>
using namespace std;
const int N = 2010;
#define ll long long
int n,m,k;
int a[N][N];
void solve()
{
    cin>>n>>m>>k;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++)
            cin>>a[i][j];
    }
    vector<bool> st(m+10,false);
    auto find=[&](int i){
        int cur=-1,res=0;
        for(int j=0;j<m;j++){
            if(st[j]) continue;
            if(cur<a[i][j]){
                cur=a[i][j];
                res=j;
            }
        }
        return res;
    };
    vector<int> res;
    for(int i=0,p=(k-1)%n;i<k;i++,p--){
        if(p<0) p=n-1;
        int mx=find(p);
        st[mx]=true;
        res.push_back(mx+1);
    }
    sort(res.begin(),res.end());
    for(auto x:res) cout<<x<<" ";
    cout<<"\n";
}
signed main(){
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    cin>>t;
    while(t--) solve();
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/782351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Autosar - PDUR简介与配置

文章目录 一、PDUR是什么二、不同报文类型的信号流ECUC(EcucPduCollection)三、时序图CanIfs之间的路由CanIf与Com之间的路由CanTp通道间的路由一、PDUR是什么 PDU Router(路由器)在本文将简称为PduR,在AUTOSAR的架构中,通信部份中很重要的一个模块就是PduR,它能将IPdu…

C++: day6

1 思维导图 2 顺序栈模板和顺序队列模板 #include <iostream>using namespace std;template <typename T> class My_stack { private:T *ptr; //指向堆区空间int top; //记录栈顶元素public://无参构造My_stack():ptr(new T[10]), top(-1){}//有参构造My_sta…

ROS-Moveit机械臂追踪二维码(四)

ROS-Moveit机械臂追踪二维码(四) 在仿真环境增加相机 <gazebo reference"camera_depth_frame"><sensor name"camera1" type"depth"><always_on>true</always_on><update_rate>20.0</update_rate><came…

多路选择器设计实现

文章目录 一、多路选择器二、二选一多路选择器三、四选一多路选择器设计 一、多路选择器 多路选择器是数据选择器的别称。在多路数据传送过程中&#xff0c;能够根据需要将其中任意一路选出来的电路&#xff0c;叫做数据选择器&#xff0c;也称多路选择器或多路开关。 二、二…

【从删库到跑路】MySQL数据库的索引(一)——索引的结构(BTree B+Tree Hash),语法等

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出小吉的问题 文章目录 &#x1f354;概述&#x1f354;索引结构⭐B-Tree多路平衡查找树&#x1f3f3;️‍&a…

【分布式事务】CAP定理和Base理论

文章目录 1、事务的ACID原则2、分布式服务案例3、CAP定理4、Base理论5、分布式事务模型 1、事务的ACID原则 所有的事务都要满足ACID原则&#xff0c;在单体架构中&#xff0c;只有一个服务&#xff0c;这个服务访问一个数据库&#xff0c;场景简单。基于数据库本身的特性&…

React 组件使用

React 组件是一个 js 函数&#xff0c;函数可以添加 jsx 标记 当前页使用组件&#xff0c;基本使用 注意&#xff1a;组件的名称&#xff0c;第一个字母一定要大写&#xff0c;否则会报错 import { createRoot } from "react-dom/client"; import "./index.c…

深度学习(30)—— DeformableDETR(1)

深度学习&#xff08;30&#xff09;—— DeformableDETR&#xff08;1&#xff09; 原本想在一篇文章中就把理论和debug的过程都呈现&#xff0c;但是发现内容很多&#xff0c;所以就分开两篇&#xff0c;照常先记录理论学习过程&#xff0c;然后是实践过程。 注&#xff1a;…

Flutter学习—— Vscode创建项目

目录 一、Vscode创建项目 二、补充五种项目类型 Application: Module 模块开发&#xff0c; Package开发 Plugin 插件开发 Skeleton 骨架开发 一、Vscode创建项目 1.快捷键 CtrlShiftP 打开命令面板&#xff0c;选择新项目 2.选择需要开发的项目类型 Application 应用开…

勾股dev部署

1.克隆项目 项目的地址&#xff1a; https://gitee.com/gouguopen/dev?_fromgitee_search#-%E5%BC%80%E6%BA%90%E5%8A%A9%E5%8A%9B 可以采用git clone https://gitee.com/gouguopen/dev.git 或者使用下载压缩包的形式 2.进入项目的根目录 cd gougudev 3.下载php依赖 需要…

三种策略改进的沙猫群优化算法(MSCSO),与白鲸、蜣螂、麻雀等多种算法进行比较,MATLAB代码...

沙猫群优化算法(sand cat swarm optimiza⁃ tion,SCSO)是 2022年提出的元启发式优化算法&#xff0c;该算法灵感来源于沙猫的捕食行为&#xff0c;沙猫群会通过搜索阶段和捕食阶段获得食物。其中算法额外使用自适应的rG和R以达到搜索阶段和捕食阶段的无缝 切换。该算法具有寻优…

刷题日记09《图论基础》

图的存储结构 对于图结构而言&#xff0c;常见的存储结构主要有两种&#xff1a;邻接表和邻接矩阵&#xff1a; 邻接表很直观&#xff0c;我把每个节点 x 的邻居都存到一个列表里&#xff0c;然后把 x 和这个列表关联起来&#xff0c;这样就可以通过一个节点 x 找到它的所有相邻…

java 8树结构返回前端

接口&#xff1a; EntityResult getOrgReal(Map<String, Object> mapParam); 实现类&#xff1a; PMethodHandle(runMethodName "TQmsZjxmzbImpl.getOrgReal", timeout 600) Override public EntityResult getOrgReal(Map<String, Object> mapParam…

vs2015 工程组织与动态加载

10.Visual Studio动态加载_哔哩哔哩_bilibili 1.工程组织 ① researcher.cpp #include "nn/nn.h"#include "nn/factory.h" #include "nn/factory_impl/factory_impl.h"#include <iostream>int main() {int ret 0;factory_i* fct new f…

Invalid bound statement (not found),springboot扫描不到jar包中mapper文件的问题处理

参考这位大佬的博客&#xff1a;Invalid bound statement (not found)&#xff0c;springboot扫描不到jar包中mapper文件的问题处理_springboot扫描不到mapper_Jamesharden13的博客-CSDN博客 classpath:和classpath*:的区别_classpath和classpath*区别_明快de玄米61的博客-CSD…

JavaWeb课程设计项目实战(06)——项目编码实践3

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在本教程教程中&#xff0c;我们实现学生列表的显示。 Student 请在bean包下创建Student类&#xff0c;代码如下&#xff1a; package com.cn.bean; /*** 本文作者&#…

MIMIC数据库申请流程

MIMIC是一个公开的临床数据库&#xff0c;之前查找了很多资料&#xff0c;在这里记录一下整个申请流程。 一、CITI证书 要申请mimic数据库的使用权限&#xff0c;首先需要有CITI证书&#xff0c;这是一个国际知名的网络训练课程&#xff0c;其中就有用于健康资讯隐私及保护 (…

Spring 用了哪些设计模式

关于设计模式&#xff0c;如果使用得当&#xff0c;将会使我们的代码更加简洁&#xff0c;并且更具扩展性。本文主要讲解Spring中如何使用策略模式&#xff0c;工厂方法模式以及Builder模式。 策略模式 关于策略模式的使用方式&#xff0c;在Spring中其实比较简单&#xff0c…

408-2009

一、选择题&#xff08;2 分/题&#xff09; 1.为解决计算机主机与打印机之间速度不匹配问题&#xff0c;通常设置一个打印数据缓冲区&#xff0c;主机将要输出的数据一次写入该缓冲取&#xff0c;而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是______。 A.栈 …

iOS--编译连接的过程_2

文章目录 iOS编译&#xff08;一&#xff09;编译器前端 编译器后端执行一次XCode build的流程 IPA包的内容二进制文件的内容iOS Link Map File文件说明1. Link Map File 是什么2. Link Map File 有什么用3. 生成 Link Map File查看Link Map File1&#xff09;路径部分计算机系…