cf960(div2)

A. Submission Bait(博弈)

题意:爱丽丝和鲍勃在大小为n的数组a中进行游戏,他们轮流进行运算,爱丽丝先开始,不能运算的一方输,一开始mx=0,每次操作,玩家可以选择一个牵引i,ai>=mx,mx设置为ai,ai设为0.判断爱丽丝是否有一个获胜策略。

分析:只要一个数出现奇数个,那么爱丽丝就可以先手拿走那出现奇数个的数的最大值,从这个数到数组最大值都是剩下偶数个,无论鲍勃怎么拿,爱丽丝都能取走最后一个并获得胜利。

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){int t; cin>>t;while(t--){int n; cin>>n;map<int,int>mp;for(int i=1;i<=n;i++){int x;cin>>x;mp[x]++;}int cnt=1;for(auto &x:mp){if(x.second%2==1){cnt=0;break;}}if(!cnt)cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

B. Array Craft(构造,贪心)

题意:对于长度为m的数组b可以定义:(j为数组任意下标)

b的最大前缀位置是b1+...bi=max(b1+...+bj)的最小牵引i

b的最大后缀位置是bi+....bm=max(bj+...+bm)的最大牵引i

现在给三个整数,n,x,y,构造一个数组满足:

对于所有1<=i<=n,ai要么是1要么是-1

a的最大前缀位置是x,a的最大后缀位置是y。

分析:因为y<x,可以分成三部分,[1,y-1],[y,x],[x+1,n],可以让第一部分等于-1,这样不会对后缀和最大值有影响,第三部分等于-1,这样不会对前缀和产生影响,让中间部分都等于1.

代码:

#include<bits/stdc++.h>
using namespace std;
void sol(){int n,x,y;cin>>n>>x>>y;for(int i=1;i<=n;i++){int a;if(i<y)a=(y-i)%2==0?1:-1;else if(i<=x)a=1;else a=(i-x+1)%2==0?-1:1;cout<<a<<" ";}cout<<endl;
}
int main(){int t;cin>>t;while(t--)sol();return 0;
}

C. Mad MAD Sum(贪心)

题意:定义MAD为数组中至少出现两次的最大数字,如果没有就是0.给定一个长度为n的数组a,sum=0,下面的过程将依次循环执行,直到a中的所有数字都变成0:

设置sum+=∑ai;设bi=MAD(a1,a2..ai),ai=bi

求过程结束后sum的值。

分析:经历操作一次后的数组是非递减的,以后每次都是将数组向右移动,为了防止数组从左往右,不含0的第一个数字在数组里只出现1此,我们可以再执行一次操作,所以只要执行两次操作就能知道剩下的操作次数。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+10;
bool c[N];
ll n,a[N];
void g(){for(ll i=1;i<=n;i++)c[i]=false;ll ma=0;for(ll i=1;i<=n;i++){if(c[a[i]])ma=max(ma,a[i]);c[a[i]]=true;a[i]=ma;}
}
void sol(){cin>>n;ll ans=0;for(int i=1;i<=n;i++){cin>>a[i];ans+=a[i];}g();for(ll i=1;i<=n;i++)ans+=a[i];g();for(ll i=1;i<=n;i++){ans+=(n-i+1)*a[i];}cout<<ans<<endl;
}
int main(){int t;cin>>t;while(t--)sol();return 0;
}

D. Grid Puzzle

题意:给定一个数组,有一个nn的网格。在第i行,从第一个到第ai个都是黑格子,剩下的是白格子。可以进行以下操作:将2×2子网格染白;将整行染白。找出将所有单元格染白的最少操作次数。

分析:如果ai>=5我们会想使用操作2,因为至少需要三个2×2的子网覆盖它,第i-1和i+1行不一定是黑格子,所以有可能浪费了。先考虑ai<=4的情况。

只右三种情况:不受上一行影响;涂前两格:涂后两格。

代码:(贪心)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){int n;cin>>n;int a[n+10];for(int i=1;i<=n;i++)cin>>a[i];bool b1=0,b2=0;ll ans=0;for(int i=1;i<=n;i++){if((!b1)&&(!b2)){if(a[i]==0)continue;ans++;if(a[i]<=2)b1=1;}else if(b1){b1=0;if(a[i]<=2)continue;ans++;if(a[i]<=4)b2=1;}else{b2=0;if(a[i]==0)continue;ans++;if(a[i]<=4)b1=1;}}cout<<ans<<endl;
}
int main(){int t;cin>>t;while(t--)sol();return 0;
}

(dp)

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N],dp[N];
void sol(){int n;cin>>n;int b[2]={N,N};for(int i=1;i<=n;i++)cin>>a[i];//b0=N,b1=N就是对下一行无影响for(int i=1;i<=n;i++){dp[i]=dp[i-1]+1;if(a[i]==0)dp[i]=min(dp[i],dp[i-1]);if(a[i]<=2)dp[i]=min(dp[i],i+b[1-i%2]);//上一个位置在奇数,现在在偶数,就可以减去1.反之一偶一奇也可以if(a[i]<=2)b[i%2]=min(b[i%2],dp[i-1]-i);else if(a[i]>4)b[0]=b[1]=N;}cout<<dp[n]<<endl;
}
int main(){int t;cin>>t;while(t--)sol();return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验1-2 简单求阶乘问题

PTA浙大版《C语言程序设计实验与习题指导&#xff08;第4版&#xff09;》题目集&#xff1a;实验1-2 简单求阶乘问题 #include<stdio.h> int main(){int n;scanf("%d",&n);//此处是输入数值int a,sum1; //a 是循环的次数&#xff1b;sum 是输出数值for(a…

yarn安装electron时报错RequestError:socket hang up

安装electron时候&#xff0c;出现RequestError:socket hang up这样的错误&#xff0c;找了半天很多方式都是用旧淘宝源&#xff0c;导致根本安装不上去。 在项目的根目录下创建.npmrc文件&#xff0c;添加以下内容 # registryhttps://mirrors.huaweicloud.com/repository/np…

Optional类的使用 java8(附代码)

&#x1f370; 个人主页:_小白不加班__ &#x1f35e;文章有不合理的地方请各位大佬指正。 &#x1f349;文章不定期持续更新&#xff0c;如果我的文章对你有帮助➡️ 关注&#x1f64f;&#x1f3fb; 点赞&#x1f44d; 收藏⭐️ 文章目录 一、什么是Optional&#xff1f;二、…

源码拆解SpringBoot的自动配置机制

SpringBoot相比于Spring系列的前作&#xff0c;很大的一个亮点就是将配置进行了简化&#xff0c;引入了自动化配置&#xff0c;仅靠几个注解和yml文件就取代了之前XML的繁琐配置机制&#xff0c;这也是SpringBoot的独有特点&#xff0c;下面我们从源码角度&#xff0c;一点点拆…

【自然语言处理】概论(一):自然语言处理概要

1.1 概论&#xff1a;&#xff08;一&#xff09;自然语言处理概要 知识点 自然语言的定义&#xff1a;人类交流使用的&#xff0c;包括口语和书面语的信息交流方式。AI的终极目标&#xff1a;使计算机具备理解&#xff08;听、读&#xff09;和生成&#xff08;说、写&#…

使用 WebSocket 实现实时聊天

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

PySide(PyQt)使用QPropertyAnimation制作动态界面

主脚本&#xff1a; # encoding: utf-8 import os import sysfrom PySide6.QtCore import QPropertyAnimation, QEasingCurvefrom UIS import *# 主画面类 class MainWindow(QMainWindow, animationButton_ui.Ui_MainWindow):def __init__(self):super().__init__()self.setup…

GitHub狂飙3万star的LLM公开资料 - 大模型入门教程

先用一张图片说明这篇blog多火热&#xff01; 本篇大型语言模型&#xff08;LLM&#xff09;课程分为三个部分&#xff1a; &#x1f9e9; LLM基础&#xff1a;涵盖了数学、Python和神经网络的基本知识。 &#x1f9d1;‍&#x1f52c; LLM科学家&#xff1a;专注于使用最新技…

Spring源码学习笔记之@Async源码

文章目录 一、简介二、异步任务Async的使用方法2.1、第一步、配置类上加EnableAsync注解2.2、第二步、自定义线程池2.2.1、方法一、不配置自定义线程池使用默认线程池2.2.2、方法二、使用AsyncConfigurer指定线程池2.2.3、方法三、使用自定义的线程池Excutor2.2.4、方法四、使用…

【代码】Python3|Scrapy框架初探(汽车之家大连市二手车车辆数据爬取、清洗与可视化)

本篇主要是整个项目的介绍&#xff0c;没提到太多琐碎的技术细节&#xff0c;以后有空的话会整理一下 Scrapy 和原生爬虫的差异&#xff0c;还有它坑人的一些地方&#xff0c;单发出来。 开源地址&#xff1a;https://github.com/shandianchengzi/car_home_spider 使用说明&a…

Vue3扁平化Tree组件的前端分页实现

大家好&#xff0c;我是小卷。得益于JuanTree的扁平化设计&#xff0c;在数据量很大的情况下除了懒加载&#xff0c;使用前端分页也是一种解决渲染性能问题的可选方案。 用法 要实现的文档&#xff1a; 分页效果&#xff1a; 实现 新增属性&#xff1a; 组件setup方法中新增…

科普文:万字梳理31个Kafka问题

1、 kafka 是什么,有什么作用 2、Kafka为什么这么快 3、Kafka架构及名词解释 4、Kafka中的AR、ISR、OSR代表什么 5、HW、LEO代表什么 6、ISR收缩性 7、kafka follower如何与leader同步数据 8、Zookeeper 在 Kafka 中的作用&#xff08;早期&#xff09; 9、Kafka如何快…

MobaXterm 软件安装及使用

MobaXterm 软件安装及使用 1. 引言 MobaXterm是一款功能强大的终端软件&#xff0c;支持SSH、Telnet、RDP、VNC、FTP、SFTP、X11转发和串口等远程会话功能。它使得在Windows系统上进行Linux系统的远程管理和文件传输变得简单便捷。 2. MobaXterm 软件下载 下载链接&#xff…

Python数值计算(13)

1. 数学知识 虽然在给定了N个点以后&#xff0c;通过这个点的最小幂多项式是确定的&#xff0c;但是表达方式可不止一种&#xff0c;例如前面提到的系数方式&#xff0c;根方式&#xff0c;还有插值的Lagrange形式等。这里介绍另外一种表达方式&#xff1a; 显然这个式子最高次…

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西&#xff0c;有些微妙&#xff0c;而且记忆中也就记得Gopherus这个工具了&#xff0c;所以重新学习了一下&#xff0c;顺便记录一下吧 0x02 辨别 我们拿到一个题目&#xff0c;他的名字可能就是题目类型&#xff0c;但是也有可能…

Java小抄|Java中的List与Map转换

文章目录 1 List<User> 转Map<User.id,User>2 基础类型的转换&#xff1a;List < Long> 转 Map<Long,Long> 1 List 转Map<User.id,User> Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getId, v -> v, …

一个优秀的团队里,往往都有这几种人

“独木不成林&#xff0c;单弦难成曲”&#xff0c;一个优秀的团队&#xff0c;需要团队成员之间形成紧密的合作关系&#xff0c;充分发挥各自的优势和特长时&#xff0c;在各自的岗位发光发热&#xff0c;共同推动团队不断向前发展。一个优秀的团队中不可或缺的几个关键角色&a…

视觉SLAM第二讲

SLAM分为定位和建图两个问题。 定位问题 定位问题是通过传感器观测数据直接或间接求解位置和姿态。 通常可以分为两类&#xff1a;基于已知地图的定位和基于未知地图的定位。 基于已知地图的定位 利用预先构建的地图&#xff0c;结合传感器数据进行全局定位。SLAM中的全局…

【计算机网络原理】网络层IP协议的总结和数据链路层以太网协议的总结.

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

Oat++ 后端实现跨域

这里记录在官方的例子中&#xff0c;加入跨域。Oat Example-CRUD 在官方的例子中&#xff0c;加入跨域。 Oat Example-CRUD 修改AppComponent.hpp文件中的代码&#xff0c;如下&#xff1a; #include "AppComponent.hpp"#include "controller/UserController…