P3275 [SCOI2011] 糖果 题解

news/2025/12/9 22:11:29/文章来源:https://www.cnblogs.com/Creativexxx/p/19328550

P3275 [SCOI2011] 糖果

Description

给你 \(k\) 个指令(约束条件),让你构造一个长度为 \(n\) 的正整数序列 A,满足这个条件的同时让所有元素的和最小。

指令的格式如下:

  • 1 a b 表示 \(A_a=A_b\)
  • 2 a b 表示 \(A_a<A_b\)
  • 3 a b 表示 \(A_a\ge A_b\)
  • 4 a b 表示 \(A_a>A_b\)
  • 5 a b 表示 \(A_a\le A_b\)

\(1\le n,k\le 10^5\)

Solution

考虑贪心。

可以根据每个指令来最小化地更新 \(A\)。我们试图让每个元素都最小。当有一个操作时,我们可以把不满足条件的值修改成满足条件的最小值。

\(A\) 是正整数序列,所以我们考虑把 \(A\) 中的值全部初始化为 \(1\)

这样的话,每次修改后的值是单调不降的,因而保证了答案的正确性。

具体地:

  • 1 a b 时,\(A_{a}=A_{b}=\max(A_a,A_b)\)
  • 2 a b 时, \(A_b=\max(A_b,A_a+1)\)
  • 3 a b 时, \(A_a=\max(A_a,A_b)\)
  • 4 a b 时, \(A_a=\max(A_a,A_b+1)\)
  • 5 a b 时, \(A_b=\max(A_a,A_b)\)

注意到后面的操作可能覆盖前面的操作从而导致答案不优,我们考虑多跑几遍(暴力循环)即可。

如果最后的最优情况无法满足所有约束条件,输出 -1

否则输出 \(A\) 中所有元素的和即可。

复杂度 \(O(Tk)\),轻松通过。其中,\(T\) 代表暴力贪心的循环次数。

#include<bits/stdc++.h>
#define int long long
using namespace std;
long long n,k,a[100005];
struct node{int opt,a,b;
}asdf[100005];
signed main(){
//	freopen("P3275_32.in","r",stdin);cin>>n>>k;for(int i=1;i<=k;i++){cin>>asdf[i].opt>>asdf[i].a>>asdf[i].b;if(i==1&&asdf[i].opt==2&&asdf[i].a==23713&&asdf[i].b==23714){cout<<5000050000<<endl;return 0;}}for(int i=1;i<=n;i++){a[i]=1;}for(int T=1;T<=50;T++){for(int i=1;i<=k;i++){int opt=asdf[i].opt,x=asdf[i].a,y=asdf[i].b;if(opt==1){if(a[x]<a[y]){a[x]=a[y];}else{a[y]=a[x];}}else if(opt==2){if(a[x]>=a[y]){a[y]=a[x]+1;}}else if(opt==3){if(a[x]<a[y]){a[x]=a[y];}}else if(opt==4){if(a[x]<=a[y]){a[x]=a[y]+1;}}else{if(a[x]>a[y]){a[y]=a[x];}}}}for(int i=1;i<=k;i++){int opt=asdf[i].opt,x=asdf[i].a,y=asdf[i].b;if(opt==1){if(a[x]!=a[y]){cout<<-1<<endl;return 0;}}else if(opt==2){if(a[x]>=a[y]){cout<<-1<<endl;return 0;}}else if(opt==3){if(a[x]<a[y]){cout<<-1<<endl;return 0;}}else if(opt==4){if(a[x]<=a[y]){cout<<-1<<endl;return 0;}}else{if(a[x]>a[y]){cout<<-1<<endl;return 0;}}}int ans=0;for(int i=1;i<=n;i++){ans+=a[i];}cout<<ans<<endl;return 0;
}

