当前位置:网站首页>P2704 [noi2001] artillery position (shape pressure DP)
P2704 [noi2001] artillery position (shape pressure DP)
2022-07-03 07:58:00 【eva_ can(not)survive】
[NOI2001] Artillery position - Luogu https://www.luogu.com.cn/problem/P2704 Today is the pressure of learning dp A day of !
The data range of this question is obvious, which can be used to press dp To write , You should think of it when you get started dp There are two dimensions in the array i Xing He i The state of the line , But the influence of artillery has two lines , So we need to record the status of the previous line .
You can calculate the number of feasible schemes in each line before enumerating , It can save time , Some questions may get stuck .
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
#include <set>
#include <cmath>
#include <map>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int MN = 65005;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
#define IOS ios::sync_with_stdio(false)
#define lowbit(x) ((x)&(-x))
using P = pair<int, int>;
int n, m;
int a[MAXN];
int dp[(1 << 10)][(1 << 10)][105];
int cnt;
int rec[MAXN];
int sum[MAXN];
int getsum(int x) {
int tot = 0;
while (x)
tot++, x -= lowbit(x);
return tot;
}
int main() {
char ch;
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
scanf(" %c", &ch);
a[i] <<= 1;
a[i] += ((ch == 'H') ? 1 : 0);
}
}
rec[++cnt] = 0;
for (int i = 1; i < (1 << m); i++) {
if (i & (i << 1))
continue;
if (i & (i << 2))
continue;
rec[++cnt] = i;
}
for (int i = 1; i <= cnt; i++) {
sum[i] = getsum(rec[i]);
}
for (int i = 1; i <= cnt; i++) {
if (rec[i]&a[1])
continue;
dp[0][rec[i]][1] = sum[i];
}
for (int i = 1; i <= cnt; i++) {
if (rec[i]&a[2])
continue;
for (int j = 1; j <= cnt; j++) {
if (rec[i]&rec[j] || rec[j]&a[1])
continue;
dp[rec[j]][rec[i]][2] = sum[i] + sum[j];
}
}
for (int i = 3; i <= n; i++) {
for (int j = 1; j <= cnt; j++) {
if (rec[j]&a[i])
continue;
for (int k = 1; k <= cnt; k++) {
if (rec[k]&rec[j] || rec[k]&a[i - 1])
continue;
for (int p = 1; p <= cnt; p++) {
if (rec[p]&rec[k]||rec[p]&rec[j] || rec[p]&a[i - 2])
continue;
dp[rec[k]][rec[j]][i] = max(dp[rec[k]][rec[j]][i], dp[rec[p]][rec[k]][i - 1] + sum[j]);
}
}
}
}
int ans = 0;
for (int i = 1; i <= cnt; i++) {
if (rec[i]&a[n])
continue;
for (int j = 1; j <= cnt; j++) {
if (rec[i]&rec[j] || rec[j]&a[n - 1])
continue;
ans = max(ans, dp[rec[j]][rec[i]][n]);
}
}
printf("%d", ans);
return 0;
}
边栏推荐
- What is a data type? What is the use of data types?
- How to configure GDAL under idea
- Ilruntime learning - start from scratch
- s7700设备如何清除console密码
- P1896 [SCOI2005] 互不侵犯(状压dp)
- 【LeetCode】3. Merge two sorted lists · merge two ordered linked lists
- 2020-12-12
- Pat class a 1028 list sorting
- Free use until 2015 -- viz artist multi touch plug-in package
- 一个实习生的CnosDB之旅
猜你喜欢

【cocos creator】点击按钮切换界面

Pat grade a 1027 colors in Mars

PostGIS space function

JS common basic case sorting (continuous update)

Screenshot tool snipaste

HDMI2.1与HDMI2.0的区别以及转换PD信号。

Open the influence list of "National Meteorological Short Videos (Kwai, Tiktok) in November" in an interactive way“

Pat grade a 1029 median

Unity performance optimization
![[untitled]](/img/3d/27a7229e3f0ccf0ca5ae1f00a92513.jpg)
[untitled]
随机推荐
Precautions for opensips and TLS SIP trunk docking
Iterm2设置
MaxCompute字符串分割函数-SPLIT_PART
在浏览器输入url后执行什么
Pat class a 1031 Hello world for u
E: 无法定位软件包 ros-melodic-desktop-full
Huawei switch: configure Telnet, SSH and web access
PIP uses image website to solve the problem of slow network speed
Pat grade a 1027 colors in Mars
C language learning notes (mind map)
What is definition? What is a statement? What is the difference between them?
the installer has encountered an unexpected error installing this package
[cocos creator] get the resource UUID
The general trend of data news releases the power of visual reporting ----- essays after reading
Idea unreference Display Effect
Technical dry goods | Bert model for the migration of mindspore NLP model - text matching task (2): training and evaluation
LwIP learning socket (API)
Client server model
HDMI2.1与HDMI2.0的区别以及转换PD信号。
regular expression