ZR8.31

题目链接:http://www.zhengruioi.com/contest/388

版权原因,不放题面

A

首先,排序肯定要根据工作经验排序,因为这样便于选择

之后,如果两个人工作经验相同,要尽量把只能当组员的放在前面

都可以的次之,只能当组长的放在最后

我们设\(f_{i,j,k}\)表示前\(i\)个人选择了\(j\)个组长,\(k\)个组员的方案数

转移的话就看看这个人当什么就可以了

但是要保证组员的人数时刻大于组长的人数

因为我们让组长去选择组员就能够保证满足工作经验的条件

我的错误:转移的过程中组员0不能从-1转移过来

至于时间复杂度

首先$ k \times 2 > n $肯定无解

因为保证

\(n \times k <= 10^5\)

\(k\)的最大值也只不过\(\sqrt {50000}\)

所以时间复杂度为

\(n\times k \times k\)

可以通过本题

听说可以wqs二分优化,Orz suwakow神仙

代码

B

首先可以发现,横竖互不影响,折纸可以变成裁纸

所以方案数= 横着的方案数 * 竖着的方案数

由于计算单个方向的方案数的时候

另一个方向长度始终不会改变

所以二维的矩阵就可以通过\(hash\)压成一个维度

近下来想一维的问题该如何解决

由于两个方案不同当且仅当最后剩下的区间在原数组的位置不同

所以就变成了能否通过一些操作

使得最后数组中只有\([l,r]\)

也就是说\([l,n]\),\([1,r]\)要满足条件

这两个问题本质是相同的问题,我们只考虑第一个

我们设上一次折的位置是\(j\)

那么\(i\)这个位置合法

当且仅当

以\(i -0.5\)为中心的极长回文子串包含了\(j\)

由于本来没有\(i - 0.5\)这种下标,同一左移或者右移去表示,这个细节还是挺要命的

对于一个\(i\),如果存在一个可以折叠的位置\(j,(j < i)\)

使得
\[
i - len_i / 2 <= j
\]
\(len_i\)就是以\(i\)为中心的极长子串的长度

那么\(i\)便是合法的,很明显,我们只需要维护最大的\(j\)即可

最后前缀和维护左向右的答案

第二遍统计\([r,n]\)的时候统计答案即可

代码

C

神仙\(01\)Trie

首先,插入删除

这个东西\(01\)Trie是可以完成的

将下来想,怎么满足+1

一个数\(x\)变为\((x + 1) \mod 2^{30}\)次方的本质

是找到最小的一个二进制位\(i\)使得\(a_i = 0\)且\(a_{1\dots i -1} = 1\)

然后把\(a_{1\dots i}\)全部取反

取反操作在Trie树上对应的就是交换左右儿子

我们要从低位向高位建Trie树

因为这样所有的应该被反转的链和子树都一定在一条链上

所以单词时间复杂度为\(log_n\)

异或操作就打\(tag\)把

注意打\(tag\)后要反转的链不一定是全\(1\)链了,而应该是全\(1\)异或tag之后的对应值

另外第一股不满足条件的也是要反转的

代码

