2022“杭电杯”中国大学生算法设计超级联赛(5)

news/2024/5/3 3:52:52/文章来源:https://blog.csdn.net/m0_62289613/article/details/126643690

Bragging Dice

 两个人掷骰子,两人都知道对方手中和自己手中的牌数,现在有两种操作,一种是挑战,即打开盖子,看是否是前一人说的那样;另一种是声称,即给出判断,类似有x个y点的骰子这样的说法。给出两人手中的牌,判断谁会赢。

思路:很坑人的签到题。因为声称是有要求的每次要么x大于上一个x,y是任意的;要么x等于前一个x,y大于上一个y。这样其实先手有策略控制claim的次数,即先手最大化x和y,这样使得后手无法接着claim,先手必赢。

AC Code:

#include <bits/stdc++.h>typedef long long ll;
const int N=15;
int t,n,x;
int a[N],b[N];int main(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);std::cin>>t;while(t--){std::cin>>n;memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(int i=1;i<=n;i++){std::cin>>x;a[x]++;}for(int i=1;i<=n;i++){std::cin>>x;b[x]++;}bool flag=false;for(int i=1;i<=6;i++){if(a[i]>1||b[i]>1){flag=true;break;}}std::cout<<(flag?"Win!":"Just a game of chance.")<<'\n';}return 0;
}

Buy Figurines

 有n个人买东西,给出n个人来的时间和需要的时间,一共有m个窗口,每个人会优先选择编号最小且人最少的窗口,问从第一个人来到最后一个人走需要多长时间。

思路:比较麻烦的模拟题。我们不仅要维护每一个队列,还要对每个人的开始时间结束时间和在哪买全都包括。如果简单的用m个队列的话会T,这里有种线段树维护的方式,线段树维护的是最适合把人放在哪个位置,用优先队列维护每个人的信息,细节见代码。

 AC Code:

#include <bits/stdc++.h>#define int long long
typedef std::pair<int,int>PII;
const int N=2e5+5;
int t,n,m;
int leave[N];struct SegmentTree{struct Tree{int l,r;int pos,min;}tr[N<<2];struct node{int sta,len;bool operator <(const node &a) const{return sta<a.sta;}}e[N];void pushup(int u){tr[u].min=std::min(tr[u<<1].min,tr[u<<1|1].min);if(tr[u<<1].min==tr[u].min) tr[u].pos=tr[u<<1].pos;else tr[u].pos=tr[u<<1|1].pos;}void build(int u,int l,int r){tr[u]={l,r,l,0};if(l==r) return;else{int mid=l+r>>1;build(u<<1,l,mid);build(u<<1|1,mid+1,r);pushup(u);}}void modify(int u,int x,int v){if(x==tr[u].l&&x==tr[u].r) tr[u].min+=v;else{int mid=tr[u].l+tr[u].r>>1;if(x<=mid) modify(u<<1,x,v);if(x>mid) modify(u<<1|1,x,v);pushup(u);}}
}ST;signed main(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);std::cin>>t;while(t--){std::cin>>n>>m;for(int i=1;i<=n;i++){int a,b;std::cin>>a>>b;ST.e[i]={a,b};}for(int i=1;i<=m;i++){leave[i]=0;}ST.build(1,1,m);std::priority_queue<PII,std::vector<PII>,std::greater<PII>>pq;std::sort(ST.e+1,ST.e+1+n);int ans=0;for(int i=1;i<=n;i++){while(!pq.empty()&&pq.top().first<=ST.e[i].sta){ST.modify(1,pq.top().second,-1);pq.pop();}int pos=ST.tr[1].pos;ST.modify(1,pos,1);leave[pos]=std::max(ST.e[i].sta,leave[pos])+ST.e[i].len;pq.push({leave[pos],pos});ans=std::max(leave[pos],ans);}std::cout<<ans<<'\n';}return 0;
}

 os:线段树yyds!!!

Slipper

 给出一棵树,每一条边之间有权值,也可以花费p传送到距离k层的位置,求最短路。

思路:主要问题是如何建图和如何解决数据范围较大的问题。如果在每一个相距k层的点之间建边,n^2肯定不可行,考虑两层之间新建一层,入度边权为0,出度为p,解决了建边问题之后直接跑Dijkstra求最短路即可。

AC Code;

