UOJ 171 【WC2016】挑战NPC】的更多相关文章

[WC2016]挑战NPC(一般图最大匹配) Luogu 题解时间 思路十分有趣. 考虑一个筐只有不多于一个球才有1的贡献代表什么. 很明显等效于有至少两个位置没有被匹配时有1的贡献. 进而可以构造如下模型: 每个筐拆成三个点,三个点之间相互连边. 对于球可以匹配某个筐,将球向筐的三个点都连边. 这样一来,如果有一个筐只有不多于一个点被匹配,那么剩下的两个点可以自己匹配增加答案. 如此最终结果是 $ ans-n $ . 需要用到一般图最大匹配也即带花树. 由于答案要求输出匹配方案,所以要注意先匹…
uoj luogu bzoj sol 你可以列一个表格. 一个框子里放球的数量 0 1 2 3 对"半空框子"数量的贡献 1 1 0 0 把一个框子拆三个点.两两之间连边. 会发现,如果这三个点里一个都没有被球匹配掉,那么这三个点的最大匹配数是\(1\):如果任意一个点被一个球匹配掉了,那么剩下两个点一定可以匹配,所以最大匹配数还是\(1\):有两个点或者是三个点被匹配后最大匹配就是\(0\). 所以,按如上方式建图,每个球向它可以放进的框子对应的的三个点都连边.跑出最大匹配后输出\(…
带花树模板 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int read() { int x;char c; '); +c-'; return x; } #define MN 600 #define ME 100000 #define ms(a) memset(a,0,sizeof(a)) +]; ],en,mat[MN+],nx[MN+],mk[M…
来自FallDream的博客,未经允许,请勿转载,谢谢. 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有n个球,用整数1到n编号.还有m个筐子,用整数1到m编号. 每个筐子最多能装3个球. 每个球只能放进特定的筐子中.具体有e个条件,第i个条件用两个整数vi和ui描述,表示编号为vi的球可以放进编号为ui的筐子中. 每个球都必须放进一个筐子中.如果一个筐子内有不超过1个球,那么我们称这样的筐子为半空的. 求半空的筐子最多有多少个,以及在最优方案中,每个球分别…
https://www.lydsy.com/JudgeOnline/problem.php?id=4405 这道题大概就是考场上想不出来,想出来也调不出来的题. 把每个桶拆成三个互相有边的点,每个球向它连接的桶的三个点分别连边. 0球1桶,匹配数为1:1球1桶,匹配数为2:2球一桶,匹配数为2:3球一桶,匹配数为3: 发现每种半桶的情况下匹配数都比该桶中放的球数大1,那么ans=最大匹配数-球数. 带花树找lca的时候,记得是用每个点的总父亲找.带花树的细节真是恶心人. #include<ios…
Sol 这做法我是想不到\(TAT\) 每个筐子拆成三个相互连边 球向三个筐子连边 然后跑一般图最大匹配 这三个筐子间最多有一个匹配 那么显然每个球一定会放在一个筐子里,一定有一个匹配 如果筐子间有匹配,则有一个半空的筐子,因为它一定只匹配了小于等于\(1\)个球 答案为匹配数\(-n\) 使答案最大即匹配数最大 上带花树就好了 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a,…
把每个筐子拆成3个,分别表示放0/1/2个,然后把这三个点两两连起来,每一个可以放在筐里的球都想这三个点连边. 这样可以发现,放0个球的时候,匹配数为1,放1个球的时候,匹配数为1,放2个球的时候,匹配数为2,放3个球的时候,匹配数为3. 所以直接把带花树的匹配数-n即可 #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; con…
「WC2016」挑战NPC 解题思路 这个题建图非常厉害,带花树什么的只会口胡根本写不动,所以我写了机房某大佬教我的乱搞. 考虑把一个筐 \(x\) 拆成 \(x1,x2,x3\) 三个点,且这三个点相互连边,每对球和筐的连边都让球和筐拆出的三个点连边,这样如果筐内部的点存在一个匹配,那么这个筐就是半空的,所以我们需要先将球匹配完,然后不断尝试增广来自筐的点,每一次成功增广都使得答案 \(+1\) ,一般图最大匹配跑跑就好了. 下面的代码随时可能在 \(\text{uoj}\) 上变成 \(\t…
[BZOJ4405][WC2016]挑战NPC(带花树) 题面 BZOJ 洛谷 Uoj Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有n个球,用整数1到n编号.还有m个筐子,用整数1到m编号. 每个筐子最多能装3个球. 每个球只能放进特定的筐子中.具体有e个条件,第i个条件用两个整数vi和ui描述,表示编号为vi的球可以放进编号为ui的筐子中. 每个球都必须放进一个筐子中.如果一个筐子内有不超过1个球,那么我们称这样的筐子为半空的.…
一开始还真没想到是一般图匹配这种模型(毕竟才会的带花树) 把每一个盒子拆成3个,每一个可以放置进它的小球分别向这三个点连边,然后这三个点在连成一个三元环,最终答案就是小球数目-匹配数. 由于是一般图,所以套一个带花树就可以了. NOTICE:寻找增广路时,应该从球先找起,这样子才保证了每个球有地方放置. #include<iostream> #include<cstdio> #include<algorithm> #include<vector> #incl…
小 N 最近在研究 NP 完全问题,小 O 看小 N 研究得热火朝天,便给他出了一道这样的题目: 有 \(n\) 个球,用整数 \(1\) 到 \(n\) 编号.还有 \(m\) 个筐子,用整数 \(1\) 到 \(m\) 编号. 每个筐子最多能装 3 个球. 每个球只能放进特定的筐子中.具体有 \(e\) 个条件,第 \(i\) 个条件用两个整数 \(vi\) 和 \(ui\) 描述,表示编号为 \(vi\) 的球可以放进编号为 \(ui\) 的筐子中. 每个球都必须放进一个筐子中.如果一个筐…
http://uoj.ac/problem/171 带花树开花时的u和v一定要记清楚顺序,想好了再写,数据范围也要算好! 对每个筐子拆成3个点,连成一个三元环,对每个(u,v),让u和v的3个点都连边,这样跑一般图最大匹配(先增广每个球),可以发现所有的球都能放到一个筐子里,而且半空的筐子代表的三元环一定有一条边有匹配. 匹配总数=n+半空的筐子数,最大化匹配总数也相当于最大化半空的筐子数. 还可以发现三元环没必要连三条边,任选两个点连一条边也是一样的. 时间复杂度\(O(n^3)\). abc…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有n个球,用整数1到n编号.还有m个筐子,用整数1到m编号. 每个筐子最多能装3个球. 每个球只能放进特定的筐子中.具体有e个条件,第i个条件用两个整…
\(\mathcal{Description}\)   Link.   对于简单无向图 \(G=(V,E)\),定义它是"优美"的,当且仅当 \[\forall\{a,b,c,d\}\sube V,((a,b),(b,c),(c,d)\in E)\Rightarrow(a,c)\in E\lor(b,d)\in E\lor(a,d)\in E \]   给定一个"优美"的简单无向图 \(G\),对于所有 \(i\in[1,n]\),求有多少个 \(S\sube V\…
正题 题目链接:https://www.luogu.com.cn/problem/P4258 题目大意 给出\(n\)个球,\(m\)个篮筐,每个球都可以被放入一些特定的篮筐,每个球都要放,要求球的个数小于等于\(1\)的篮筐数量最多. 保证有解,输出方案. \(1\leq T\leq 5,1\leq n\leq 3m,1\leq m\leq 100\) 解题思路 额其实做题之前已经知道正解是带花树就简单很多了. 每个篮筐我们开一个三个点的环,那么如果环上大于一个点呗匹配掉了那么这个环内就无法匹…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
字符串: 1.广义后缀自动机(大小为\(m\))上跑一个长度为\(n\)的串,所有匹配位置及在\(parent\)树上其祖先的数量的和为\(min(n^2,m)\),单次最劣是\(O(m)\). 但是如果跑多个串,总长为\(n\),可以证明所有串长相等的时候复杂度更劣,设有\(k\)个串,那么复杂度为:\(O(k(n/k)^2)\),这个时候\(k=\frac{n}{\sqrt{m}}\)最劣,是\(O(n\sqrt{m})\) 2.反串\(parent\)树就是压缩节点后缀树. 3.后缀树可以…
挑战NPC 原题链接 爆搜20分,贪心10分,网络流30分 //挑战NPC #include <cstdio> #include <cstring> #include <algorithm> using namespace std; inline char gc() { static char now[1<<16],*S,*T; if(S==T) {T=(S=now)+fread(now,1,1<<16,stdin); if(S==T) retu…
去了人生中第一次全国WC,在四川绵阳南山中学举行,去了这么一次,感受颇多,不忍心白白地让时间流逝,于是写篇随笔记录一下. 全程,共计8天. [第1天] 签到,拿餐票,看了看讲义,觉得要狗带. 开营仪式,表演技艺高超[这也和后面的“选手文艺交流活动”形成了对比] 第一次吃了南山中学的晚餐,美味啊! 晚上,回宿舍,很积极地拿出我的笔记本,调试一道树链剖分裸题,但是不停WA……于是交了个hzwer代码就睡了. 收获:获得了人生中OI界第一块牌(选手证),还是翡翠色的! [第2天] 这次冬令营开了两个课…
opencv-python读取.展示和存储图像 1.imshow函数 imshow函数作用是在窗口中显示图像,窗口自动适合于图像大小,我们也可以通过imutils模块调整显示图像的窗口的大小.函数官方定义如下: cv2.imshow(windows_name, image) 函数参数一: 窗口名称(字符串) 函数参数二: 图像对象,类型是numpy中的ndarray类型,注:这里可以通过imutils模块改变图像显示大小,下面示例展示 上示例: cv2.imshow('origin image'…
#南昌理工学院人工智能学院实验室WORKSHOP实践项目 import time import random SCRIPT_NPC_SCHOOL_SISTER = ['你好!', '你好!', '你是新生嘛?', '是的', '想要我教你魔法吗?', '\n1.好的 \ \n2.不用了吧,我不和学姐学魔法!\n' ] MAGIC_BOOKS = [ ['风巽千叶翔龙', 1], ['泽兑鬼尘珠', 2], ['凤翔九天', 3] ] class Body: # 人物类 LEVEL=1 #等级 E…
第二次在bzoj跑进前十竟然是因为在UOJ卡常致死 首先这个题其实就是一个无限背包 一般做法是同余最短路,就是bzoj2118: 墨墨的等式可以拿到30分的好成绩 背包是个卷积就分治FFT优化那么下面20也没问题了 官方做法是大力bitset优化背包并且嘲讽了一波这个做法 再往后需要一个性质参见鏼爷的PPT 不想翻就直接看结论吧 对于一个串的所有border,它们组成不超过logn个等差数列 也就是说,对于所有增加长度的方式(其实就是period),可以分成logn组,每组是一个等差数列 考虑怎…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ172.html 题解 首先,这个问题显然是个背包问题. 然后,可以证明:一个字符串的 border 长度可以划分成 $O(log |S|)$ 个等差数列. (以下图片摘自  金策 - <字符串算法选讲>) 由于长度 n 可以随便取,所以我们可以在对n取模的意义下做背包,设 dis[i] 为 占用背包容量%n = i 时至少要占用多少背包容量,那么直接建 $n^2$ 条边跑一下 dijkstra 就可以…
传送门 首先这个题目显然就是先求出所有的 \(border\),问题转化成一个可行性背包的问题 一个方法就是同余类最短路,裸跑 \(30\) 分,加优化 \(50\) 分 首先有个性质 \(border\) 分成的等差数列的个数不超过 \(log\) 和回文树的性质的证明类似瞎画图一下就行了 我们注意到可以一个一个等差数列的更新最短路 要做到这个,必须能从之前的等差数列的模数 \(n\) 转移到当前等差数列的 \(x\) 假设模 \(n\) 的最短路为 \(f\),模 \(x\) 的为 \(g\…
[UOJ#131][BZOJ4199][NOI2015]品酒大会 试题描述 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 n杯鸡尾酒.这 n杯鸡尾酒排成一行,其中第 i杯酒 (1≤i≤n ) 被贴上了一个标签 si ,每个标签都是 26 个小写英文字母之一.设 Str(l,r)表示第 l杯酒到第 r 杯酒的 r−l+1 个标签顺次连接构成的字…
[UOJ#131][BZOJ4199][NOI2015]品酒大会 试题描述 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 n杯鸡尾酒.这 n杯鸡尾酒排成一行,其中第 i杯酒 (1≤i≤n ) 被贴上了一个标签 si ,每个标签都是 26 个小写英文字母之一.设 Str(l,r)表示第 l杯酒到第 r 杯酒的 r−l+1 个标签顺次连接构成的字…
UOJ小清新题表 题目内容 UOJ链接 题面太长了(其实是我懒得改LaTeX了) 一句话题意: 给出 \(n\) 个点和 \(m\) 条边,对其进行染色,共 \(k\) 种颜色,要求同一条边两点颜色不同,输出方案数\(\pmod 6\) 数据范围 \(1\leq n\leq 10^5,0\leq m\leq 2\times 10^5,1\leq k\leq 10^4\) 思路 水题解,他不香吗 由于本人并不会UOJ中的其他题,所以来水最简单的一道了 直接计算的话,答案为: \[\sum\limi…
前期准备: x64 ubuntu 镜像.vmware.ss账号 注意一定要有64位镜像! ss不是必须的,不过没有的话就等着下载一晚上吧... 首先先装好ubuntu,我装的是ubuntu-16.04-desktop-amd64.iso. 然后先换个软件源 装docker 然后主机打开ss,注意勾选允许局域网连接. 然后看一下主机ip 把uoj的包下下来(https://github.com/vfleaking/uoj) 设置docker的代理:https://docs.docker.com/e…
http://uoj.ac/problem/35 以前做后缀数组的题直接粘模板...现在重新写一下模板 注意用来基数排序的数组一定要开到N. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 100003; int t1[N], t2[N], c[N]; void st(int *x, int *y, int *sa, int n, int…