HDU 5273 Dylans loves sequence 区间DP
2015-12-06 12:01
681 查看
题意:给你一个a[i]a[i]数组,i<Ni,每个询问给出leftleft和rightright,求数组a[left]a[left]到a[right]a[right]之间的逆序对数。
思路:区间DP,DP方程 : dp[i][j]=dp[i][j−1]+dp[i+1][j]−dp[i+1][j−1]+(a[i]>a[j]);dp[i][j] = dp[i][j-1] + dp[i+1][j] - dp[i+1][j-1] + (a[i] > a[j]);
(dp[i+1][j]−dp[i+1][j−1])(dp[i+1][j] - dp[i+1][j-1]) 表示从 i+1i+1 到 j−1j-1 有多少个比a[j]大的数,所有要计算a[i]a[i]是否比a[j]a[j]大QAQ:我dp数组没清空竟然也A了,后来想想,并不需要清空dp数组,因为dp[i][i]dp[i][i]始终是0,其他的值每次都会根据dp[i][i]dp[i][i]来重新计算。
http://acm.hdu.edu.cn/showproblem.php?pid=5273/********************************************* Problem : HDU 5273 Author : NMfloat InkTime (c) NM . All Rights Reserved . ********************************************/ #include <map> #include <set> #include <queue> #include <cmath> #include <ctime> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define rep(i,a,b) for(int i = a ; i <= b ; i ++) #define rrep(i,a,b) for(int i = b ; i >= a ; i --) #define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next) #define cls(a,x) memset(a,x,sizeof(a)) #define eps 1e-8 using namespace std; const int MOD = 1e9+7; const int INF = 0x3f3f3f3f; const int MAXN = 1e5; const int MAXE = 2e5; typedef long long LL; int T,n,m,k; int a[1005]; int dp[1005][1005]; void input() { rep(i,1,n) scanf("%d",a+i); } void solve() { cls(dp,0); rep(k,1,n) { //k是区间长度,dp方程较长的区间由较短的区间得到,所以k放在前面。 rep(i,1,n) { if(i+k>n) break; int j = i + k; dp[i][j] = dp[i][j-1] + dp[i+1][j] - dp[i+1][j-1] + (a[i] > a[j]); //dp[i+1][j] - dp[i+1][j-1] 表示从 i+1 到 j-1 有多少个比a[j]大的数,所有要计算a[i]>a[j] } } int left,right; rep(i,1,m) { scanf("%d %d",&left,&right); printf("%d\n",dp[left][right]); } } int main(void) { //freopen("a.in","r",stdin); // scanf("%d",&T); // while(T--) { while(~scanf("%d %d",&n,&m)) { input(); solve(); } return 0; }
相关文章推荐
- 1085. Perfect Sequence (25)
- UICollectionView
- 1062. Talent and Virtue (25)
- iOS UITableView中异步加载图片
- 1051. Pop Sequence (25)
- Android触摸事件处理机制之requestDisallowInterceptTouchEvent
- 1041. Be Unique (20)
- Android UI:机智的远程动态更新策略
- 1017. Queueing at Bank (25)
- 1007. Maximum Subsequence Sum (25)
- EasyUI中文帮助文档
- Avro技术应用_7. 将 Avro 数据读写到一个 Parquet 文件中 -- 待完善
- Hadoop中数据序列化的常用方式:SequenceFile, Avro, Thrift, ProtoBuff -- 待完善
- Ubiquitous Religions
- mvc项目架构搭建之UI层的搭建
- aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到
- LibGDX_1.6: 纹理(图片)的绘制 与 assets 资源文件夹: UI 初体验
- UESTC 1253 阿里巴巴和n个大盗 博弈、策略
- server core & GUI
- UESTC 1255 斓少摘苹果 贪心法