3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 405  Solved: 284[Submit][Status][Discuss] Description 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完.   Input 第一行为正整数T,代…
copy: Dilworth定理:DAG的最小链覆盖=最大点独立集 最小链覆盖指选出最少的链(可以重复)使得每个点都在至少一条链中 最大点独立集指最大的集合使集合中任意两点不可达 此题中独立的定义即是两点满足一个在左下一个在右上(或在同一格).于是只需要找一条从左下到右上权值和最大的路径. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cst…
http://www.lydsy.com/JudgeOnline/problem.php?id=3997 偏序集,看上一篇随笔. 我们要求最少路径覆盖,可以等价于求最大独立集. 我们要找到一个权值和最大的点集$S$,使得对于点集中任意两个点$点i$和$点j$,使得$点i$不能到$点j$,就是要求$点i$严格在$点j$的右上方或左下方.用DP可以在$O(N^2)$内解决. #include<cstdio> #include<cstdlib> #include<iostream&…
题目名字是什么就不能往那方面想. 每个点拆成a[i][j]个,问题变为DAG最小路径覆盖,由Dilworth定理转成最长反链. 使用Dilworth定理的时候要注意那些点之间有边,这里任意一个点和其右下方的所有点都有边. 从右上往左下DP统计答案即可. #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ; int T…
组合数学 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完.   Input 第一行为正整数T,代表数据组数. 每组数据第一行为正整数N,M代表网格图有N行M列,接下来N行每行M个非负整数,表示此格子中财宝数量,0代表没有 Output 输出一个整数,表示至少要走多少次.   Sample Input 1 3 3 0 1 5 5 0…
http://www.lydsy.com/JudgeOnline/problem.php?id=3997 最小链覆盖=最长反链长度 所以题目等价于寻找一条从右上角到左下角的最长路 #include<cstdio> #include<cstring> #include<iostream> using namespace std; #define N 1002 int a[N][N]; long long dp[N][N]; void read(int &x) {…
Description 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完. Input 第一行为正整数T,代表数据组数. 每组数据第一行为正整数N,M代表网格图有N行M列,接下来N行每行M个非负整数,表示此格子中财宝数量,0代表没有 Output 输出一个整数,表示至少要走多少次. Sample Input 1 3 3 0 1 5…
题目 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完. 输入格式 第一行为正整数T,代表数据组数. 每组数据第一行为正整数N,M代表网格图有N行M列,接下来N行每行M个非负整数,表示此格子中财宝数量,0代表没有 输出格式 输出一个整数,表示至少要走多少次. 输入样例 1 3 3 0 1 5 5 0 0 1 0 0 输出样例 10…
[BZOJ3997][TJOI2015]组合数学(动态规划) 题面 BZOJ 洛谷 题解 相当妙的一道题目.不看题解我只会暴力网络流 先考虑要求的是一个什么东西,我们把每个点按照\(a[i][j]\)拆成若干个点,每个具有二维偏序关系的点之间连一条边,于是我们就有了一个\(DAG\),要求的就是\(DAG\)的最小链覆盖. 然后又有最小链覆盖等于最大独立集,所以本质上就是求一个最大的集合满足任意两点之间不存在二维偏序. 于是问题变成了从左下角到右上角找到一条路径使得路径权值最大. 这个东西可以简…
[BZOJ3997][TJOI2015]组合数学 Description 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完. Input 第一行为正整数T,代表数据组数. 每组数据第一行为正整数N,M代表网格图有N行M列,接下来N行每行M个非负整数,表示此格子中财宝数量,0代表没有 Output 输出一个整数,表示至少要走多少次.…
3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 247  Solved: 174[Submit][Status][Discuss] Description 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完.   Input 第一行为正整数T,代…
3997: [TJOI2015]组合数学 题意:\(n*m:\ n \le 1000\)网格图,每个格子有权值.每次从左上角出发,只能向下或右走.经过一个格子权值-1.至少从左上角出发几次所有权值为0. 容易发现偏序关系 \[ x_1 \le x_2, y_1 \le y_2 \] 最少链数=最长反链大小 但是本题每个元素有权值 容易发现,最少链数=最大权值反链的权值 然后我沙茶的写了一个\(O(n^4)\)的DP就T掉了 怒写二维树状数组,A了 其他人怎么辣么快啊,然后发现直接 f[i][j]…
3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 919  Solved: 664 Description 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完. Input 第一行为正整数T,代表数据组数. 每组数据第一行为正整数N,M代表网格图有…
题目描述 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完. 输入 第一行为正整数T,代表数据组数. 每组数据第一行为正整数N,M代表网格图有N行M列,接下来N行每行M个非负整数,表示此格子中财宝数量,0代表没有 输出 输出一个整数,表示至少要走多少次. 样例输入 1 3 3 0 1 5 5 0 0 1 0 0 样例输出 10 题解…
在如下8*6的矩阵中,请计算从A移动到B一共有__种走法.要求每次只能向上或向右移动一格,并且不能经过P. A:456 B:492 C:568 D:626 E:680 F:702 解析: 8*6的矩阵,从左下角A到右上角B,一共需要走12步,其中5步向上,7步向右,因此总的走法一共有C(12,5)=792种,但题目规定不能经过P,因此需要减去经过P点的走法. 经过P的路径分为两部分,从A到P,从P到B. 同理,从A到P的走法:C(6,2)=15: 同理,从P到B的走法:C(6,3)=20: 因此…
题目描述 为了提高智商,ZJY开始学习组合数学.某一天她解决了这样一个问题:给一个网格图,其中某些格子有财宝.每次从左上角出发,只能往右或下走.问至少要走几次才可能把财宝全捡完. 但是她还不知足,想到了这个问题的一个变形:假设每个格子中有好多块财宝,而每一次经过一个格子至多只能捡走一块财宝,其他条件不变,至少要走几次才可能把财宝全捡完? 这次她不会做了,你能帮帮她吗? 输入输出格式 输入格式: 第一行为一个正整数t,表示数据组数 每组数据的第一行是两个正整数n和m,表示这个网格图有n行m列. 接…
题目传送门 神奇的门I 神奇的门II 题目大意 有$n$组学生要上课2次课,有$m$个教室,编号为$1$到$m$.要确定有多少种不同的安排上课的教室的方案(每组学生都是本质不同的),使得它们满足: 每组学生第一次上课的教室的编号小于等于第二次上课的教室的编号. 第$i$间教室在第一次上课时,恰好有$x_{i}$组学生在场. 第$i$间教室在某次上课时,中间包含的学生组数不能超过$y_{i}$. 输出答案模$10^{9} + 7$. 因为第一次上课恰好有多少人,所以这个方案数是可以直接用组合数,暂…
题目分析 : (8 4) 可以由(7 4),(6,4),( 4,4) 基础上转化 意味着一个新加入的元素可以按照它加入的方式分类,从而实现动态规划 核心:加入方式 新加入的元素构成转换环的元素个数(n的约数) eg: (8,4) 新加入元素自己单独一个环 (7,4) (6,4)新加入元素自己构成二元环 (6,4) (4,4)新加入元素自己构成四元环 (4,4) #include <bits/stdc++.h> using namespace std; typedef long long LL;…
题目描述 为了提高智商,ZJY开始学习组合数学.某一天她解决了这样一个问题:给一个网格图,其中某些格子有财宝.每次从左上角出发,只能往右或下走.问至少要走几次才可能把财宝全捡完. 但是她还不知足,想到了这个问题的一个变形:假设每个格子中有好多块财宝,而每一次经过一个格子至多只能捡走一块财宝,其他条件不变,至少要走几次才可能把财宝全捡完? 这次她不会做了,你能帮帮她吗? 输入输出格式 输入格式: 第一行为一个正整数t,表示数据组数 每组数据的第一行是两个正整数n和m,表示这个网格图有n行m列. 接…
题意 \(N \times M\)的网格,一开始在\((1, 1)\)每次可以向下和向右走,每经过一个有数字的点最多能将数字减1,最终走到\((N, M)\).问至少要走多少次才能将数字全部变为\(0\).(\(N, M<=1000, a_{i, j}<=10^6\)) 分析 结论题QAQ,不会证明... 题解 设\(d(i, j)\) \(d(i, j) = max( d(i-1, j), d(i, j+1), d(i-1, j+1) ) + a[i, j]\) 答案是\(d(n, 1)\)…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3997 [题意] 给定一个nm的长方形,每次只能使经过格子权值减1,每次只能向右向下,问最少需要走多少次才能使所有格子权值为0. [思路] 因为每次只能向右或向下走,所以对于(i,j)和(i’,j’)当且仅当两点任一个不在另一个的左下方时两点才不在同一条路径上. 将长方形反转左右. 设f[i][j]为使以ij右下角的长方形权值为0的走的最少次数,则有转移式: f[i][j]=max{…
分析一下样例就可以知道,求的实际上是从左下角到右上角的最长路 因为对于任意不在这个最长路的上的点,都可以通过经过最长路上的点的路径将这个点的价值减光 (可以用反证法证明) 之后就是一个非常NOIP的DP了 #include<cstdio> #include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> using namespace std; const int…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3997 [题目大意] 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走. 问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝, 而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完. [题解] 最小链覆盖=最长反链,反链的意思就是该集合中的点相互之间不互达, 在该题中,最长反链可以用dp得出. [代码] #include <c…
题目链接 Solution 很巧妙的 DP. 可以看这里的题解. 比我自己讲要好的多. Code #include <bits/stdc++.h> using namespace std; int n,p,f[2][5000]; int main() { cin>>n>>p; bool t=0; f[t][1]=1; for (int i=2;i<=n;++i) { t=!t; for (int j=1;j<=i;++j) f[t][j]=(f[t][j-1…
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27update : 开学了终于搞到了550  可还行 *数据结构 *可持久化线段树/主席树 *bzoj3932 [CQOI2015] 任务查询系统 : 比较裸的主席树,任务查分一下就好了  cqoi真良心 *bzoj4026 dC Loves Number Theory :  数论个头啊,对每个数分解质因数…
博客园的编辑器真的是太蛋疼了= =,想用tex然后上jpg又贴不了链接,真的很纠结啊= = T1:[TJOI2015]线性代数 描述:戳上面吧= = 首先这道题我觉得是这套题最漂亮的一道题了(虽然说学校的题库里居然有一道和这个一模一样的= =) 首先我们可以先把那个式子转化为其中b[i]是表示矩阵a中第i行为0或为1,然后就有两种方法转化为网络流啦 方法一:可以用最大权闭合子图的方法来考虑,将c[i]以及a[i][j]的选择与否视为事件的话,可以发现是一个点数为n*n的最大权闭合子图,就可以愉快…
今天下午要参加海淀区的比赛了...这几天临时抱佛脚刷了几道DP,正所谓临阵磨枪,不快也光...下面我 就把最近刷到的,自己觉得不错的动态规划题列出来: 1.P2690 接苹果 :(基础二维DP) 2.P1474 货币系统 Money Systems:(线性动规,DP方程也比较好想) 3.UVA12563 劲歌金曲 Jin Ge Jin Qu hao :(01背包的变式,很基础,也很经典,紫书上的题) 4.P3974 [TJOI2015]组合数学 :(之前我还写过这题的题解,天津省选的题,DAG上…
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…
写在前面的.. 要去WC了好开心的呢.. 但是之前荒废了好多时间呢.. 好吧从明天开始加紧训练,目标是:WC前bzoj300t..(现在是260呢..) 开始吧 来看看完成情况: 40/40 [2017.1.12] 比较荒废的一天.. 满脑子就是查成绩.. 考得好差没心情.. 真的是太影响了整天才做了2道题..(有道题想错了搞了一个下午加半个晚上还没搞出来,真的sb) 3195: [Jxoi2012]奇怪的道路 定义$f_{i,j,state}$表示在处理第$i$个位置,已经连了$j$条边,后面…
偏序集上的最小链覆盖等于最长反链 于是两道题 1143: [CTSC2008]祭祀river 求偏序集上的最长反链 转换成偏序集上的最小链覆盖 求个闭包,转换成最小路径覆盖,二分图匹配一发 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> const int MAXN = 210; const int MAX…