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.mzph.cn/news/877064.shtml

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

相关文章

MOMFEA-SADE--基于子空间对齐和自适应差分进化的多目标多任务优化算法

MOMFEA-SADE–基于子空间对齐和自适应差分进化的多目标多任务优化算法 title&#xff1a; Evolutionary Multitasking for Multiobjective Optimization With Subspace Alignment and Adaptive Differential Evolution author&#xff1a; Zhengping Liang, Hao Dong, Cheng …

c语言中的整形提升和算数转换

整形提升&#xff1a; 表达式中字符和短整型操作数在使用之前转换为普通整形 分为两种&#xff1a; 有符号整形提升&#xff1a;按照变量的数据类型的符号位来提升 无符号整形提升&#xff1a;按照高位补0的方式及进行提升 例如&#xff1a;char a20&#xff1b;char b130…

【Git】 如何将一个分支的某个提交合并到另一个分支

【Git】 如何将一个分支的某个提交合并到另一个分支 在使用 Git 进行版本控制时&#xff0c;常常会遇到这样的需求&#xff1a;将某个分支的特定提交合并到另一个分支中。这种情况下&#xff0c;我们可以使用 cherry-pick 命令来实现。本文将详细介绍 cherry-pick 命令的使用方…

Java基础巩固 -- 多线程

Java基础巩固 – 多线程 1.多线程 1.1 意义 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更…

“链动革新:2+1模式引领用户复购与留存潮流“

大家好&#xff01;我是吴军&#xff0c;来自一家在业界享有盛誉的软件开发公司&#xff0c;担任产品经理一职。今天&#xff0c;我想和大家深入探讨一个话题——如何利用创新的链动21模式来显著提升用户的留存率和复购率。 提到链动模式&#xff0c;很多人可能第一时间想到的是…

DEBUG:机械臂无法连接

问题 机械臂无法连接 ip 网关正确 解决 检查网口是否正常 网口损坏 usb部分可能半坏&#xff08;支持鼠标 不是转网口&#xff09;

Whisper离线部署问题处理

Whisper是OpenAI开发一款开源语音识别模型&#xff0c;可以帮我们低成本的拥有语音识别的能力。具体的安装部署方法&#xff0c;我在这里就不详细说了&#xff0c;网上有很多相关文章&#xff1a; 使用OpenAI的Whisper 模型进行语音识别 (baidu.com) 我这里主要想说的是&…

醒醒,别睡了...讲《数据分析pandas库》了—/—<6>

一、 1、长宽格式转换 基于多重索引&#xff0c;Pandas 可以很容易地完成长型、宽型数据格式的相互转换。 1.1 转换为最简格式 stack&#xff08;&#xff09;其使用法如下&#xff1a; stack函数用于将DataFrame中的列转换为行&#xff0c;即将宽格式数据转换为长格式数据。…

GitHub每周最火火火项目(7.22-7.28)

1. 项目名称&#xff1a;Django 项目介绍&#xff1a;Django 是一个高级 Python Web 框架&#xff0c;鼓励快速开发和简洁、实用的设计。它由经验丰富的开发者构建&#xff0c;旨在解决 Web 开发中的常见问题&#xff0c;提供了一套完整的工具和库&#xff0c;包括数据库ORM、…

中控屏UI设计全解析:布局与交互技巧

在现代科技的浪潮中&#xff0c;中控屏已成为智能系统不可或缺的交互界面。无论是智能家居、车载系统还是工业控制&#xff0c;一个直观、易用且美观的中控屏 UI 设计对于提升用户体验至关重要。本教程将带领你深入探索中控屏UI设计的精髓&#xff0c;指导你如何打造出既专业又…

2024.7.28 记录一次悲惨的笔试——作业帮NLP校招

小红的奇偶抽取 题目描述 题解 #include <iostream> #include<stack> using namespace std;int main() {long long n;stack <int> ji, ou;cin >> n;while (n) {int a n % 10;if (a % 2 0)ou.push(a);elseji.push(a);n n / 10;}long long jN 0, o…

用深度学习改进乳腺癌MRI诊断| 文献速递--AI辅助的放射影像疾病诊断

Title 题目 Improving breast cancer diagnostics with deep learning for MRI 用深度学习改进乳腺癌MRI诊断 01 文献速递介绍 乳腺磁共振成像&#xff08;MRI&#xff09;是一种检测乳腺癌的高度敏感的方式&#xff0c;报告的敏感性超过80%。传统上&#xff0c;其在筛查…

html+css+js作业王者荣耀司空震1个页面带js

htmlcssjs作业王者荣耀司空震1个页面带js 下载地址 https://download.csdn.net/download/qq_42431718/89595421 目录1 目录2 项目视频 htmlcssjs作业王者荣耀司空震1个页面 页面1

QQ微信头像制图工具箱小程序纯前端源码

微信小程序源码&#xff0c;经测试QQ小程序也可以完美运行&#xff0c;所以给大家分享一下这个QQ微信头像制图工具箱小程序纯前端源码。 主要功能有文字九格、头像挂件生成、爆趣九宫格、形状九宫格、创意长图、情侣头像、猫狗交流器。 这个QQ微信小程序源码是纯前端的&#x…

cesium添加流动线

1&#xff1a;新建Spriteline1MaterialProperty.js文件 import * as Cesium from cesium;export function Spriteline1MaterialProperty(duration, image) {this._definitionChanged new Cesium.Event();this.duration duration;this.image image;this._time performance.…

2024 Navicat Premium最新版简体中文版破解激活永久图文详细教程(亲测可用)

1.官网下载&#xff1a;下载地址 2.百度网盘下载&#xff1a;下载地址 3.未安装过的用户可直接跳过该步骤&#xff0c;如果已安装Navicat&#xff0c;记得先卸载干净&#xff0c;防止破解失效&#xff0c;卸载完成后执行补丁压缩包中的Navicat.bat脚本&#xff08;一闪而过表示…

Java语言程序设计——篇九(3)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 注解类型 概述标准注解实战演练实战演练实战演练 定义注解类型标准元注解 概述 注解以结构化的方式为程序元素提供信息&#xff0c;这些信息能…

Ubuntu22.04重装系统+基础配置

重装系统 note&#xff1a;备份数据&#xff0c;重装系统后home下的文件会丢失&#xff0c;所以先备份一下home的数据到其他的盘/mnt/下里。记住之前系统的DNS&#xff0c;IP和掩码。 先在Ubuntu官网下载22.04桌面版&#xff08;种子链接要用迅雷下载&#xff09;。但是版本还…

分布式ID详解

文章目录 分布式IDUUIDSnowflake算法数据库自增IDLeaf算法Redis自增ID 分布式ID 在我们业务数据量不大的时候&#xff0c;单库单表完全可以支撑现有业务&#xff0c;数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长&#xff0c;主从同步也扛不住了&#x…

数学重大错误:将无穷多各异射(直)线误为同一线

黄小宁 设本文所说集合往往是元不少于两个的集。定义&#xff1a;若数&#xff08;点&#xff09;集A可保距变为B则称A≌B。显然A≌A。 h定理1&#xff1a;数&#xff08;点&#xff09;集AB≌B的必要条件是A≌B。 证&#xff1a;⑴任何图≌本身。⑵若AB则A必可恒等变换地变…