当前位置:网站首页>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;
}
边栏推荐
- Install cross compiler arm none liunx gnueabihf
- 华为S5700交换机初始化和配置telnet,ssh用户方法
- How to configure GDAL under idea
- 什么是定义?什么是声明?它们有何区别?
- Pat class a 1028 list sorting
- LwIP learning socket (application)
- Huawei switches are configured with SSH login remote management switches
- [step on the pit series] MySQL failed to modify the root password
- Free use until 2015 -- viz artist multi touch plug-in package
- Technical dry goods Shengsi mindspire dynamic transformer with variable sequence length has been released!
猜你喜欢
PostGIS space function
[MySQL 14] use dbeaver tool to remotely backup and restore MySQL database (Linux Environment)
Technical dry goods | thinking about the unification of dynamic and static diagrams of AI framework
Technical dry goods | some thoughts on the future of AI architecture
EtherCAT state machine transition (ESM)
[cocos creator] Click the button to switch the interface
Unity XR实现交互(抓取,移动旋转,传送,射击)-Pico
How can entrepreneurial teams implement agile testing to improve quality and efficiency? Voice network developer entrepreneurship lecture Vol.03
Project experience sharing: handwritten Chinese character recognition based on Shengsi mindspire
Technology dry goods | Roberta of the migration of mindspore NLP model - emotion analysis task
随机推荐
STM32F103 SPI (pit Diary)
The general trend of data news releases the power of visual reporting ----- essays after reading
一条通往服务器所有端口的隧道
E: 无法定位软件包 ros-melodic-desktop-full
方正锐利重磅升级到12.0版本,包装印前处理更加便捷、高效!
JSON与Object之间转换
s7700设备如何清除console密码
Pycharm remote ssh pyenv error: pydev debugger: warning: trying to add breakpoint to file that does
Pat class a 1031 Hello world for u
[MySQL 11] how to solve the case sensitive problem of MySQL 8.0.18
P2704 [NOI2001] 炮兵阵地(状压dp)
【LeetCode】2. Valid parentheses · valid parentheses
Go language - loop statement
Unity XR实现交互(抓取,移动旋转,传送,射击)-Pico
Pat class a 1028 list sorting
Retail philosophy retail psychological warfare after reading -- 7-11 is a good product!
What is definition? What is a statement? What is the difference between them?
链式长取值
Oracle queries grouped by time
Professor Zhang Yang of the University of Michigan is employed as a visiting professor of Shanghai Jiaotong University, China (picture)