hdu 5122(2014ACM/ICPC亚洲区北京站) K题 K.Bro Sorting
2024-09-04 22:30:38
传送门
对于错想成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;
}
最新文章
- CYQ.Data V5 从入门到放弃ORM系列:教程 - MAction类使用
- Servlet基础(三) Servlet的多线程同步问题
- nodejs实现Websocket的数据接收发送
- 谷歌浏览器 DEV Tools
- linux cd
- CP2102模块介绍(USB转uart)
- 【转】 /etc/fstab功能详解
- OC-之AFNetworking与ASIHTTPRequest对比
- php 定时任务
- 权限管理系统之项目框架搭建并集成日志、mybatis和分页
- 1.6 selenium3+firefox环境搭建
- SpringMVC+SpringJdbc+SQLServer+EasyUI增删改查
- 【其他】SAS key 获得办法【转载】
- msf客户端渗透(八):持久后门,mimikatz使用,获取PHP服务器shell
- 初识thinkphp(2)
- Linux下高并发socket最大连接数所受的各种限制(转)
- java中反向转义org.apache.commons.lang3.StringEscapeUtils.unescapeJava
- js 二进制转换为16进制数
- 设置oracle主键自增长
- UE4中的AI行为树简单介绍
热门文章
- eclipse maven创建web项目
- bzoj 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛【dp+树状数组+hash】
- Classic BADI总结
- 13、git
- (数论)51NOD 1135 原根
- No task executor bean found for async processing: no bean of type TaskExecut
- 【懒人专用系列】Xind2TestCase的初步探坑
- 计算误差——ACM计算几何中的精度问题
- Linux环境下安装JDK并配置环境变量
- 转 form表单中name和id区别