题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578

计数问题想到dp不过分吧...

dp[i][j][k][w]为第1-i位置中4个数最后一次出现的位置从大到小排列后为i>=j>=k>=w,但是会MLE,所以把i滚动掉。

但是这里有限制条件,把所有限制条件按右端点用vector存一下,然后处理到第i个位置时,枚举每个状态和限制条件,如果当前状态不满足则归0。

 #include <algorithm>
#include<iostream>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int mod = ;
int n, m, ans;
int dp[][maxn][maxn][maxn];
vector <pair<int, int>> a[maxn];
int main() {
int pos;
cin >> pos;
while (pos--) {
int ans = ;
scanf("%d %d", &n, &m);
for (int i = ; i <= n; i++)
a[i].clear();
for (int i = ; i < m; i++) {
int l, r, x;
scanf("%d%d%d", &l, &r, &x);
a[r].push_back(pair<int, int>(l, x));
}
dp[][][][] = ;
int now = ;
for (int i = ; i <= n; i++, now ^= ) {
for (int j = ; j <= i; j++)
for (int k = ; k <= j; k++)
for (int t = ; t <= k; t++)
dp[now][j][k][t] = ;
for (int j = ; j < i; j++)
for (int k = ; k <= j; k++)
for (int t = ; t <= k; t++) {
dp[now][j][k][t] = (dp[now ^ ][j][k][t] + dp[now][j][k][t]) % mod;
dp[now][i - ][k][t] = (dp[now ^ ][j][k][t] + dp[now][i - ][k][t]) % mod;
dp[now][i - ][j][t] = (dp[now ^ ][j][k][t] + dp[now][i - ][j][t]) % mod;
dp[now][i - ][j][k] = (dp[now ^ ][j][k][t] + dp[now][i - ][j][k]) % mod;
}
for (int j = ; j < i; j++)
for (int k = ; k <= j; k++)
for (int t = ; t <= k; t++)
for (auto tmp : a[i])
if ( + (j >= tmp.first) + (k >= tmp.first) + (t >= tmp.first) != tmp.second)
dp[now][j][k][t] = ;
}
now = n & ;
for (int i = ; i < n; i++)
for (int j = ; j <= i; j++)
for (int k = ; k <= j; k++)
ans = (ans + dp[now][i][j][k]) % mod;
printf("%d\n", ans);
} }

最新文章

  1. coursera机器学习笔记-机器学习概论,梯度下降法
  2. light oj 1138 - Trailing Zeroes (III)【规律&amp;&amp;二分】
  3. CSS居中的方法总结
  4. __block在ARC和非ARC下有什么不同
  5. IOS 多个UIImageView 加载高清大图时内存管理
  6. Altium Designer 生成 Mach3 G代码的程序
  7. SpringMVC从Control中响应json数据
  8. 手把手教你用Eclipse+TestNG搭建接口自动化测试框架
  9. ok6410如何从sdram中启动uboot 调试 这是一个猜想还没有验证
  10. Elasticsearch-6.7.0系列(四)Metricbeat仪表盘。本身无端口,依赖kibana
  11. 【设计模式】不同设计模式体现IOC控制反转
  12. OGG选择捕捉和应用模式
  13. WPF触发器(Trigger) - DataTrigger
  14. tinypng upload一键压缩上传工具,告别人肉
  15. 洛谷 P3684 机棚障碍Hangar Hurdles [CERC2016] 图论
  16. 我 支持 使用 async await
  17. Android Monkey: “No activities found to run, monkey aborted”错误原因
  18. ssh 使用 aws
  19. java_selenium 开发环境搭建
  20. Jersey 2.x JDK 上的客户端应用

热门文章

  1. 1.使用kubeadm安装kubernetes
  2. python 使用wxpy实现获取微信好友列表 头像 群成员
  3. 在浏览器下载pdf,或者txt文档是会直接打开
  4. Quantitative Strategies for Achieving Alpha(一)
  5. 用设计模式来替代if-else
  6. Win10 设置系统时间
  7. http协议的深刻理解
  8. [BZOJ1964]hull 三维凸包:计算几何
  9. 解决异常信息 Caused by: java.lang.IllegalArgumentException: invalid comparison: java.lang.String and java.util.Date
  10. 笨办法学Python(learn python the hard way)--练习程序42