HDU1693 Eat the Trees(zerojudge a228)】的更多相关文章

传送门: https://zerojudge.tw/ShowProblem?problemid=a228 http://acm.hdu.edu.cn/showproblem.php?pid=1693 [题解] 插头dp第一题(难以置信我高中oi没有写过23333) 方程很简单,自己推一推插头的地方的连通性即可 放几张图跑了 # include <stdio.h> # include <string.h> # include <iostream> # include &l…
传送门 题意简述:给一个有障碍的网格图,问用若干个不相交的回路覆盖所有非障碍格子的方案数. 思路:轮廓线dpdpdp的模板题. 同样是讨论插头的情况,只不过没有前一道题复杂,不懂的看代码吧. 代码: #include<bits/stdc++.h> #include<tr1/unordered_map> #define ri register int using namespace std; using namespace tr1; typedef long long ll; int…
Description 题意:在n*m(1<=N, M<=11 )的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少种方法. Solution 插头DP入门题,\(dp[i][j][k]\)表示\(G_{i,j}\)且轮廓线状态为\(k\)时的方案数 转移有6种, Code #include <cstdio> #include <cstring> #include <algorithm> #define N 14 #def…
[HDU1693]Eat the Trees(插头dp) 题面 HDU Vjudge 大概就是网格图上有些点不能走,现在要找到若干条不相交的哈密顿回路使得所有格子都恰好被走过一遍. 题解 这题的弱化版本吧... 因为可以任意分配哈密顿回路的数量,因此根本不需要再考虑插头的配对问题了,那么直接分情况转移就好啦. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #in…
题意:在n*m的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少中方法. 第一道真正意义上的插头DP,可参考陈丹琦的<基于连通性状态压缩的动态规划问题>,虽然我看了一遍,但只是了解了个大概,主要还是看别人的代码,自己画图理解. 插头和轮廓线的定义就不说了,在PPT中很好理解. 先说一下转移的方式,如下图(p和q是当前枚举到的格子所面临的需要更新插头的地方): 通过在纸上画图,可以得出这么几个结论: 前一个状态的q和p都有插头的话,后一个状态的q和p都不能有插…
题意:给一个n*m的矩阵,为1时代表空格子,为0时代表障碍格子,问如果不经过障碍格子,可以画一至多个圆的话,有多少种方案?(n<12,m<12) 思路: 这题不需要用到最小表示法以及括号表示法. 以一个非障碍格子为单位进行DP转移,所以可以用滚动数组.只需要保存m+1个插头的状态,其中有一个是右插头,其他都是下插头,若有插头的存在,该位为1,否则为0,初始时都是0. 需要考虑的是,(1)如果两个边缘都是插头,那么必须接上它们:(2)如果仅有一边是插头,则延续插头,可以有两个延续的方向(下和右)…
题目链接:https://vjudge.net/problem/HDU-1693 Eat the Trees Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4505    Accepted Submission(s): 2290 Problem Description Most of us know that in the game c…
插头DP基础题的样子...输入N,M<=11,以及N*M的01矩阵,0(1)表示有(无)障碍物.输出哈密顿回路(可以多回路)方案数... 看了个ppt,画了下图...感觉还是挺有效的... 参考http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710343.html 以及推荐cd琦的论文ppthttp://wenku.baidu.com/view/4fe4ac659b6648d7c1c74633.html 向中学生学习~~ 感觉以后可能还会要…
Problem Description Most of us know that in the game called DotA(Defense of the Ancient), Pudge is a strong hero in the first period of the game. When the game goes to end however, Pudge is not a strong hero any more.So Pudge’s teammates give him a n…
想当初,我听见大佬们谈起插头DP时,觉得插头DP是个神仙的东西. 某大佬:"考场见到插头DP,直接弃疗." 现在,我终于懂了他们为什么这么说了. 因为-- 插头DP很毒瘤! 为什么? 等等你就知道这是为什么了. 例题 hdu 1693 Eat the Trees 题目大意:给你一个地图,每个格子是空地或者障碍.现在要用若干个回路来覆盖这些空地,使得每个空地皆被一个回路覆盖.问方案数. n,m<=11 How to solve it? 暴力?本人的暴力水平太弱了,对于这题,似乎连暴…
原文链接http://www.cnblogs.com/zhouzhendong/p/8433484.html 题目传送门 - HDU1693 题意概括 多回路经过所有格子的方案数. 做法 最基础的插头dp裸题. 只要一个横向插头和一排纵向插头就可以了. 分类也很少. 插头dp -> http://www.cnblogs.com/zinthos/p/3897854.html 代码 #include <cstring> #include <cstdio> #include <…
题目链接 hdu1693 题解 插头\(dp\) 特点:范围小,网格图,连通性 轮廓线:已决策点和未决策点的分界线 插头:存在于网格之间,表示着网格建的信息,此题中表示两个网格间是否连边 状态表示:当前点\((i,j)\)和轮廓线上\(m + 1\)个插头的状态 状态转移: 我们用\(f[i][j][s]\)表示如上的状态,最后一次决策点为\((i,j)\),轮廓线上插头状态为\(s\)的方案数 比如上图\(s = 1101001\) 之后我们扩展新的点,枚举它插头的状态进行转移 在本题中,要使…
原文链接 There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) point. He wonders how many trees he can see. If two trees and Sherlock are in one line, Farmer Sherlock can only see the tree nearest to…
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1134 [解题背景]这题不会做,自己推公式推了一段时间,将n=3和n=4的情况列出来了,只发现第n项与第n-1项有关系,上网搜索的时候发现是组合数学中关于Catalan(卡特兰)数的运用. 以下资料来自网络,整理以备记录学习: [来源链接] http://baike.baidu.com/view/2499752.htm http://blog.163.com/lz_666888/blog/stati…
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2841 题意:给n*m的矩阵(从(1,1)开始编号)格子,每个格子有一棵树,人站在(0,0)的位置,求可以看到多少棵树.同一直线上的树只能看到最靠近人的那颗. 思路:可以将题目转化为求gcd(x, y) = 1,(1 <= x <= n, 1 <= y <= m)的对数.直接套用莫比乌斯反演即可. code: #include <cstdio> #include <cs…
题意:有一块(1,1)到(m,n)的地,从(0,0)看能看到几块(如果两块地到看的地方三点一线,后面的地都看不到). 思路:一开始是想不到容斥...后来发现被遮住的地都有一个特点,若(a,b)有gcd(a,b)!= 1,那么就会被遮住.因为斜率k一样,后面的点会被遮住,如果有gcd,那么除一下就会变成gcd = 1的那个点的斜率了.所以问题转化为求gcd不为1有几个点,固定一个点,然后容斥. #include<set> #include<map> #include<queue…
传送门 先坑着,等啥时候会了再来填坑 不得不说思路真的是很妙啊 //minamoto #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) <…
Maple trees Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 222 Accepted Submission(s): 79   Problem Description There are a lot of trees in HDU. Kiki want to surround all the trees with the minim…
Problem Description There are a lot of trees in an area. A peasant wants to buy a rope to surround all these trees. So at first he must know the minimal required length of the rope. However, he does not know how to calculate it. Can you help him? The…
Surround the Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7164    Accepted Submission(s): 2738 Problem Description There are a lot of trees in an area. A peasant wants to buy a rope to…
这是悦乐书的第274次更新,第290篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第142题(顺位题号是617).提供两个二叉树,将其合并为新的二叉树,也可以在其中一个二叉树上进行覆盖.合并规则是如果两个节点重叠(都不为空),则将节点值加起来作为合并节点的新值. 否则,其中一个不为空的节点将用作新树的节点.例如: Tree 1 Tree 2 1 2 / \ / \ 3 2 1 3 / \ \ 5 4 7 合并后的新二叉树: 3 / \ 4 5 / \ \ 5 4 7…
题意 给定一棵 \(n\) 个节点的树,每个点有点权.完成 \(m\) 个操作,操作四两种,连接 \((x,y)\) :提 \(x\) 为根,并断 \(y\) 与它的父节点:增加路径 \((x,y)\) 的节点一个 \(w\) 的点权:求路径 \((x,y)\) 的最大点权. 思路 基本概念介绍 \(\text{Link-Cut-Tree}\) 是一棵支持修改的树,以 \(\text{Splay}\) 为基础,均摊复杂度 \(O(n\log n)\) 的在线数据结构,支持的基础操作如下: 连边…
 Count the Trees  Another common social inability is known as ACM (Abnormally Compulsive Meditation). This psychological disorder is somewhat common among programmers. It can be described as the temporary (although frequent) loss of the faculty of sp…
