线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring

题意:

给你n个数的序列,当满足i<ji<ji<j andandand ai>aja_i>a_jai>aj时,这两个点之间有一条边,现在对点染色,要求每个点相邻的点颜色不同,问如何染色使得不同颜色数量最小。

题目:

链接:https://ac.nowcoder.com/acm/contest/17137/L
来源:牛客网

Simone, a student of Graph Coloring University, is interested in permutation. Now she is given a permutation of length nn, and she finds that if she connects each inverse pair, she will get a graph. Formally, for the given permutation, if i<ji<ji<j andandand ai>aja_i>a_jai>aj, then there will be an undirected edge between node i and node j in the graph.

Then she wants to color this graph. Please achieve poor Simone’s dream. To simplify the problem, you just need to find a way of coloring the vertices of the graph such that no two adjacent vertices are of the same color and minimize the number of colors used.

输入描述:

There are multiple test cases. The first line of the input contains an integer T(1≤T≤106)T(1\leq T\leq 10^6)T(1T106) , indicating the number of test cases.

For each test case, the first line contains an integer n(1≤n≤106)n(1 \leq n \leq 10^6)n(1n106), indicating the length of the permutation.

The second line contains nn integers a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an , indicating the permutation.

It is guaranteed that the sum of nn over all test cases does not exceed 10610^6106 .

输出描述:

For each test case, the first line contains an integer cc, the chromatic number(the minimal number of colors been used when coloring) of the graph.

The second line contains nn integers c1,c2,...,cnc_1,c_2,...,c_nc1,c2,...,cn , the color of each node.

Notice that cic_ici should satisfy the limit that 1≤ci≤c1 \leq c_i \leq c1cic If there are several answers, it is acceptable to print any of them.

示例1

输入

2
4
1 3 4 2
2
1 2

输出

2
1 1 1 2
1
1 1

分析:

这道题,在赛中时,刚开始考虑是直接求每个元素的逆序对(用树状数组),然后该点颜色为逆序对数+1,交了wa了第一遍;第二遍我们举出来了一个数据是 1 5 2 3 4,结果是 1 4 1 1 1,颜色数为4,肯定不对,所以进行了离散化,交上去又wa了,此时走入了瓶颈,举了很多数据都是对的,耽误了很多时间,最后举了一个例子,1 2 3 4 5 8 6 9 7,按着思路应该是1 1 1 1 1 3 1 2 1,但有更优解 1 1 1 1 1 2 1 2 1,故此,我们思路出问题了。讨论过后很短的时间,就决定用线段树维护区间逆序对颜色最大值,每次query得到最大值+1即可。这里面有几个需要注意的点:

  • 序列从后往前遍历,当我们对当前区间查找最大值时,就是当前点逆序对的最大值,因为某些虽然比当前点小,但不为逆序对的值,一定在序列的后面,此时该点并没有赋值,所以不需考虑。
  • 区间更新时,因为少加了seg[u]=max(seg[u<<1],seg[u<<1|1]);,编译结果出现问题,就像前面说的,我们需要的是区间最大值,直接套用模板就行,不需要考虑逆序对之类的。最后每次更新颜色最大值,输出即可,orz%%%%%%一道签到题搞芥末久,果然还是菜哈。

AC代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
int n;
int a[N],b[N];
int seg[N<<2];
void upd(int l,int t,int u,int L,int R){if(L==l && R==l){seg[u]=t;return;}int md=(L+R)>>1;if(l<=md) upd(l,t,u<<1,L,md);if(l>md)  upd(l,t,u<<1|1,md+1,R);seg[u]=max(seg[u<<1],seg[u<<1|1]);
}
int quy(int l,int r,int u,int L,int R){if(l<=L && r>=R){return seg[u];}int md=(L+R)>>1;int tp=0;if(l<=md) tp=max(tp,quy(l,r,u<<1,L,md));if(r>md)  tp=max(tp,quy(l,r,u<<1|1,md+1,R));return tp;
}int main()
{int T;scanf("%d",&T);while(T--){for(int i=1; i<4*n+100; ++i) seg[i]=0;scanf("%d",&n);for(int i=1; i<=n; ++i){scanf("%d",&a[i]);}int ma=0;for(int i=n; i>=1; --i){b[i]=quy(1,a[i],1,1,n)+1;upd(a[i],b[i],1,1,n);ma=max(ma,b[i]);}printf("%d\n",ma);for(int i=1; i<=n; ++i){printf("%d%c",b[i],(i==n?'\n':' '));}}return 0;
}

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

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

