poj2299归并秒过

#include <cstdio>
using namespace std;
const int NMax=500050;
long long N,S[NMax],c[NMax],tot;
void merge(int a,int b)
{
    int mid=(a+b)/2,x=a,y=mid+1,k=0;
    while(x<=mid && y<=b)
    {
        if(S[x]>S[y])
        {
            c[++k]=S[y];
            y++;
            tot+=mid-x+1;    
        }
        else
        {
            c[++k]=S[x];
            x++;
        }
    }
    if(x<=mid)
        for(int i=x;i<=mid;i++) c[++k]=S[i];
    else
        for(int i=y;i<=b;i++) c[++k]=S[i];
    if(k!=b-a+1) puts("Error");
    for(int i=a;i<=b;i++)
        S[i]=c[i-a+1];
}
void solve(int a,int b)
{
    if(a>=b) return ;
    solve(a,(a+b)/2);
    solve((a+b)/2+1,b);
    merge(a,b);
}
int main()
{
    while(scanf("%d",&N),N)
    {
        tot=0;
        for(int i=1;i<=N;i++)
            scanf("%lld",&S[i]);
        solve(1,N);
        printf("%lld\n",tot);
    }
    return 0;
}
//来者请注意longlong
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RePP插件说明 最好用的PKPM配筋归并和对比插件,适用于AutoCAD04以上的版本,主要对PKPM的SATWE结果进行处理。与同类插件相比:第一、本插件无需安装,放置任意文件夹,用CAD加载即可运行;第二、文件占用内存小;第三、功能实用,且操作最为简单;第四、当处理大数据时,速度明显优于同类插件。大家可以拿其他插件进行对比。 百度网盘下载地址:pan.baidu.com/s/1sjIIEex 功能1:配筋层归并,命令:GB 1、在PKPM的SATWE模块中将字体大小设置好。推荐设置文字高度0.1,宽度0.2。 2、用PKPM的TCAD模块中将SATWE计算书转换成DWG格式(CAD文件)。 3、将转换好的DWG格式计算书参照进CAD并炸开参照。探索者可以直接炸开,若没有安装探索者,可以使用CAD的绑定操作将参照转换为块,然后将块分解即可。 4、加载插件。 5、运行归并命令GB。 整个过程不用指定字体颜色和图层,数据越多,速度优势越明显。详细操作见下文。 功能2:计算书对比,命令:DB 1、将参照导入并炸开。 2、加载插件。 3、输入命令DB。 4、选中要对比的区域,得到对比结果,不同的地方用红色字体显示。 详细操作参照归并功能,下图为对比的结果。 功能3:计算板负筋长度,命令:FC 计算公式:负筋长度=两点间的距离x跨度系数-调整值,其中跨度系数和调整值可用FCSZ命令进行设置,跨度系数初始值为0.25(表示1/4跨),调整值初始值为50。 功能4:文本批量替换,命令:PLTH 设置选项: 输入被替换内容:从键盘输入被替换内容; 选择被替换内容:从屏幕用鼠标选中被替换内容; 字母代替钢筋符号:用d、D、f、F分别代替HPB300、HRB335、HRB400、HRB500钢筋; 不用字母不代替钢筋符号:可避免对含有d、D、f、F的文本替换出错; 全部替换:将文本内容整体替换为其他内容,比如将“hello”替换为“hi”,程序将会匹配内容仅为“hello”的文本,然后将其替换为“hi”。可使用通配符进行匹配,“*”代表任意多任意字符,“?”代表一个任意字符。 全部替换实例:可以替换“hello”→“hi”; 无法替换“hello,man”→“hi,man”。 部分替换:将文本内容部分替换为其他内容,比如将“hello”替换为“hi”,程序将会匹配所有含有“hello”的文本,然后将其替换为“hi”。 全部替换实例:可以替换“hello”→“hi”; 可以替换“hello,man”→“hi,man”。 目前插件提供试用版,如果大家喜欢请支持正式版,就几元钱,让作者有更大动力,一次购买可以无限升级,后续还会增加功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值