洛谷:P3068 [USACO13JAN] Party Invitations S(枚举、前缀和)

这题我们数据范围太大,用二维肯定是不行的,我们可以采用一维线性存储。

如题意,我们可以将每组奶牛编号都存在一维数组里面,只需记录每组的头尾指针就可以了。

如题中样例我们就可以存储成1 3 3 4 1 2 3 4 5 6 7 4 3 2 1

然后第一组头尾指针就是 1,2 。

第二组头尾指针就是3,4。

第二组头尾指针就是 5,11。

第二组头尾指针就是12,15。

#include<iostream>
using namespace std;
const int N = 1e6 + 10;
pair<int, int> q[N]; //q用于记录每组的头和尾
int e[N], d[N]; //d用于记录每组的数量,e用于将所有组的奶牛线性存储
int n, g, ans;
bool f[N]; //用于判断当前编号是否被邀请过
bool fz[N];//用于判断每组是否都邀请过
int main()
{cin >> n >> g;int idx = 0;for(int i=1;i<=g;i++){cin >> d[i];for (int j = 1; j <= d[i]; j++){cin >> e[++idx];  //将所有组奶牛线性存储,}//存储每组的头尾指针//如例题e中存入的是1 3 3 4 1 2 3 4 5 6 4 3 2 1//第一组是1 3,那么q[1]的头尾指针就对应1 3下标,也就是1,2int head = idx - d[i] + 1; int tail = idx;q[i] = { head,idx };}f[1] = true;int mm = 0;do{mm = 0;for (int i = 1; i <= g; i++){int hh = q[i].first;int tt = q[i].second;int c = 0; //当前组邀请的人数int flag = 0; //记录没被邀请人的下标for (int j = hh; j <= tt; j++){if (f[e[j]]) //如果当前编号已经被邀请了,当前组邀请的人数++c++;elseflag = j;}if (c == d[i] - 1){f[e[flag]] = true; //邀请前组唯一一个没被邀请的人fz[i] = true;  //现在当前组就全部被邀请了mm = 1;  //既然已经新邀请了一个人,那么就要判断是否还要再继续邀请}if (c == d[i]) //如果相等就说明改组已经全部邀请fz[i] = true;}} while (mm == 1); //如果mm=1才说明需要进一步邀请,否则就不需要邀请了for (int i = 1; i <= n; i++)if (f[i])ans++; //如果被邀请数量就+1cout << ans << endl;return 0;
}

算法小白的刷题日记.

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

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

相关文章

idea内置的database和chat2DB如何?

捉妖啦 最近由于某些众所周知的因素&#xff0c;要求卸载navicat,所以寻找替代品是当下任务。如果知识MySQL数据库的话&#xff0c;那替代品可太多了&#xff0c;由于使用的是MongoDB&#xff0c;所以至今没有找到一个称手的工具。 需要一款像Navicat一样&#xff0c;可以直…

AI生成PPT

利用AutoPPT 修改成streamlit程序 暂时排版比较随意

数电票又增新票种 百望云率先推出机动车数电票解决方案

经过两年多的试点推广&#xff0c;数电票工程已经覆盖全国大部分省区市&#xff08;含计划单列市&#xff09;&#xff0c;随着系统建设的深入&#xff0c;不仅是应用功能逐渐完善&#xff0c;对票种的支持也走向全面。 2023年11月天津市正式开启机动车数电票的开具功能&#x…

首尔之春在线资源最新电影1080p高清

打开下面这个链接就可以看到 首尔之春在线资源最新电影1080p高清 如果链接打不开&#xff0c;就复制下面的网址到浏览器打开 https://www.zhufaka.cn/liebiao/A09504AE3BF8BD06 用阿里云盘下载&#xff0c;下载完成之后&#xff0c;用迅雷播放 首尔之春在线资源最新电影10…

计算机网络——概述

计算机网络——概述 计算机网络的定义互连网&#xff08;internet&#xff09;互联网&#xff08;Internet&#xff09;互联网基础结构发展的三个阶段第一个阶段——APPANET第二阶段——商业化和三级架构第三阶段——全球范围多层次的ISP结构 ISP的作用终端互联网的组成边缘部分…

vue 之 Quill编辑器封装

安装 npm install vue-quill-editor --save <template><div><el-upload:action"uploadUrl":before-upload"handleBeforeUpload":on-success"handleUploadSuccess":on-error"handleUploadError"name"file":sh…

vue3基础教程(2)——创建vue3+vite项目

博主个人微信小程序已经上线&#xff1a;【中二少年工具箱】。欢迎搜索试用 正文开始 专栏简介1. 前言2.node版本检测3.创建vue项目 专栏简介 本系列文章由浅入深&#xff0c;从基础知识到实战开发&#xff0c;非常适合入门同学。 零基础读者也能成功由本系列文章入门&#x…

C 判断

判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 C 语言把任何非零和非空的值假定为 true&#xff0c;把零或 null 假定为 false。 下面…

面试数据库篇(mysql)- 04了解过索引吗?(什么是索引)

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 B-Tree,B树是…

三大数学软件之Maple

相信钻研数学的小伙伴们对MATLAB、SPSS这样的重量级软件并不陌生&#xff0c;这些大型软件能求解复杂的运算&#xff0c;解决各领域的数学问题。今天博主为大家带来了一款名不见经传的软件——Maple&#xff0c;作为三大数学软件之一&#xff0c;Maple同样拥有不菲的计算能力&a…

【设计模式 03】抽象工厂模式

一个具体的工厂&#xff0c;可以专门生产单一某一种东西&#xff0c;比如说只生产手机。但是一个品牌的手机有高端机、中端机之分&#xff0c;这些具体的属于某一档次的产品都需要单独建立一个工厂类&#xff0c;但是它们之间又彼此关联&#xff0c;因为都共同属于一个品牌。我…

matplotlib——直方图(python)

需求 假设你获取了250部电影的时长&#xff0c;希望统计出这些电影时长的分布状态等信息。 代码 from matplotlib import pyplot as plt import matplotlibmatplotlib.rc("font",family"FangSong")# 初始化数据 a[131, 98, 125, 131, 124, 139, 131, 1…