Atcoder abc187 F Close Group 题目 给出一张n个点,m条边的无向图,问删除任意数量的边后,留下来的最少数量的团的个数(\(n \le 18\) ) 题解 核心:枚举状态+动态规划 第一次枚举状态,对状态进行预处理,判断状态里所有的1是否能够形成一个团 第二次枚举状态S,再对每个状态枚举子状态T,假如T是一个团,那么 就可以进行动态递推 \[dp[S]=min(dp[S],dp[S\wedge T]+1) \] 复杂度分析 状态S中1的个数有x个,那S的子集就有 \(2…
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC002F.html 题目传送门 - AGC002F 题意 给定 $n,k$ ,表示有 $n\times k$ 个球,其中,颜色为 $1,2,\cdots, n$ 的球各有 $k$ 个. 将这些球任意排列成一排,对于每一种颜色,将这种颜色的球的最左边的那个涂成颜色 $0$ . 问最终可以得到多少种不同的排列. $1\leq n,k\leq 2000,{\rm Mod} = 10^9 +7$ 题解 首先当 $…
题目链接 点我跳转 题目大意 给你一张完全图,你可以删除任意数量的边 要求删除完后剩余的所有子图必须是完全图 问完全子图数量最少是多少 解题思路 定义 \(ok[i]\) 表示状态为 \(i\) 时所对应的点构成的图是否为完全图 (\(1\) 为是 , \(0\) 为否) 判断完全图可直接暴力枚举任意两点检查是否有边 定义 \(dp[i]\) 表示状态为 \(i\) 时所对应的点构成的所有子图都为完全图,且子图数最小 其中 \(dp[0] = 0\) 那么不难得到当 \(ok[j] = 1\)…
http://s8pc-3.contest.atcoder.jp/tasks/s8pc_3_f (题目链接) 题意 有一个长度为$N$的数列$A$,初始为$0$.$Q$次操作,每次两个参数$x,y$. 在$A[1]...A[x]$中找出最小的数,如果有多个找编号最小的,假设为$u$. $A[u]++$. 重复这个过程$y$次. 输出最后的$A$序列. Solution 可以发现,数列$A$肯定是单调不降的,那就非常好做了. 用一个线段树维护数列,区间赋值,支持区间求和.在询问区间中二分找到一个位…
霍尔定理 + 线段树? 咱学学霍尔定理... 霍尔定理和二分图完美匹配有关,具体而言,就是定义了二分图存在完美匹配的充要条件: 不妨设当前二分图左端集合为 X ,右端集合为 Y ,X 与 Y 之间的边集为 E 令 \(\omega(x)\) 表示在 Y 中能通过 E 与 x 中元素相连的元素数量,那么 $\forall x\in X, |x| \le |\omega(x)| $ 为 X 与 Y 存在完美匹配的充要条件... 然后咱发现,多加上 t 个人的话,也就是必然会让 \(|\omega(x…
Atcoder ARC060 F 题意:给一个串,求将其分成最少的没有循环节的串的种数. 思路:先求KMP的\(fail\)数组.然后发现最少的串数只有三种可能:\(1\).\(2\).\(n\). 然后就可以用KMP找原串的循环节,如果原串没有循环节,那么不用分.如果原串的循环节为\(1\),则要分成一个一个的,如果循环节为\(2\),则要看每个前缀和后缀是否有循环节,如果对于一个前缀即与之相邻的后缀都是无循环节的,那么答案数要\(+1\).…
题面 Bzoj 洛谷 题解(0/1分数规划+spfa) 考虑\(0/1\)分数规划,设当前枚举到的答案为\(ans\) 则我们要使(其中\(\forall b_i=1\)) \[ \frac{\sum_{i=1}^ta[e_i]}{\sum_{i=1}^tb[v_i]}< ans \\ \therefore\sum a[e_i]-ans*b[v_i]=\sum a[e_i]-ans<0 \] 则问题就变成了判断图内是否存在一个负环... 时间复杂度:\(O(nmlog)\) #include…
现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它分成 K+1 个部分,找出一种分法,使得这 K+1 个部分的乘积能够为最大.* 例如,有一个数字串: 312,当 N=3, K=1 时会有以下两种分法:1 3×12=362 31×2=62* 符合题目要求的结果是: 31×2=62* 现在,请你帮助你的好朋友 XZ 设计一个程序,求得正确的答案.*…
链接:https://ac.nowcoder.com/acm/contest/912/F 题意: 动态规划(Dynamic programming,简称dp)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法.例如,假设小x一步能爬1层或2层台阶,求小x爬n层台阶共有几种方法,就可以用dp计算:设FiFi代表小x爬i层台阶共有几种方法,则Fi=Fi−1+Fi−2Fi=Fi−1+Fi−2. 小x是练习时长两年半的acm练习生,喜欢口胡.dp.线段树.妙就妙在,不管是什么题目,无论多难…
本文转自:http://msdn.microsoft.com/zh-cn/library/hh225374.aspx 查询表达式可以查询数据源并将数据是一种预期形式.             查询表达式提供 F# 中支持 LINQ.   复制 query { expression } 备注              查询表达式是计算表达式的类型类似于序列表达式.               就象通过提供代码指定顺序在序列表达式中,可以在查询表达式指定设置数据通过提供代码.  在序列表达式,yie…