ZR 8.31的更多相关文章

  1. 详细分析 javascript 的内存分配

    JavaScript语言是一门优秀的脚本语言.其中包含脚本语言的灵活性外还拥有许多高级语言的特性.例如充许构建和实例化一个对象,垃圾回 收机制(GC:Garbage Collecation).通常我们 ...

  2. 城市代码表mysql

    只有代码: # ************************************************************ # Sequel Pro SQL dump # Version ...

  3. ZR#956 集合

    ZR#956 集合 解法: 维护一个异或操作的懒标记,并对应的处理插入.删除和异或操作.接下来考虑如何整体加一. 考虑一个数字 $ x $ 变为 $ (x+1) \pmod {2^{30}} $ 的过 ...

  4. CSharpGL(31)[译]OpenGL渲染管道那些事

    CSharpGL(31)[译]OpenGL渲染管道那些事 +BIT祝威+悄悄在此留下版了个权的信息说: 开始 自认为对OpenGL的掌握到了一个小瓶颈,现在回头细细地捋一遍OpenGL渲染管道应当是一 ...

  5. 计算机程序的思维逻辑 (31) - 剖析Arrays

    数组是存储多个同类型元素的基本数据结构,数组中的元素在内存连续存放,可以通过数组下标直接定位任意元素,相比我们在后续章节介绍的其他容器,效率非常高. 数组操作是计算机程序中的常见基本操作,Java中有 ...

  6. SQL Server查询第31到40条数据

    大致分为两种情况:ID连续和ID不连续. 1.ID连续的情况: 2.ID不连续的情况: (1).两次对表查询,效率较低. ID from A) (2).外层查询没有对表A进行查询,效率提高. ID f ...

  7. 把《c++ primer》读薄(3-1 标准库string类型初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...

  8. 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton

    [源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...

  9. Lind.DDD.Manager里的3,7,15,31,63,127,255,511,1023,2047

    回到目录 进制 我是一个程序猿,我喜欢简单的数字,十进制如何,数字太多,有10种数字组成,但由于它广为人知,所有使用最为广泛,人们的惯性思维培养了十进制,并说它是最容易被计算的数字,事实上,在计算机里 ...

随机推荐

  1. Android实战:手把手实现“捧腹网”APP(三)-----UI实现,逻辑实现

    Android实战:手把手实现"捧腹网"APP(一)-–捧腹网网页分析.数据获取 Android实战:手把手实现"捧腹网"APP(二)-–捧腹APP原型设计.实 ...

  2. 猜年龄v2.0

    ''' 用户登录,只有三次机会 给定年龄,用户可以猜三次年龄 年龄猜对,让用户选择两次奖励,输入无效字符,让其选择要不要礼物 用户选择两次奖励后可以退出,选择第一次后提示还有一次 ''' #基本信息定 ...

  3. OSS跨同城3AZ重磅发布,构造全面数据保护体系

    点击订阅新品发布会! 新产品.新版本.新技术.新功能.价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 OSS跨同城3AZ重磅发布 2019年7月3日15时,OSS跨同城3AZ重磅发布 ...

  4. 在浏览器中打开php文件时,是Linux中的哪个用户执行的?

    https://segmentfault.com/q/1010000002541340 如题,这样我就可以针对这个用户设置权限了.而且这个用户是怎么关联上的,怎么查看? 解答一: .是执行 PHP 指 ...

  5. linux 系统下如何进行用户之间的切换

    切换用户的命令是su,su是(switch user)切换用户的缩写.通过su命令,可以从普通用户切换到root用户,也可以从root用户切换到普通用户.从普通用户切换到root用户需要密码(该密码是 ...

  6. Linux的 crontab定时任务小记

    编辑任务 crontab -e 查看任务 crontab -l 任务配置基本格式:*   * * * * command分(0-59) 时(0-23) 天(1-31) 月(1-12) 周(0-6,0代 ...

  7. C-链表实现,保存文件,评估-单项选择题系统课程设计---ShinePans

    课程设计   单项选择题标准化考试系 所属专业:软件project软件三班 完毕人:潘尚 一.设计计划. 1.能够用菜单明白的指导用户操作. 2.操作完毕能够返回主菜单. 3.将输入的题目保存至C盘的 ...

  8. 关于使用JavaMail发送邮件抛出java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.<init>(Ljava异常的解决方法

    我们在使用JavaMail时有可能会如下异常: Exception in thread "main" java.lang.NoSuchMethodError: com.sun.ma ...

  9. c#操作sqlite db3数据库

    首先添加引用 System.Data.SQLite.dll,引用只用添加这个,但SQLite.Interop.dll文件必须也和它同时放在Debug目录下 然后可用: SQLiteConnection ...

  10. Java练习 SDUT-2746_大小写转换

    大小写转换 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description X现在要学习英文以及各种稀奇古怪的字符的了.现在他想把一串字 ...