传送门

对于错想成lis的解法,提供一组反例
1 3 4 2 5
同时对于这次案例也可以观察出解法:
对于每一个数,如果存在比它小的数在它后面,它势必需要移动,因为只能小的数无法向右移动,而且每一次移动都必然可以使得这个数到达正确位置,这是根据题意而得的

#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 1000000000LL
#define mod 1000000007
using namespace std;
int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
const int N=1e6+10;
const int Max=1e6+5;
int a[N],c[N];
int lowbit(int x){
return x&(-x);
}
void add(int x,int d){
while(x<Max){
c[x]+=d;
x+=lowbit(x);
}
}
int sum(int x){
int ret=0;
while(x>0){
ret+=c[x];
x-=lowbit(x);
}
return ret;
}
int main()
{
int T,ca=0;
for(T=read();T;T--){
int n=read(),x;
memset(c,0,sizeof(c));
for(int i=1;i<=n;i++){
a[i]=read();
}
int ans=0;
for(int i=n;i>=1;i--){
if(sum(a[i]-1)>0) ans++;
add(a[i],1);
}
printf("Case #%d: %d\n",++ca,ans);
}
return 0;
}

最新文章

  1. CYQ.Data V5 从入门到放弃ORM系列:教程 - MAction类使用
  2. Servlet基础(三) Servlet的多线程同步问题
  3. nodejs实现Websocket的数据接收发送
  4. 谷歌浏览器 DEV Tools
  5. linux cd
  6. CP2102模块介绍(USB转uart)
  7. 【转】 /etc/fstab功能详解
  8. OC-之AFNetworking与ASIHTTPRequest对比
  9. php 定时任务
  10. 权限管理系统之项目框架搭建并集成日志、mybatis和分页
  11. 1.6 selenium3+firefox环境搭建
  12. SpringMVC+SpringJdbc+SQLServer+EasyUI增删改查
  13. 【其他】SAS key 获得办法【转载】
  14. msf客户端渗透(八):持久后门,mimikatz使用,获取PHP服务器shell
  15. 初识thinkphp(2)
  16. Linux下高并发socket最大连接数所受的各种限制(转)
  17. java中反向转义org.apache.commons.lang3.StringEscapeUtils.unescapeJava
  18. js 二进制转换为16进制数
  19. 设置oracle主键自增长
  20. UE4中的AI行为树简单介绍

热门文章

  1. eclipse maven创建web项目
  2. bzoj 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛【dp+树状数组+hash】
  3. Classic BADI总结
  4. 13、git
  5. (数论)51NOD 1135 原根
  6. No task executor bean found for async processing: no bean of type TaskExecut
  7. 【懒人专用系列】Xind2TestCase的初步探坑
  8. 计算误差——ACM计算几何中的精度问题
  9. Linux环境下安装JDK并配置环境变量
  10. 转 form表单中name和id区别