AW297 赤壁之战(数据结构优化DP)
题目地址
状态设计:
- f[子序列长度][当前位数](严格递增子序列数量).
易错点:
- 初始化时需要设置f[0][0]=1.
- 每个独立的数字都只会影响到比它更大的数字.
- 预处理时的sort保证了整个算法的正确性.
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int MAXN=2e3,MOD=1e9+7;
int lowbit(int x){return x&-x;
}
int c[MAXN];
ll ask(int x){ll ans=0;while(x){ans+=c[x];ans=ans%MOD;x-=lowbit(x);}return ans;
}
void add(int x,int value){while(x<=MAXN){c[x]+=value;c[x]=c[x]%MOD;x+=lowbit(x);}
}
int a[MAXN],b[MAXN];
int f[MAXN][MAXN];
int main(){int T;scanf("%d",&T);int caseCnt=0;while(T--){caseCnt++;int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);memcpy(b,a,sizeof(b));sort(b+1,b+1+n);for(int i=1;i<=n;i++){a[i]=lower_bound(b+1,b+n+1,a[i])-(b-1);}f[0][0]=1;for(int i=1;i<=m;i++){memset(c,0,sizeof(c));if(i==1)add(1,f[i-1][0]);for(int j=1;j<=n;j++){f[i][j]=ask(a[j]-1);add(a[j],f[i-1][j]);}}int ans=0;for(int i=1;i<=n;i++){ans+=f[m][i];ans=ans%MOD;}printf("Case #%d: %d\n",caseCnt,ans);}return 0;
}
AW297 赤壁之战(数据结构优化DP)相关推荐
- BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...
- HDU 4990 Ordered Subsequence --数据结构优化DP
题意:给一串数字,问长度为m的严格上升子序列有多少个 解法:首先可以离散化为10000以内,再进行dp,令dp[i][j]为以第i个元素结尾的长度为j的上升子序列的个数, 则有dp[i][j] = S ...
- Atcoder dp_q Flowers 数据结构优化dp
文章目录 题意 题解 最近在练习atcoder上的dp场,大概只会做一半.我选出一些不会的题目写一下博客. 题意 按顺序每朵花有一个高度,一个美丽度,选出一个高度上升的子序列,求美丽度之和的最大值. ...
- 0x58 数据结构优化DP
补写一下 poj3171 设f[i]表示覆盖L~i的最小花费,把区间按左端点排序,枚举区间,f[a[i].r]=min{f[a[i].l~(a[top].r-1)]}+a[i].c (当然还要和原值比 ...
- bzoj1233 单调队列优化dp
https://www.lydsy.com/JudgeOnline/problem.php?id=1233 数据结构优化dp的代码总是那么抽象 题意:奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Be ...
- dp进阶之FFT加速+数据结构优化+不等式优化
快速傅里叶变换 快速傅里叶变换(英语:Fast Fourier Transform, FFT),是快速计算序列的离散傅里叶变换(DFT)或其逆变换的方法.傅里叶分析将信号从原始域(通常是时间或空间)转 ...
- 【DP】【树状数组】方伯伯的玉米田/优美玉米(luogu 3287/金牌导航 数据结构优化DP-5)
正题 luogu 3287 金牌导航 数据结构优化DP-5 题目大意 有n个玉米,给出高度,你可以选择一个区间,使这个区间的玉米高度+1,你可以进行k次这样的操作,查询你操作完后最长不下降子序列最大值 ...
- 【DP】【树状数组】免费馅饼(luogu 7302/金牌导航 数据结构优化DP-4)
正题 luogu 7302 金牌导航 数据结构优化DP-4 题目大意 在坐标轴上会出现n个金币,第i个金币tit_iti时在wiw_iwi出现(只出现一个单位时间),价值为sis_isi,当你t ...
- 【DP】【树状数组】折线统计(金牌导航 数据结构优化DP-1)
正题 金牌导航 数据结构优化DP-1 题目大意 平面上有n个点,让你选择若干点,连接x坐标相邻的点,其中连续上升或下降的为一段,问你有多少中选择方案,使得段数为k 解题思路 设fi,j,0/1f_{i ...
最新文章
- Drug Target Review | 筛选用于抗COVID-19的抗病毒化合物
- 剑指offer 算法(树的两个节点的最低祖先)
- 配置overlay(overlayfs)根目录挂载构建debian
- 像证券交易员一样思考和行动_3纪律与心态
- Docker_容器命令
- python笔记之while循环
- 1024 许个愿吧,万一实现了呢?
- AMD: Developer Guides, Manuals ISA Documents
- 关于 linux c 清屏命令
- 海思Hi3716C多媒体芯片规格书介绍
- Linux下 lnmp一键安装
- 面试技巧顶个P --leo谈应届生求职 2
- Blender物理效果教学:如何自制“牛顿摆”
- 随笔——物质与思想(或称意识)
- html5拖拽实现拼图,HTML5技术之图像处理:一个滑动的拼图游戏
- 怎么将png图片缩小?教你在线压缩png图片的方法
- 使用Axure RP8 模拟遮罩层显隐
- 《化工流体力学》课程笔记(四)
- 【软著】分享一次自己申请软件著作权的历程
- 大数据计算 PCIe 扩展坞系统