7.9总结

容易推出当移动i与j时等价于j-i-1个左右交换,且每次交换逆序数的奇偶改变(无相同元素),假设有一个状态c,且a与b必须以等量的左右交换转移为c,则必须数量相同,元素相同(使用异或解决),逆序数奇偶性相同(归并排序解决)代码如下

<bits/stdc++.h>
#include<algorithm>
#define ll long long
#define max_int 2147483647
#define max_ll 9223372036854775807
using namespace std;
ll merge(ll left, ll right, vector<ll>& arr) {  if (left >= right) return 0;  ll mid = left + (right - left) / 2;  ll inv_count = merge(left, mid, arr) + merge(mid + 1, right, arr);  vector<ll> temp;  int i = left, j = mid + 1, k = 0;  while (i <= mid && j <= right) {  if (arr[i] <= arr[j]) {  temp.push_back(arr[i++]);  } else {  temp.push_back(arr[j++]);  inv_count += (mid - i + 1); // 累加跨越中点的逆序数  }  }  while (i <= mid) {  temp.push_back(arr[i++]);  }  while (j <= right) {  temp.push_back(arr[j++]);  }  for (k = 0; k < temp.size(); k++) {  arr[left + k] = temp[k];  }  return inv_count;  
}  
int main(){ios::sync_with_stdio(false);cin.tie(0);ll all;cin>>all;while(all--){ll n;cin>>n;vector<ll>q1(n+10);vector<ll>q2(n+10);ll xorsum=0;for(ll i=0;i<n;++i) cin>>q1[i],xorsum^=q1[i];for(ll i=0;i<n;++i) cin>>q2[i],xorsum^=q2[i];if(xorsum!=0){cout<<"NO"<<endl;continue;}//cout<<merge(0,n-1,q1)<<" "<<merge(0,n-1,q2)<<endl;if((merge(0,n-1,q1)%2)^(merge(0,n-1,q2)%2)) cout<<"NO"<<endl;else cout<<"YES"<<endl;}return 0;

先用前缀和预处理,再遍历3的阶乘,映射关系要看准

<bits/stdc++.h>
#include<algorithm>
#define ll long long
#define max_int 2147483647
#define max_ll 9223372036854775807
using namespace std;
vector<vector<ll>>q(5,vector<ll>(200005));
int longth;
bool check(int i,int j,int k){int end=0,front,z=1;int an[4]={0,i,j,k};vector<vector<ll>>target(4,vector<ll>(2));target[an[i]][0]=1;ll tot=(q[1][longth]+2)/3;while(z<4){front=end+1;if(front>longth) return false;target[an[z]][0]=front;while(q[an[z]][front]-q[an[z]][end]<tot&&front<=longth) front++;if(front>longth){//cout<<"-1"<<endl;return false;}target[an[z]][1]=front;end=front;z++;}cout<<target[1][0]<<' '<<target[1][1]<<' '<<target[2][0]<<' '<<target[2][1]<<' '<<target[3][0]<<' '<<target[3][1]<<' '<<endl;return true;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);int all;cin>>all;while(all--){cin>>longth;for(int i=1;i<=3;++i){for(int p=1;p<=longth;++p){cin>>q[i][p];q[i][p]+=q[i][p-1];}}if(check(1,2,3)) continue;else if(check(1,3,2)) continue;else if(check(2,1,3)) continue;else if(check(2,3,1)) continue;else if(check(3,1,2)) continue;else if(check(3,2,1)) continue;else cout<<"-1"<<endl;}return 0;
}

这几天做了点动态规划的题目,第一次做还是有点手足无措,现在对最优子结构,无后效性,状态的理解深了不少,难点在于状态转移方程,要观察元素的来历而不是去向,想清楚这个状态是由哪几个状态递推而来,分别有什么差别,以及如何判断状态,想清楚之后就能将首个元素写入,再类似数学归纳法一样一步一步递推出正确答案。

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

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

相关文章

如何忽略部分文件或者文件夹在git提交项目时

嗨&#xff0c;我是兰若&#xff0c;最近发现有些小伙伴在提交代码时&#xff0c;总是把不该提交的文件&#xff0c;比如说本地批跑的缓存文件给提交到了git上面&#xff0c;导致别人在拉取代码的时候&#xff0c;也会把这部分文件拉取到自己本地&#xff0c;从而导致和本地的缓…

Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.

Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…

全面解析Python:现代编程语言

引言 Python是一种高级、解释型、动态和面向对象的编程语言&#xff0c;由Guido van Rossum于1991年发布。它以简洁、可读性强的代码和丰富的库支持著称&#xff0c;是数据科学、机器学习、Web开发、自动化脚本等领域的首选语言。本文将详细介绍Python的基本概念、高级主题、数…

如何借助社交媒体影响者的力量,让品牌影响力倍增?

一、引言&#xff1a;为何社交媒体影响者如此关键&#xff1f; 在信息爆炸的今天&#xff0c;社交媒体已成为塑造消费者行为与品牌认知的重要渠道。社交媒体影响者&#xff0c;凭借其在特定领域的专业知识、庞大的粉丝基础及高度的互动性&#xff0c;成为了品牌传播不可忽视的…

Redis的使用(三)常见使用场景-session共享

1.绪论 redis是一款高性能的缓存框架&#xff0c;那它在实际开发过程中有哪些作用呢&#xff1f;今天我们就来聊一聊。 2.session共享 2.1 问题描述 现在所有的网页都有一个功能&#xff0c;就是在用户第一次登陆成功过后&#xff0c;再次进入到这个页面&#xff0c;就不用…

大模型预训练-数据准备

名词释义 预训练&#xff1a;大模型训练的第一个阶段数据集污染&#xff1a;预训练数据中包含测试数据中的部分或全部 数据来源 通用数据 网页书籍 专用数据 多语文本科学论文代码 数据预处理 质量过滤 基于启发式规则 规则建议 基于语种过滤&#xff08;过滤不支持的语…

kafka 消费者

消费者 消费者。消费者连接到Kafka上并接收消息&#xff0c;进而进行相应的业务逻辑处理。 消费组 消费者负责订阅Kafka中的主题&#xff0c;并且从订阅的主题上拉取消息。 消费组&#xff1a;每个消费者都有一个对应的消费组&#xff0c;每一个分区只能被一个消费组中的一个…

如何控制代码质量

大家好&#xff0c;我是嘻嘻&#xff0c;你们厂里是如何控制代码的质量的说道说道 最近的工作&#xff0c;主要是要偏重项目的质量管理这块&#xff0c;项目管理的现在一切以质量为导向&#xff0c;成本和质量冲突优先质量&#xff0c;进度与质量冲突优先质量&#xff0c;真正的…

方法引用 异常 file

目录 一.方法引用 1.方法引用概述 2.引用静态方法 3.引用成员方法 i.引用其他成员方法 ii.引用本类成员方法 iii.引用父类成员方法 4.引用构造方法 5.其他调用方式 i.使用类名引用成员方法 ii.引用数组的构造方法 二、异常 1.异常的作用 2.异常的处理方式 i.JVM…

6.Python学习:异常和日志

1.异常的抓取 1.1异常的概念 使用异常前&#xff1a; print(1/0)使用异常后&#xff1a;错误提示更加友好&#xff0c;不影响程序继续往下运行 try:print(10/0) except ZeroDivisionError:print("0不能作为分母")1.2异常的抓取 第一种&#xff1a;如果提前知道可…

2020 ICPC Shanghai Site B. Mine Sweeper II 题解 构造 鸽巢原理

Mine Sweeper II 题目描述 A mine-sweeper map X X X can be expressed as an n m n\times m nm grid. Each cell of the grid is either a mine cell or a non-mine cell. A mine cell has no number on it. Each non-mine cell has a number representing the number of…

Spring Boot使用@RestController注解的控制器(Controller)返回Map时,遇到序列化问题

在Spring Boot中使用RestController注解的控制器&#xff08;Controller&#xff09;返回Map时&#xff0c;如果遇到序列化问题&#xff0c;这通常是因为Map中的某些值类型无法被Spring Boot默认的JSON序列化库&#xff08;通常是Jackson&#xff09;正确处理。以下是一些可能导…

遍历请求后端数据引出的数组forEach异步操作的坑

有一个列表数据&#xff0c;每项数据里有一个额外的字段需要去调另外一个接口才能拿到&#xff0c;后端有现有的这2个接口&#xff0c;现在临时需要前端显示出来&#xff0c;所以这里需要前端先去调列表数据的接口拿到列表数据&#xff0c;然后再遍历请求另外一个接口去拿到对应…

【python技巧】pytorch网络可视化

参考 https://blog.csdn.net/qq_40726937/article/details/106122082 1. graphviz torchviz 环境安装简单 pip install torchviz pip install graphviz代码 import torch from torchvision import model from torchviz import make_dotmodels models.resnet18() x torc…

生产环境中秒杀接口并发量剧增与负载优化策略探讨

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 1. 实施限流措施 1.1 令牌桶算法&#xff1a; 1.2 漏…

红酒知识百科:从入门到精通

红酒&#xff0c;这个深邃而迷人的世界&#xff0c;充满了无尽的知识与奥秘。从葡萄的选择、酿造工艺&#xff0c;到品鉴技巧&#xff0c;每一步都蕴藏着深厚的文化底蕴和精细的技艺。今天&#xff0c;就让我们一起踏上这场红酒知识之旅&#xff0c;从入门开始&#xff0c;逐步…

gpt-4o看图说话-根据图片回答问题

问题&#xff1a;中国的人口老龄化究竟有多严重&#xff1f; 代码下实现如下&#xff1a;&#xff08;直接调用openai的chat接口&#xff09; import os import base64 import requests def encode_image(image_path): """ 对图片文件进行 Base64 编码 输入…

【刷题汇总 -- 求最小公倍数、数组中的最长连续子序列、字母收集】

C日常刷题积累 今日刷题汇总 - day0081、求最小公倍数1.1、题目1.2、思路1.3、程序实现 -- 穷举法1.2、程序实现 -- 辗转相除法 2、数组中的最长连续子序列2.1、题目2.2、思路2.3、程序实现 3、字母收集3.1、题目3.2、思路3.3、程序实现 4、题目链接 今日刷题汇总 - day008 1、…

Windows C++ vs2022环境中下载、安装和使用osmesa

第一步&#xff1a;安装 MinGW-w64 请参考这篇文章进行安装&#xff1a; 在Windows中安装MinGW-w64最新版本 第二步&#xff1a;安装DirectX SDK 请参考这篇文章进行安装&#xff1a; 下载安装Microsoft DirectX SDK(June 2010) 第三步&#xff1a;安装Windows SDK 请参考这篇…

重定向(Redirect)和转发(Forward)

目录 重定向(Redirect) 转发(Forward) 在HTTP通信和Web开发中,重定向(Redirect)和转发(Forward)是两种常见的导航机制,它们各自具有不同的特点和适用场景。 forward是转发,foward url不会发生改变,forward可以共享request里的数据,forward 比 redirect 效率高。…