相关文章

[JavaWeb-Servlet]Servlet3.0注解配置

Servlet3.0&#xff1a; * 好处&#xff1a;* 支持注解配置。可以不需要web.xml了。* 步骤&#xff1a;1. 创建JavaEE项目&#xff0c;选择Servlet的版本3.0以上&#xff0c;可以不创建web.xml2. 定义一个类&#xff0c;实现Servlet接口3. 复写方法4. 在类上使用WebServlet注解…

基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(四)

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

字符串相关

文章目录字符串基础字符串的存储标准库字符串匹配单串匹配多串匹配其他类型的字符串匹配问题字符串哈希Hash 的实现Hash 的分析与改进错误率多次询问子串哈希Hash 的应用字符串匹配允许 k次失配的字符串匹配最长回文子串最长公共子字符串确定字符串中不同子字符串的数量字典树 …

[JavaWeb-Servlet]IDEA与Tomcat的相关配置

IDEA与tomcat的相关配置 1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件* 查看控制台的log&#xff1a;Using CATALINA_BASE: "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"2. 工作空间项目 和 tomcat部署的web项目* tomcat真正访问…

C#9.0 终于来了,您还学的动吗? 带上VS一起解读吧!

一&#xff1a;背景1. 讲故事好消息&#xff0c;.NET 5.0 终于在2020年6月10日发布了第五个预览版&#xff0c;眼尖的同学一定看到了在这个版本中终于支持了 C# 9.0&#xff0c;此处有掌声&#xff0c;太好了&#xff01;&#xff01;&#xff01;.Net5官方链接可以看到目前的C…

KMP模式串匹配+Compress Words CodeForces - 1200E

题意&#xff1a; 给你若干个字符串&#xff0c;答案串初始为空。第 iii 步将第 iii 个字符串加到答案串的后面&#xff0c;但是尽量地去掉重复部分&#xff08;即去掉一个最长的、是原答案串的后缀、也是第 iii个串的前缀的字符串&#xff09;&#xff0c;求最后得到的字符串…

.NET Core 反射获取所有控制器及方法上特定标签

有个需求&#xff0c;就是在. NET Core中&#xff0c;我们想在项目 启动时&#xff0c;获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方&#xff0c;把他的参数&#xff0c;放入一个集合并缓存起来&#xff0c;以便后面使用此数据用于权限验证。我们通过反射获取所有控…

[JavaWeb-Servlet]Servlet的体系结构

Servlet的体系结构 Servlet -- 接口|GenericServlet -- 抽象类|HttpServlet -- 抽象类* GenericServlet&#xff1a;将Servlet接口中其他的方法做了默认空实现&#xff0c;只将service()方法作为抽象* 将来定义Servlet类时&#xff0c;可以继承GenericServlet&#xff0c;实现…

折半搜索+洛谷 P2962 [USACO09NOV]Lights G

题意&#xff1a; 有 n盏灯&#xff0c;每盏灯与若干盏灯相连&#xff0c;每盏灯上都有一个开关&#xff0c;如果按下一盏灯上的开关&#xff0c;这盏灯以及与之相连的所有灯的开关状态都会改变。一开始所有灯都是关着的&#xff0c;你需要将所有灯打开&#xff0c;求最小的按…

将数据从 SQL Server 导入 Azure Storage Table