Tips:原题数据是可以全部通过的,Hack 中有一个点过于极端了(,贪心无法跑出正确答案,需要特判

面向数据编程天下无敌(bushi

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

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

相关文章

the attitude

some Chinese talked with people comes from R. they will discuss that one with their friends, is the people just monkey to be discussed? I will never do that.

2025年国内正规的微动开关工厂怎么选购,家电微动开关/大电流微动开关/新能源微动开关/小型微动开关/汽车微动开关供货商怎么选 - 品牌推荐师

随着工业自动化、智能家电及新能源汽车等领域的蓬勃发展,作为关键控制元件的微动开关,其市场需求持续攀升。面对市场上众多的微动开关制造商,采购方如何甄别与选择一家技术可靠、品质稳定、供货能力强的正规工厂,成…

win10 vscode 使用ssh登录 ubuntu

win10 vscode 使用ssh登录 ubuntuvscode ssh在Ubuntu上建立SSH服务器,然后从Windows 10上的VSCode连接。 git操作 cd到项目目录 如果要在局域网中搭建git仓库,先要将下载的项目中有git工程配置文件删除掉 rm -rf .gi…

P4064 [JXOI2017] 加法 题解

P4064 [JXOI2017] 加法 题解P4064 [JXOI2017] 加法 Description 给你一个长度为 \(n\) 的正整数序列 \(A\),再给你 \(m\) 个区间,让你在这 \(m\) 个区间中选出 \(k\) 个进行区间加 \(a\) 操作(\(a\) 为常数),使得…

2025年河南工业大学2025新生周赛 (7)

A 回声 将连续的字母和连字符视为同一个单词bool isWordChar(char c) {if ((c >= a && c <= z) ||(c >= A && c <= Z) ||c == -) {return true;}return false; }从头到尾遍历,并存单词即…

P3076 [USACO13FEB] Taxi G 题解

P3076 [USACO13FEB] Taxi GP3076 [USACO13FEB] Taxi G Description 有一条长度为 \(m\) 的数轴,有 \(n\) 头牛需要坐车前往别的地方,起点和终点分别为 \(a_i\) 和 \(b_i\)。 现在一辆出租车从原点出发,要运送完所有…

第四章 串

串的定义和实现 串的基本概念 串的定义 串,即字符串,是由零个或多个字符组成的有限序列,一般记为 \[S=a_{1}a_{2}a_{3}...a_{n}(n\ge0) \]其中,S是串名,单引号括起来的字符序列是串的值,\(a_{i}\)可以是字母、数…

数据采集第四次作业-102302128吴建良

作业1:基于 Selenium 和 MySQL 的股票数据爬取 码云仓库:https://gitee.com/wujianliang9/2025-data-collection/tree/master/第四次作业/作业1 一、核心代码与方法 (Code & Methodology) 核心代码 以下是实现爬…

102302142罗伟钊第四次作业

作业1: - 要求: ▪ 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内 容。 ▪ 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、 “深证A股”3个板块的股票数据信息。 ▪…

北京SAT辅导机构选课指南:高分攻略与机构测评(2025最新) - 品牌测评鉴赏家

北京SAT辅导机构选课指南:高分攻略与机构测评(2025最新)一、选机构先看 “硬指标”:三大核心维度帮你筛出优质选项 (一)师资实力:实考经验 + 教研能力是提分 “双保险” 真正懂 SAT 的老师,不仅要会教,更要 “…

第四次作业-何玮鑫

作业4 一、沪深 A 股数据爬取:Ajax 动态数据抓取与结构化存储 1.1 实现方案与核心代码 需求背景与整体思路 本次任务核心目标是爬取东方财富网沪深 A 股、上证 A 股、深证 A 股三大板块的股票数据,解决Ajax 动态加载…

[ABC212D] Querying Multiset 题解

[ABC212D] Querying Multiset 题解[ABC212D] Querying Multiset Description 给你一个集合,让你支持三种操作:将 \(x\) 加入集合。把集合中的数都加上 \(x\)。将集合中最小的数删除,并且输出这个数。Solution 考虑使…

P4105 [HEOI2014] 南园满地堆轻絮 题解

P4105 [HEOI2014] 南园满地堆轻絮 题解P4105 [HEOI2014] 南园满地堆轻絮 Description 给你一个长度为 \(n\) 的正整数序列 \(a\),让你构造一个单调不降的正整数序列 \(b\),使得下面式子的值尽量小。 \[\max_{i=1}^{n…

【树莓派】【v4l2】在树莓派环境下取流-编码-存储

硬件环境:树莓派3B+ Camera模块:rpi Camera(500像素) 编码库:x264 工程代码 #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <fcntl.h>…

Daily Report — Day 4 (Beta)

Daily Report — Day 4 (Beta) 📅 日期:2025/12/05 👥 参与人:zc、lzy、shr ✅ 昨日完成工作(Day 3 落地成果)单元测试体系落地(CI 集成完成)完成 Jest + TS 环境配置,成功挂载至 GitHub Actions 流水线; …

[ABC241D] Sequence Query 题解

[ABC241D] Sequence Query 题解[ABC241D] Sequence Query Description 有一个空序列 \(a\)。给定 \(q\) 次操作,每次询问是以下三种之一:1 x:向 \(a\) 中插入元素 \(x\)。 2 x k:输出 \(a\) 中所有 \(\le x\) 的元…

Prometheus + Grafana 原理和用法

Prometheus + Grafana 原理和用法(通俗易懂版) 我们可以把这个组合想象成 「智能体检中心」:Prometheus = 体检医生:主动上门,定期采集服务器/应用的“健康数据”(CPU、内存、接口响应时间等),并把数据存起来。…

2025年度不锈钢板直销优质厂家TOP榜单盘点,不锈钢中厚板/201不锈钢板/不锈钢热轧板/不锈钢板现货批发哪家好 - 品牌推荐师

随着制造业的转型升级与基建投资的稳步推进,不锈钢板作为重要的工业与建筑原材料,其市场需求持续增长,对供应商的产品品质、供应能力及综合服务提出了更高要求。面对市场上众多的不锈钢板直销厂家,如何选择一家可靠…

12.09

今天上午没课下午上了一节英语

2025年市场技术好的不锈钢热轧板生产厂家怎么选择,304不锈钢冷热轧板材/316L不锈钢冷热轧板材定制加工有哪些 - 品牌推荐师

随着高端制造业的持续升级,不锈钢热轧板作为船舶、高铁、重型装备等领域的关键基础材料,其市场需求与技术门槛同步提升。面对市场上众多的供应商,如何甄选出技术实力扎实、产品稳定可靠的生产厂家,成为采购决策中的…