这个……真心看不出来是个DP,我在树状数组的康庄大道上欢快的奔跑了一下午……看了题解才发现错的有多离谱。

参考:http://www.cnblogs.com/kuangbin/archive/2012/11/11/2765329.html

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> #define LL long long int using namespace std; const int MAXN = ; int val[MAXN];
int pos[MAXN];
int cnt[MAXN];
int diff[MAXN];
bool vis[MAXN];
LL dp[MAXN];
int N; int main()
{
while ( scanf( "%d", &N ) == && N )
{
memset( cnt, , sizeof(int)*(N+) );
memset( pos, , sizeof(int)*(N+) ); for ( int i = ; i <= N; ++i )
{
scanf( "%d", &val[i] );
++cnt[ i - pos[ val[i] ] ];
pos[ val[i] ] = i;
} memset( vis, false, sizeof(bool)*(N+) );
diff[] = ;
vis[ val[N] ] = true;
for ( int i = ; i <= N; ++i )
{
if ( vis[ val[N-i+] ] )
diff[i] = diff[i - ];
else
{
diff[i] = diff[i - ] + ;
vis[ val[N-i+] ] = true;
}
} int tot = N;
dp[] = N;
for ( int i = ; i <= N; ++i )
{
dp[i] = dp[i - ] - diff[i - ];
tot -= cnt[i - ];
dp[i] += tot;
} int Q;
scanf("%d", &Q );
while ( Q-- )
{
int w;
scanf("%d", &w);
printf("%I64d\n", dp[w] );
}
}
return ;
}

最新文章

  1. Chrome调试手机页面
  2. C#运用GmaQrCode生成二维码
  3. 图文:通过sql server 连接mysql
  4. Javascript图表插件HighCharts用法案例
  5. shell 使用
  6. javascript中数组的concat()方法 - 数组连接
  7. Sqoop详细介绍包括:sqoop命令,原理,流程
  8. JAVA设计模式之【简单工厂模式】
  9. 关于百度编辑器UEditor(1.4.3)在C#.NET中的应用实例
  10. iOS程序员的自我修养之道
  11. C++对象模型3--无重写的单继承
  12. [转]Ubuntu10下MySQL搭建Amoeba系列(文章索引)
  13. 计蒜客模拟赛D2T3 蒜头君救人:用bfs转移状压dp
  14. HTML DOM (文档对象模型)
  15. Jquery_基础(三) ajax与json
  16. MHA 安装与简单使用
  17. Update修改方法判断该ID的数据是否超过24小时,超过不许修改
  18. linux cgroups 简介
  19. MySQL5.5登录密码忘记了,怎嘛办?
  20. 实践:由0到1-无线大数据UX团队的成长

热门文章

  1. extjs3EmptyText 上传自动清空的问题
  2. Java分享笔记:使用entrySet方法获取Map集合中的元素
  3. Java - 静态方法的线程安全问题
  4. 汇编语言编写Hello World
  5. 深入理解restfulAPI和 Oauth2.0(精简版)
  6. 深入理解yii2之RBAC(模块化系统)
  7. PHP continue和break的用法(深入理解)
  8. JZOJ 3521. 道路覆盖
  9. JDK学习---深入理解java中的LinkedList
  10. python——matplotlib图像的基本处理