#include <bits/stdc++.h>typedef long long ll;
typedef std::pair<ll,int>PII;
#define INF 0x3f3f3f3f
const int N=4e6+5;
int t,n,k,p,S,T,cnt;
int e[N<<1],next[N<<1],w[N<<1],deep[N],head[N];
ll dis[N];
std::vector<int>v[N];
bool vis[N];void add_edge(int u,int v,int x){e[cnt]=v;w[cnt]=x;next[cnt]=head[u];head[u]=cnt++;
}void DFS(int u,int fa){deep[u]=deep[fa]+1;v[deep[u]].push_back(u);for(int i=head[u];~i;i=next[i]){int j=e[i];if(j==fa) continue;DFS(j,u);}
}void Dijkstra(){std::priority_queue<PII,std::vector<PII>,std::greater<PII>>pq;memset(dis,INF,sizeof(dis));memset(vis,0,sizeof(vis));dis[S]=0;pq.push({dis[S],S});while(!pq.empty()){auto tt=pq.top();pq.pop();int now=tt.second;if(vis[now]) continue;vis[now]=true;for(int i=head[now];~i;i=next[i]){int u=e[i];if(dis[u]>dis[now]+w[i]){dis[u]=dis[now]+w[i];pq.push({dis[u],u});}}}
}signed main(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);std::cin>>t;while(t--){memset(head,-1,sizeof(head));cnt=0;std::cin>>n;for(int i=1;i<=n;i++){v[i].clear();}for(int i=1;i<n;i++){int a,b,c;std::cin>>a>>b>>c;add_edge(a,b,c);add_edge(b,a,c);}std::cin>>k>>p>>S>>T;DFS(1,0);for(int i=1;i<=n;i++){for(auto u:v[i]){add_edge(u,i+n*2,0);add_edge(i+n,u,0);}if(i-k>0) add_edge(i+n*2,i-k+n,p);if(i+k<=n) add_edge(i+n*2,i+k+n,p);}Dijkstra();std::cout<<dis[T]<<'\n';}return 0;
}

os:感觉这个题和之前在kuangbin专题做的最短路难度挺相似的,,好像还有一个题和这个idea解题的差不多,只不过弱队签到都要搞好久,,

下一个NTT啊,没学,跑路!

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

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

相关文章

[MySQL数据库部署及初始化相关]

一、MySQL安装前系统环境检测 1.selinux和iptables需要关闭 cat /etc/sysconfig/selinux sed -i s/enable/disable/g /etc/sysconfig/selinuxchkconfig --list|grep iptables chkconfig iptables off chkconfig --list|grep iptables2.I/O调度系统默认是cfq模式&#x…

IDEA 创建 Servelet 项目

本文主要讲述如何在 idea 中添加 Servelet &#xff0c;适合初学者及从 Eclipse 开发工具转为 IDEA 的开发人员学习 环境介绍 系统环境&#xff1a;win11 开发工具版本&#xff1a;IntelliJ IDEA 2022.2.1 项目创建及配置流程 1.创建 Java 项目 2.添加框架支持 3.添加 classes…

如何仅使用 CSS 创建响应式网站

如何仅使用 CSS 创建响应式网站 使用 vw 和 rem 构建响应式页面。Photo by 用户体验商店 on 不飞溅 前言 从移动浏览器或应用程序访问的网站越来越多。对我来说,在空闲时间,我基本上是用手机访问网站。移动浏览器对用户来说很方便,但对开发人员来说却是痛苦的,因为屏幕大…

概述:隐式神经表示(Implicit Neural Representations,INRs)

隐式神经表示&#xff08;Implicit Neural Representations&#xff0c;INRs&#xff09;1 简介1.1 传统的隐式表示1.1.1 代数表示1.1.2 函数表示1.1.3 水平集表示&#xff08;level set&#xff09;1.2 什么是隐式神经表示1.3 隐式神经表示的优缺点1.3.1 优点1.3.2 缺点2 应用…

GD32(7)程序烧录及运行

目录简介启动方式Boot00&#xff0c;Boot1xBoot01&#xff0c;Boot10Boot01&#xff0c;Boot11烧录方式ICPISPIAPIAP的作用IAP与ICP、ISP的运行差别IAP的Bootloader程序实现IAP的APP程序实现简介 微控制器在硬件中作为核心&#xff0c;通过执行保存在内部存储器中的程序&#x…

网站安全防护措施有哪些

想要我们的网站在网络中安全稳定运行&#xff0c;网站安全防护是不可或缺的环节&#xff0c;那么网站安全防护需要做哪些措施呢&#xff0c;这些措施能起到什么作用呢&#xff0c;接下来一起跟着小编一起来看看吧。 服务器安全狗和网站安全狗2022新版更新 更有效帮助用户防护网…

精品基于Uniapp+SSM实现的公园植物介绍APP