点击上方蓝字关注“汪宇杰博客”导语最近有个需求要将数据存储从 SQL Server 数据库切换到 Azure Storage 中的 Table。然而不管是 SSMS 还是 Azure Portal 都没有提供直接的导入功能&#xff0c;是不是又想自己写程序去导数据了&#xff1f;其实不用&#xff01;没有点过数据库…

[JavaWeb-HTTP]HTTP概念

HTTP&#xff1a; * 概念&#xff1a;Hyper Text Transfer Protocol 超文本传输协议* 传输协议&#xff1a;定义了&#xff0c;客户端和服务器端通信时&#xff0c;发送数据的格式* 特点&#xff1a;1. 基于TCP/IP的高级协议2. 默认端口号:803. 基于请求/响应模型的:一次请求对…

Good Number Gym - 102769G 2020年CCPC秦皇岛分站赛

题意&#xff1a; 如果一个数字是Good Number&#xff0c;当且仅当 ⌊xk⌋\left \lfloor\sqrt[k]{x}\right \rfloor⌊kx​⌋(向下取整) 能整除 x 。 现在给出 n,k &#xff0c;求 1 到 n 之中Good Number 的个数。 题目&#xff1a; Alex loves numbers. Alex thinks that…

【完整目录】每天5分钟用C#学习数据结构

【基础知识】| 作者 / Edison Zhou这是恰童鞋骚年的第250篇原创内容不知不觉&#xff0c;每天5分钟学习数据结构就更新完了&#xff0c;本篇将该系列所有文章整理起来作为一个目录&#xff0c;方便你的快速阅读。1线性表线性表是最简单也是在编程当中使用最多的一种数据结构。例…

.NET 5 开发WPF - 美食应用登录UI设计

点击上方“Dotnet9”添加关注哦Demo演示&#xff1a;演示动画你的时间宝贵&#xff0c;不想看啰嗦的文字&#xff0c;可直接拉到文末下载源码&#xff01;1. 新建项目站长开发环境&#xff1a;VS 2019企业版 16.70.NET 5 Preview 5.NET 5 WPF 项目模板和 .NET Core 3.1 WPF 项目…

[JavaWeb-HTTP]HTTP_请求消息_请求头请求体

请求消息数据格式 1. 请求行请求方式 请求url 请求协议/版本GET /login.html HTTP/1.1* 请求方式&#xff1a;* HTTP协议有7中请求方式&#xff0c;常用的有2种* GET&#xff1a;1. 请求参数在请求行中&#xff0c;在url后。2. 请求的url长度有限制的3. 不太安全* POST&#xf…

字典树模板+洛谷P2580 于是他错误的点名开始了

题目&#xff1a; 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人。 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次&#xff0c;然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉&#xff08;详情请见已结束比赛 CON900&#xff09;。 题目描述 这之…

基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(五)

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

[JavaWeb-Servlet]概述与快速入门

Servlet&#xff1a; server applet * 概念&#xff1a;运行在服务器端的小程序* Servlet就是一个接口&#xff0c;定义了Java类被浏览器访问到(tomcat识别)的规则。* 将来我们自定义一个类&#xff0c;实现Servlet接口&#xff0c;复写方法。* 快速入门&#xff1a;1. 创建Ja…

01tire+洛谷P4551 最长异或路径

题目&#xff1a; 给定一棵n个点的带权树&#xff0c;结点下标从1开始到N。寻找树中找两个结点&#xff0c;求最长的异或路径。 异或路径指的是指两个结点之间唯一路径上的所有边权的异或。 输入格式 第一行一个整数NN&#xff0c;表示点数。 接下来 n−1 行&#xff0c;给…

C#9.0 终于来了,带你一起解读 nint 和 Pattern matching 两大新特性玩法

一&#xff1a;背景1. 讲故事上一篇C#9.0 终于来了&#xff0c;您还学的动吗&#xff1f; 带上VS一起解读吧&#xff01;跟大家聊到了Target-typed new 和 Lambda discard parameters&#xff0c;看博客园和公号里的阅读量都达到了新高&#xff0c;甚是欣慰&#xff0c;不管大家…