2018.12.30【NOIP提高组】模拟A组

2023-11-10 11:10
文章标签 模拟 30 提高 noip 2018.12

本文主要是介绍2018.12.30【NOIP提高组】模拟A组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

去上海了,所以没有比赛,不过还是看了题目


JZOJ 5353 村通网

题目

一座建筑有网,当且仅当满足以下至少一个条件:
1、直接连网,花费为 A A A
2、连接有网的建筑,花费为 B B B×两者曼哈顿距离。
N N N座建筑,知道所有建筑的坐标,问最少要多少费用才能达到目的。


分析

那么这道题就是一道比较裸的最小生成树,由于任意点间都能连边,所以说kruskal没有什么大优势,在此用的是裸的prim,那么怎么做呢,我的想法是建立一个虚拟点,那么其他点的费用就是A,然后在其他点跑最小生成树,所连的边权和就是答案


代码

#include <cstdio>
#include <climits>
#include <cctype>
#include <algorithm>
#define rr register
#define fre(t) freopen(t".in","r",stdin),freopen(t".out","w",stdout)
using namespace std;
int n,t,ans,dis[1001],x[1001],y[1001]; bool v[1001];
inline signed iut(){rr int ans=0,f=1; rr char c=getchar();while (!isdigit(c)) f=(c==45)?-f:f,c=getchar();while (isdigit(c)) ans=ans*10+(c-48),c=getchar();return ans*f;
}
inline void mmin(int &a,int b){if (a>b) a=b;}
inline signed abs(int x){return x<0?-x:x;}
signed main(){fre("pupil"); dis[0]=INT_MAX; n=iut();fill(dis+1,dis+1+n,iut()); t=iut();for (rr int i=1;i<=n;++i) x[i]=iut(),y[i]=iut();for (rr int i=1;i<=n;++i){rr int k=0;for (rr int j=1;j<=n;++j)if (!v[j]&&dis[j]<dis[k]) k=j;ans+=dis[k]; v[k]=1;for (rr int j=1;j<=n;++j) if (!v[j]) mmin(dis[j],(abs(x[k]-x[j])+abs(y[k]-y[j]))*t);}printf("%d",ans);return 0;
}

JZOJ 5354 导弹拦截

题目

在这里插入图片描述


分析

然而,第一问的动态规划还是按原来的打,但是第二问就尴尬了,本来想照着老样子打,没想到WA了
后来发现第二问竟然是匈牙利算法,求最大独立集,当第一问 i i i点由 j j j点推来,那么从 i i i j j j连边,跑匈牙利就可以输出答案了。但是还是WA了!
导弹同时飞来,这可真是要命,那么可以提前对一个坐标排序,然后按照刚才的方法,AC


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
#include <cstring>
#define rr register
#define fre(t) freopen(#t".in","r",stdin),freopen(#t".out","w",stdout)
using namespace std;
struct node{int y,next;}e[500001]; 
struct rec{int x,y,z;}a[1001]; bool cover[1001];
int n,dp[1001],ans,link[1001],ls[1001],k=1;
inline signed iut(){rr int ans=0,f=1; rr char c=getchar();while (!isdigit(c)) f=(c==45)?-f:f,c=getchar();while (isdigit(c)) ans=ans*10+(c-48),c=getchar();return ans*f;
}
bool cmp(rec i,rec j){return i.x<j.x;}
inline signed dfs(int x){for (rr int i=ls[x];i;i=e[i].next)if (!cover[e[i].y]){rr int q=link[e[i].y];link[e[i].y]=x; cover[e[i].y]=1;if (!q||dfs(q)) return 1;link[e[i].y]=q;}return 0;
} 
signed main(){fre(missile); n=iut();for (rr int i=1;i<=n;++i) a[i]=(rec){iut(),iut(),iut()};sort(a+1,a+1+n,cmp);for (rr int i=1;i<=n;++i){dp[i]=1;for (rr int j=1;j<i;++j)if (a[j].x<a[i].x&&a[j].y<a[i].y&&a[j].z<a[i].z)dp[i]=dp[i]>dp[j]+1?dp[i]:dp[j]+1,e[++k]=(node){j,ls[i]},ls[i]=k;//动态规划ans=ans>dp[i]?ans:dp[i];}printf("%d\n",ans); ans=0;for (rr int i=1;i<=n;++i){memset(cover,0,sizeof(cover));ans+=dfs(i);}printf("%d",n-ans);//最大独立集,用节点数-最大匹配return 0;
}

JZOJ 5355 保命

声明

因为JZOJ无人AC,且暂时不想做此题(斜率优化),所以说暂时不做


后续

未完待续

这篇关于2018.12.30【NOIP提高组】模拟A组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382278

相关文章

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti