A. marshland

考试时想到了网络流,然而不会建图,就死了。

正解是最大费用可行流。

比较容易想到的是将每个点拆为两个点,

s连没有危险值的入点,

没有危险值的入点连有危险值的入点,入点出点之间限流有费用,

出点再连没有危险值的出点,这些出点连向t。

不断跑spfa,通过有流量的边,记录下前趋。

将前趋的边的流量改变,EK算法。

B. party

因为只有单向边,达成尽快到齐的条件是,终点为c个点的lca。

m的范围比较小,于是可以用bitset维护。

比较容易想到了在倍增求lca的同时维护bitset,取并集。

然而空间刚好卡到600多MB,时间也死了。

树链剖分。

空间返回到O(n*m)级别,比倍增少一个log。

问题转化为每个人从自己所有集合中选择相同数量的最多元素,要求互不相同。

网络流+二分可行。

源点向每个人建流量为mid的边,每个人向它包含元素建流量为1的边,每个元素向汇点建流量为1的边。

左部点流满就表示可行。

如果将每个人拆为若干个点,问题其实是求二分图完美匹配。

于是想到霍尔定理(???):

一个二分图 G 存在完美匹配, 当且仅当 X 中的任意 k 个点都至少与 Y 中的 k 个点邻接.

二分答案,枚举$2^{c*mid}$显然是可行的,然而复杂度真的死了。

考虑不同的左部点只有c个,枚举$2^c$,

1表示考虑这个人。

将答案与 所有考虑的人的bitset并集中1的个数除以考虑的人数 取min。

总复杂度为$O(\frac{qlog^2nm}{32})$。

考虑到没有修改操作,直接维护每个点到重链顶的bitset,可以将复杂度降低一个$logn$。

推荐$unsigned long long$手写$bitset$,

主要是可以将$O(n)$的$count$函数通过预处理变成$O(\frac{n}{32})$,

或者继续循环展开将所有操作改为$O(1)$。

 struct bitset{
#define lowbit(x) (x&-x)
unsigned long long bit[];
inline void reset(){
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
}
inline friend void operator |=(bitset &a,const bitset &b){
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
}
inline friend bitset operator |(const bitset &a,const bitset &b){
bitset ans;
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
return ans;
}
inline void set(const int x){
bit[x>>]|=(unsigned long long)<<(x&);
}
inline int count(){
register int cnt=;
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
return cnt;
}
};

C. platform

后缀数组。

然而完全忘记了怎么打。

没改到,鸽了。

模拟26A 题解的更多相关文章

  1. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  2. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  3. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  4. HGOI NOIP模拟4 题解

    NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...

  5. 10.8 wtx模拟题题解

    填坑 orz w_x_c_q w_x_c_q的模拟赛(150pts,炸了) money 题目背景: 王小呆又陷入自己的梦里.(活在梦里...) 题目描述: 王小呆是一个有梦想的小菜鸡,那就是赚好多好多 ...

  6. [NOIP模拟13]题解

    A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...

  7. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  8. 【洛谷】xht模拟赛 题解

    前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...

  9. 10.9 guz模拟题题解

    感谢@guz 顾z的题题解 考试共三道题,其中 第一题help共10个测试点,时间限制为 1000ms,空间限制为 256MB. 第二题escape共20个测试点,时间限制为1000ms2000ms, ...

随机推荐

  1. prometheus重启hang住问题记录

    官方issue并不承认这是一个问题,参考: https://github.com/prometheus/prometheus/issues/5727 https://github.com/promet ...

  2. N(C)O(S)I(P)P 2019 退役记

    N(C)O(S)I(P)P 2019 退役记 day-4 今天下午老师突然咕了,于是一下午欢乐时光 今天上午考试T3线段树维护个区间加,区间乘 一遍过编译,一遍过样例(第一次,俺比较弱(虽然也发现和暴 ...

  3. Test Title

    test testing... testing in day02... testing in day07...

  4. Linux环境下:vmware安装Windows报错误-缺少所需的CD/DVD驱动器设备驱动程序

    解决方法:将硬盘格式从SCSI改为IDE. 方法如下: 右键点击你新建的虚拟机名,点击最下面的setting,看到左侧第二行是hard disk 了么,你那里肯定是SCSI的,选中它,点最下面的rem ...

  5. [译] Ruby如何访问Excel文件

    Parsing Excel Files with Ruby  BY: MATT NEDRICH   翻译:佣工7001 本文中,我将会评判几种Ruby语言访问Excel文件的库.我将要讨论针对不同格式 ...

  6. 好用的随查工具Dash

    1. 好用的随查工具Dash 1.1. mac版本推荐 推荐一个很好用的工具,名字就叫Dash,当然缺点就是只有英文版,中文版可能也有但更新肯定不如英文及时 可以自由下载各种文档,比如下面的这图,左侧 ...

  7. centos7.5内核编译安装

    1.安装依赖 yum -y install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel ...

  8. Git回滚代码

    回滚命令: 1.回退到上个版本 $ git reset --hard HEAD^ 2.回退到前2次提交之前,以此类推,回退到n次提交之前 $ git reset --hard HEAD~2 3.退到/ ...

  9. JVM的底层实现原理

    JVM是Java程序运行的环境,但是他同时也是一个操作系统的一个应用程序的一个进程,因此JVM也有他自己的运行生命周期,也有自己的代码和数据空间. JDK JDK在Java的整个体系中充当一个生产加工 ...

  10. 软件测试生命周期(STLC)的8个阶段的详细信息

    一.演化 ♦1960年代的趋势: ♦1990年代的趋势: ♦2000年代的趋势: 测试的趋势和能力正在发生变化.现在要求测试人员更加注重技术和流程.现在的测试不仅仅局限于发现错误,而且范围更广,从项目 ...