说是排序结果就是各种奇技淫巧

中位数被坑多了久病成医,例题一题搞笑一题糖果传递(昨晚精神那么好效率还那么差)

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL; int n,m,T;
LL X[],Y[],s[];
LL reX()
{
LL ave=T/n;
for(int i=;i<=n;i++)s[i]=s[i-]+ave-X[i];
sort(s+,s+n+);
LL ret=;
for(int i=;i<=n;i++)
ret+=abs(s[i]-s[(n+)/]);
return ret;
}
LL reY()
{
LL ave=T/m;
for(int i=;i<=m;i++)s[i]=s[i-]+ave-Y[i];
sort(s+,s+m+);
LL ret=;
for(int i=;i<=m;i++)
ret+=abs(s[i]-s[(m+)/]);
return ret;
} int main()
{
int x,y;
scanf("%d%d%d",&n,&m,&T);
for(int i=;i<=T;i++)
scanf("%d%d",&x,&y), X[x]++, Y[y]++;
if(T%n==&&T%m==)printf("both %lld\n",reX()+reY());
else if(T%n==)printf("row %lld\n",reX());
else if(T%m==)printf("column %lld\n",reY());
else printf("impossible\n");
return ;
}

bzoj3032

有一个叫对顶堆“算法”的东西,超级搞笑,就是在线求中位数,用两个堆一个存一半,应该是因为我见过类似的套路bzoj3192: [JLOI2013]删除物品,就没意思了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
typedef long long LL; priority_queue<int> h;
priority_queue< int,vector<int>,greater<int> > t; int aslen,as[];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int zz,n;
scanf("%d%d",&zz,&n);
while(!h.empty())h.pop();
while(!t.empty())t.pop(); aslen=;int x,mid;
h.push(-);
t.push();
for(int i=;i<=n;i++)
{
scanf("%d",&x);
if(i%==)
{
if(x<h.top()) mid=h.top(), h.pop(), h.push(x);
else if(t.top()<x) mid=t.top(), t.pop(), t.push(x);
else mid=x;
as[++aslen]=mid;
h.push(mid);
}
else
{
if(x<h.top()) t.push(h.top()) ,h.pop() , h.push(x);
else h.push(t.top()) ,t.pop() , t.push(x); if(h.size()>t.size()) t.push(h.top()) ,h.pop();
else if(h.size()<t.size()) h.push(t.top()) ,t.pop();
}
} printf("%d %d\n",zz,aslen);
for(int i=;i<=aslen;i++)
{
printf("%d ",as[i]);
if(i%==)printf("\n");
}
if(aslen%!=)printf("\n");
}
return ;
}

poj3784

好像有个O(n)求第k大,但是没有例题口胡一下,就相当于splay的做法,分成左右两个区域,然后判断tot和k应该往哪边。

我觉得这东西应该没什么用,只问第k大的没多少吧,而且假如是在线问题的话肯定问很多次,每次O(n)太慢了2333

逆序对就没什么东西了(毕竟也是会cdq分治的)

但是n*m数码问题的有解性判定没见过,虽然简单就不口胡了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; int n,m;
int len,ans,a[],tt[];
void fenzi(int l,int r)
{
if(l==r)return ;
int mid=(l+r)/;
fenzi(l,mid);fenzi(mid+,r); int i=l,j=mid+,p=l;
while(i<=mid&&j<=r)
{
if(a[i]<=a[j])
{
ans+=j-(mid+);
tt[p++]=a[i++];
}
else
{
tt[p++]=a[j++];
}
}
while(i<=mid)
{
ans+=j-(mid+);
tt[p++]=a[i++];
}
while(j<=r)
{
tt[p++]=a[j++];
} for(int i=l;i<=r;i++)a[i]=tt[i];
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==&&m==)break;
int dis;len=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
len++;
scanf("%d",&a[len]);
if(a[len]==)dis=n-i,len--;
}
ans=;fenzi(,len);
if(m%==&&ans%==)printf("YES\n");
else if(m%==&&(ans+dis)%==)printf("YES\n");
else printf("NO\n");
}
return ;
}

poj2893

0x05 排序的更多相关文章

  1. 2019CSP-S初赛知识点汇总

    0x00 基本算法 0x01 位运算 0x02 前缀和与差分 0x03 二分 0x04 倍增 0x05 排序 0x06 离散化 0x07 高精度 0x10 数据结构 0x11 栈和队列 0x12 链表 ...

  2. 算法竞赛进阶指南 0x00 基本算法

    放在原来这个地方不太方便,影响阅读体验.为了读者能更好的刷题,另起一篇随笔. 0x00 基本算法 0x01 位运算 [题目][64位整数乘法] 知识点:快速幂思想的灵活运用 [题目][最短Hamilt ...

  3. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  4. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  5. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  6. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  7. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  8. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  9. 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中

    #coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...

随机推荐

  1. win10 + vs2017 + vcpkg —— VC++ 打包工具

    vcpkg 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以帮助您在 Windows 平台上获取 C 和 C++ 库. vcpkg 自身也是使用 C++ 开发的 ...

  2. VS中的路径宏

    说明$(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值.有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置.$(References)以分号分隔的引用列表被添加到项 ...

  3. PLSQL简介

    目录 什么是PLSQL PLSQL起源 PLSQL早期版本 改善可移植性 改进执行权限于事务的完整性 原书:steven feuerstei-oracle PLSQL grogramming 2014 ...

  4. WPF使用Winform PDFView控件

    最近开发wpf项目中有一个模块需要显示PDF文件内容.由于WPF本身没有PDF加载控件(似乎有收费的我查到过类似的资料.如果有新的pdf控件也请通知我一下谢谢). 项目使用之前也是从网上获取的资料,因 ...

  5. web拼图错误分析

    老师要求用web制作一个拼图游戏. 发现的问题:点击随机生成拼图的按钮后,打乱的图片会出现无法还原的情况. 发现过程:每次生成一个拼图后会测试它怎么拼回去,结果发现有时候拼不回去. 数学原理:如果两个 ...

  6. ibatis设置启用及关闭命名空间

    使ibatis用命名空间能够有效避免sql配置命名冲突,默认为启用状态,可以通过settings标签设置为关闭状态,例如: <settings> <setting name=&quo ...

  7. adb使用实践

    目录 1. adb 端口占用 2. 查看包名和MainAcitivity =============================================================== ...

  8. swift pragma mark

    众所周知,大家在OC中对代码进行逻辑组织 用的是#pragma mark - ,生成分隔线 用#pragma mark 函数说明,来生成一个函数的说明X 但在swift中,这个语法就不支持了,毕竟它是 ...

  9. sql语句参数化问题

    select  @PageSize * from tets SELECT 在WHERE 之前都不能参数化. TOP 只能做字符串运行.

  10. switch 语句来选择要执行的多个代码块之一。

    switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n 与 case 1 和 case 2 不同时执行的代码 }