《[含文档PPT源码等]精品基于UniappSSM实现的公园植物介绍APP[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务…

设备通过国标GB28181/海康Ehome接入EasyCVR,视频无法打开的原因分析及解决方法

EasyCVR平台支持多类型设备、多协议方式接入&#xff0c;包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等&#xff0c;以及厂家私有协议&#xff0c;如海康SDK、大华SDK、海康Ehome等。平台可将接入的流媒体进行处理及分发&#xff0c;分发的视频格式包括RTSP、RTM…

Swift Practice # 172 Swift 取得网页资料并制作台湾乡镇气象连结JSON

Swift Practice # 172 Swift 取得网页资料并制作台湾乡镇气象连结JSON 上一篇解决了使用Google Admob套件所产生的Link问题,让广告可以顺利显示。 [ Swift Practice # 171 Google Admod 闪退之-ObjC Linker 与SPM 上一篇简单的练习改变SwiftUI Map的显示比例,达到所有显示资料…

python3 词频统计计数分析+可视化词云 jieba+wordcloud 数据分析

hi&#xff0c; 大家好&#xff0c;我是宋哈哈&#xff0c;今天分享一个利用 python 的 jieba 库 和 wordcloud 词云库 做一个字符串的词频分析和词云可视化 编程环境&#xff1a; python 版本&#xff1a;3.6.8 编辑器&#xff1a;pycharm 2020.1.3 专业版 系统环境&#xff1…

使用聚类(K-means)分析方法对骑手进行分类标签定义

什么是聚类分析 聚类分析的目标就是在相似的基础上收集数据来分类&#xff0c;属于无监督学习。就是通过行为数据&#xff0c;通过算法将相似的人群聚集在一起&#xff0c;形成不带标签的人群簇。再人为的对人群簇进行分析&#xff0c;寻找特征标签。 一、数据构建 根据骑手的…

电脑重装系统开机后运行慢怎么办

小编就给大家分享四个电脑运行慢的方法&#xff0c;可以选择适合自己的方法去使用&#xff0c;一般情况都是可以解决掉电脑开机后运行慢的问题&#xff0c;我们接着看看吧。 还有其它的电脑重装系统方法 工具/原料&#xff1a; 系统版本&#xff1a;windows7系统 品牌版本&a…

Leetcode题解——30. 包含min函数的栈(辅助栈思想)

题目地址&#xff1a;剑指 Offer 30. 包含min函数的栈 - 力扣&#xff08;LeetCode&#xff09; 目录 一.算法思想 二.代码实现 三.拓展思考 首先说结论&#xff0c;这道题虽然难度不大&#xff0c;但是算法思想很重要&#xff0c;是辅助栈应用的生动实例。 所以&#xff…

(10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】

&#xff08;1&#xff09;工业界推荐系统-小红书推荐场景及内部实践【业务指标、链路、ItemCF】 &#xff08;2&#xff09;工业界推荐系统-小红书推荐场景及内部实践【UserCF、离线特征处理】 &#xff08;3&#xff09;工业界推荐系统-小红书推荐场景及内部实践【矩阵补充、…

VSCode 配置 C++ 环境

开学了&#xff0c;后面更新速度会更慢&#xff0c;望周知。 接上回: https://blog.csdn.net/orangebench11/article/details/126111356 先说一下, 这个教程不是给完整json复制粘贴, 是要跟教程配置 (放心, 大部分配置都很简单)。 安装VSCode 官网: Visual Studio Code - C…

2021年研究生数模B题论文记录

2021年研究生数模B题论文记录1.常见数据处理方法&#xff1a;2.相关性系数选择3.聚类算法4.一种数据降维方式5.预测模型文章来源 2021年全国大学生研究生数学建模竞赛优秀论文集合&#xff0c;B题&#xff0c;文章编号&#xff1a;B21100130067 1.常见数据处理方法&#xff1a;…

Golang高性能日志库zap + lumberjack 日志切割组件详解

文章篇幅较长&#xff0c;可以先收藏防止迷路~ 目录zap日志库1. why zap?2. 简单使用3. 自定义logger例子4. Gin项目使用zap6. lumberjack 日志切割组件zap日志库 在许多Go语言项目中&#xff0c;我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中&a…

Java刷题面试系列习题(六)

文章目录前言Java题目练习⭕题目一&#xff1a; 统计一句话中重复单词的个数&#x1f31f;代码演示&#x1f4af;思路解析⭕题目二&#xff1a; map简单应用&#x1f31f;代码演示&#x1f4af;思路解析⭕题目三&#xff1a; 集合排序&#x1f31f;代码演示&#x1f4af;思路解…

分享查题公众号制作过程

分享查题公众号制作过程 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#xf…

不要再把数据可视化搞成表面工程,论数据可视化的正确逻辑

日前&#xff0c;我国网民规模达10.51亿的消息上了热搜&#xff0c;点进去看才发现是中国互联网络信息中心&#xff08;CNNIC&#xff09;发布了最新的《中国互联网络发展状况统计报告》&#xff0c;其中有很多值得思考的信息&#xff0c;也为未来发展指明了大的方向。就比如网…