North American Invitational Programming Contest 2018

编程之家收集整理的这篇文章主要介绍了North American Invitational Programming Contest 2018编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

2018-10-03 North American Invitational Programming Contest 2018


C - Flashing Fluorescents

题意:给出一排灯泡,有亮的有暗的,如果你改变第i个灯泡的状态,那么下一个时刻,i+1的灯泡会变,下下个时刻,i+2的会变,直到最后。每个时刻,你可以改变一个灯泡的状态。问,最早哪一个时刻,灯泡都是亮的。
solution:分组背包。
在最后一个时刻,你只能改变一个位置的状态,记为1。
在倒数第二个时刻,你能改变连续两个位置的状态,即为11。
依次递推。
然后,就是,每一组内,你只能挑选一个背包背。看哪个时刻,所有的背包的异或和异或最开始的状态全为1。

D - Missing Gnomes

题意:给出n,代表你要用n个数去构造一个排列,按顺序给出k个数,你需要构造的排列中要有k个数的子数组,且要字典序最小。

solution:可以发现,从最小的开始,未放过的,如果比当前的位要小,就放,否则跳到下一个位,放完即可。

H - Recovery

题意:有一个n*m的01矩阵,如果某一行有偶数个1,那么值为0,否则为1。列同理。给出行和列的值,你需要构造出符合行列的值的矩阵,要求,1的个数尽可能多,如果有多个,从第一行开始的字典序要最小。

solution:我们考虑在n*m全为1的矩阵上去挖0。那么现在,如果行为偶数,列的值不变,否则,也就是说,每一列上有奇数个1。如果这一列上的值为奇数,那么我需要挖去偶数个0,反之,我需要挖去奇数个0。行同理。这样之后,我们开始匹配,如果行列都需要挖去奇数个,那么我们将该行该列的数变成0。匹配完之后,势必会行或者列有剩余。我们同时填两个0,即可。为了保证字典序最小,行和列要从最后开始匹配,填0要保证填在第一行或者第一列。此外,开始前,如果行+列1的个数为奇数则不合法。因为每个1的出现,都同时会改变行和列的值,所以1的个数一定是偶数。

I - Red Black Tree

题意:给定一颗有根树,有红点和黑点,给定k,问拥有0~k个红点的集合有多少,且该集合中两两互不为祖先。

solution:类似于树分治的操作,dp[i][j]代表以当当前结点为根的子树中,拥有红点为j的集合数量。考虑dp[u]的形成过程,v1,v2为最先的两个儿子。那么直接将儿子合并起来即可,因为儿子的集合互不为祖先。然后,集合数累加,与第三个儿子继续合并。最后,将当前u这个点加入到集合中。

K - Zoning Houses

题意:按顺序给定一系列的点,然后给定m个询问。每个询问独立,给定l和r的区间,要求你需要找到一个边长最小的正方形去覆盖至少(l-r)个点。solution:4个维度,用线段树或者st表,记录这个维度最值。每次搜索时,搜索这个维度的最值,比方说搜到的为k,然后你需要在(l,k-1)和(k+1,r)里去找这个维度的最值和另一个维度的最值做差。然后4次取最大值即可。

总结

以上是编程之家为你收集整理的North American Invitational Programming Contest 2018全部内容,希望文章能够帮你解决North American Invitational Programming Contest 2018所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的Flash相关文章

Chrome 无法显示使用插件的内容 Chrome 不再支持很多插件。不过网站创建者已经通过更安全的方式,将多数这类功能添加到 Chrome 中。 为什么 NPAPI 插件现在无法正常运行过去,许多插
Flash 开发环境搭建和文字滚动效果实例 一、Flash 开发环境搭建 Flash发布的时候可以将资源(即将库中的元件)集成到swf运行文件中。Flash没有代码自动输入补全功能,因此需要一个英文一
在做web开发中可能会遇到flash遮挡页面中元素的情况,无论怎么设置flash容器和层的深度(z-index)也无济于事,现有的解决方案是在插入flash的embed或object标签中加入”wmo
chrome 45以上不自动播放"非必要"flash的一种可能解决方案chrome 45以上flash被拦截的一种可能解决方案 问题 1、chrome 45以上(包含45)版本默认
加载形式 FLASH加载文件有两种常规方式:一种是URLLoader,可以加载文本、二进制数据或 URL 编码变量形式的数据,然后转换成简单的文本形式或值对字符串形式;一种是Loader,可以将加载的图像文件转换成BitmapData,也可以解析 SWF文件。(Socket, LocalConnection这些非常用类不在讨论范围) 加载的资源应被统一管理以方便调用和重用,管理方式一般有两种:一种
FLASH与传统环境的不同点 MVC最早在1979年的时候第一次被人提出。不过,当时还不存在网络应用的概念。之后当万维网诞生之后,又过了很长时间…… 它并不是自诞生就开始流行的,而改变的原因很简单——因为两个极其流行的开发框架包含了这种模式,它们就是:Struts 和 Ruby on Rails。之后,模仿者蜂拥而至。所以,在人们眼里看来,实际上是先有的Struts,然后才有的MVC,也无怪乎MV
GC和内存泄露无关 垃圾回收,这次是一个被无数人讨论过的传统话题。 Action Script使用的是和Java相似的内存管理机制,并不会即时回收废弃对象的内存,而是在特定时间统一执行一次GC(Gabage Collection)操作来释放废弃对象的内存,避免了重复判断是否需要回收产生的性能问题。 但要注意,这只是决定回收的时机,而不是回收的内容。这个延迟执行内存回收也就是个表面的现象,不管什么时
举个简单的例子,我们要显示一个背包中的道具,需要道具数据库保存ID、类型ID、图片地址、名称、大类别、子类别、质量、说明、是否出售、是否锁 定、道具创建时间、道具持续时间、使用效果定义字符串、可使用等级、堆叠数量、最大堆叠数、出售单价等等,如果按传统做法,就是返回一个二维数组,将所有 信息加载进来,然后直接填充列表,依次填写各项内容。这个做法很很简单,初级程序员就能完成,但代价是,传输数据量会非常
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注