首页 > TAG信息列表 > NOI2001
NC16886 [NOI2001]炮兵阵地
题目链接 题目 题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范P2704 [NOI2001] 炮兵阵地 -状态压缩dp -省选
#include <bits/stdc++.h> #define debug(x) std::cerr << "Line: " << __LINE__ << \ "," << #x << "=" << x << "\n" using ll = long long; constexpr in洛谷P5694 [NOI2001] 陨石的秘密
看完题面的第一反应是暴力 直接四维dp [i,j,k,l]表示深度为i,大中小括号分别为j,k,l时的方案 但发现s=ab这种情况不好处理,还要再枚举一个比d小的深度d' 时间复杂度变成了 D²*L的六次方 想开一个辅助数组g [i,j,k,l]表示深度小于i时的方案数,就可以直接拿出来用了 时间复杂度的问P2024 [NOI2001] 食物链
题面 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 第一种说法是 1 X Y,表示 X 和 Y【Luogu P2704】[NOI2001] 炮兵阵地
炮兵阵地: 链接: 洛谷 题目大意: 在一个棋盘上,一个棋子上下左右相邻两格内不能有别的棋,且棋子不能放在一些格子内。求最多的棋子数。 正文: 设 \(f_{i,j,k}\) 表示第 \(i\) 行的状态是 \(j\) 和前一行的状态是 \(k\) 的方案数。显然有: \[f_{i,j,k}=\max_l\{f_{i-1,k,l}+\mathrm{num}(j题解 P2704 [NOI2001] 炮兵阵地
题目描述 Link 给定一张 \(n\times m\) 的网格,求这张网格上最多能放多少个炮兵。 网格上有一些地方不能放炮;炮兵的攻击范围是前、后、左、右各 \(2\) 格。 \(1 \leq n \leq 100 ,1 \leq m \leq 10\) 。 Solution 发现 \(m\) 很小,且第 \(i\) 行的状态之和 \(i-1,i-2\) 行有关,考虑状《洛谷P2704 [NOI2001]炮兵阵地》
非常细细细的一题。 首先,这数据量显然是状压。 dp[i][j][k] 表示 到第i行,第i行状态为j,第i - 1行状态未k的最大方案数。 我们从上向下考虑的话,每个放置的棋子会被上面两行棋子的放置状态所影响。 所以我们每次转移的时候需要枚举上面的两行。 这样的话复杂度就是 n * m * m * m。Luogu P2704 [NOI2001]炮兵阵地
题目描述 司令部的将军们打算在\(N\times M\)的网格地图上部署他们的炮兵部队。一个\(N\times M\)的地图由\(N\)行\(M\)列组成,地图的每一格可能是山地(用“\(H\)” 表示),也可能是平原(用“\(P\)”表示),如下图。 在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一P2024 [NOI2001]食物链(洛谷)
题目传送门 核心解法(并查集): 关键要理清楚这些关系是怎样的:即通过了解题意可知:假设现在有如下三种动物类型:老虎,老虎的食物,老虎的天敌。所输入的x y都只满足这三种类型(输入m次去判断关系),x y是两个独立的未知种类的动物(即不知道是老虎本体、食物还是天敌)。现在需要通P2024 NOI2001 种类冰茶鸡
展开 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道 它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 第一种说法是“1Luogu P2704 [NOI2001]炮兵阵地
gate 还是状压dp... 因为int开成bool了de了好久,最后还是wjh帮忙看出来的qaq f[i][k][j]代表第i行,状态为j,上一行状态为k,上上行的状态为kk 四重循环,保证j,k、j,kk、k,kk不冲突的前提下,有: f[i][k][j] = max(f[i][kk][k] + sum[j]) 因为状态太多了存不下,所以只要把可行的状态记录Luogu P2024 [NOI2001]食物链
并查集 首先先要读懂题目,a是b的食物的话,b的天敌是a,b的食物是a的天敌 比如,人吃鸡,鸡吃草,那么草吃人。。。。。 所以建3个并查集,+n时表示这是其食物,+2*n时表示这是其天敌 所以当x,y是同类当且仅当x的食物不是y,且x的天敌不是y 当x吃y当且仅当x和y不是同类,y的食物不是x 然后并查集维护即状压dp:luogu P2704 [NOI2001]炮兵阵地
https://www.luogu.org/problemnew/show/P2704 知识点:1.滚动数组:取模实现 2.位运算优先级最低 顾是if(!(a&b))而不是if(!a&b) code: #include <bits/stdc++.h>#define N 101#define M 10using namespace std;int n,m;int tot = 0【NOI2001】【Luogu 2704】【POJ1185】炮兵阵地
状压DP。因为m<=10,所以把每一行部署炮兵部队的状态作为“状态”,二进制的每一位1表示部署,0表示没有。同时把山地表示为1,平原表示为0,第i行的地形为dx[i]。 因为从上到下考虑,考虑第i行时要考虑第i-1,i-2行,而考虑i-1行时又要考虑第i-2,i-3行……所以令f[i][j][k]表示前i行,第i行状态为j,第iP2024 [NOI2001]食物链
题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道 它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示洛谷P2704 [NOI2001]炮兵阵地
https://www.luogu.org/problemnew/show/P2704 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一