How Many Trees? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3317    Accepted Submission(s): 1922 Problem Description A binary search tree is a binary tree with root k such that any node v r…
题目链接: https://cn.vjudge.net/problem/UVA-10562 Professor Homer has been reported missing. We suspect that his recent research works might have had something to with this. But we really don't know much about what he was working on! The detectives tried…
Surround the Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10803    Accepted Submission(s): 4187 Problem Description There are a lot of trees in an area. A peasant wants to buy a rope t…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABB4AAAM9CAYAAAA7ObAlAAAgAElEQVR4nOyd25GsupKGywVswAV8wARswAU8wAM8IOZ9sAAHeJ4IPMCHnIcdPysrK3UDUUVV5xfRcc5eTUNKypsSSTzIMAzDMAzDMAzDMAzjIh6fFsAwDMMwDMMwDMMwjN/FCg+GYRiGYRiGYRiGYVyGFR4MwzAMwzAMwzAMw7gMKzwYhmEYhmEYh…
<题目链接> 题目大意: 给你一个H*W的矩阵,再告诉你有n个坐标有点,问你一个w*h的小矩阵最多能够包括多少个点. 解题分析:二维树状数组模板题. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; +; int tr[M][M]; int n,W,H,w,h; int lowbit(int x){return x&(-x);} void ad…
Description: 给出n*m的方格,有些格子不能铺线,其它格子必须铺,可以形成多个闭合回路.问有多少种铺法? Hint: \(n,m<=12\) Solution: 与原来单回路那题转移方程有些不同,详见代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int mxn=15,c[4]={0,-1,1,0}; struct data { int key; ll val; }; ll…
题意: 求最大矩阵面积,要求矩阵内数字满足\(max - min < m\) 思路: 枚举上下长度,在枚举的时候可以求出每一列的最大最小值\(cmax,cmin\),这样问题就变成了求一行数,要你得到\(max - min < m\)的最长长度.用单调队列\(O(n)\)求解.总复杂度\(O(n^3)\). 代码: #include<map> #include<set> #include<cmath> #include<cstdio> #incl…