[wikioi 2845]排序的代价(置换群)】的更多相关文章

有一列数,要对其进行排序(升序).排序只能通过交换来实现.每次交换,可以选择这列数中的任意二个,交换他们的位置,并且交换的代价为二个数的和.排序的总代价是排序过程中所有交换代价之和.先要求计算,对于任意给出的数列,要将其排成升序所需的最小代价. 输入描述 Input Description 输入数据有两行组成.第一行一个数n,表示这列数共有n个数组成,第二行n个互不相同的整数(都是小于1000的正整数),表示这列数 输入可能包含多组测试数据(少于50组),对于每个输入数据均需要给出对应的输出 输…
Description 给你一个数列使他递增,交换两个元素的代价为两个数的和,最小化代价. Sol 置换群+离散化. 使一个数列恢复递增顺序,那么,他和他要到达的位置的数需要交换,这样就形成了一个置换. 对于一个有向圈的置换,我们可以证明它的最小代价就是这个有向圈中 最小元素*(有向圈的大小-1)+其他数的和-最小元素. 1个大小为n的有向环,至少会进行n-1次交换才能成为n个1元环 当 \(size=1,2\) 时,它显然成立. 当 \(size>2\) 时,每次交换1个元素会将圆圈拆成两个互…
http://codevs.cn/problem/2845/ 好难的题啊qwq 没想到把排好序的数组的第i位和原数组的第i位的值看成一个单射函数,这样这是一个长度为n的置换. 对于置换的其中一个循环,如果长度为1就不用管了,否则循环中每个数至少要交换一次. 这样我们让循环中不是最小的元素只交换一次,循环中最小的元素交换很多次(具体地,循环节长度-1次)就可以做到这个循环的代价最小. 当然这个循环的代价还可能更小,那就是让循环中的最小元素跟整个数列中的最小元素换一下,先让数列中的最小元素代替循环中…
/*=================================================================== 1076 排序 题目描述 Description 给出n和n个整数,希望你从小到大给他们排序 输入描述 Input Description 第一行一个正整数n 第二行n个用空格隔开的整数 输出描述 Output Description 输出仅一行,从小到大输出n个用空格隔开的整数 样例输入 Sample Input 3 3 1 2 样例输出 Sample O…
1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 215[Submit][Status] Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大的牛有可能会捣乱,JOHN想把牛按脾气的大小排序.每一头牛的脾气都是一个在1到100,000之间的整数并且没有两头牛的脾气值相同.在排序过程中,JOHN…
原文: https://blogs.msdn.microsoft.com/shawnhar/2009/02/18/depth-sorting-alpha-blended-objects/ 翻译:李现民 最后修改:2012-07-03 “为什么我的透明物体的绘制顺序是错误的,或者为什么它们的一部分不见了?” 当绘制一个3D场景的时候,将图形按深度排序非常重要,只有这样靠近摄像机的物体才能被绘制在(离摄像机)更远的物体的上面.我们不会希望远方的山脉被绘制在近在眼前的建筑物的上面! 当前得到广泛应用的…
原文:Alpha混合物体的深度排序 先说个题外话, 本来我想解答一下最近Creators Club论坛上经常出现的一个问题, 意外的是在网上竟然找不到什么全面的答案.. 这是个有着复杂答案的简单问题: “为什么我的透明物体的绘制顺序不对, 或者有些不见了?” 当绘制一个3D场景时, 对图形进行深度排序是非常重要的, 这样离镜头近才画在远处物体的前面. 我们不会希望看到远处的山把近在眼前的建筑给挡住了! 如今有三种深度排序方法得到了广泛的应用: 深度缓冲 (也叫做 z-buffering) 油画家…
  翻译:李现民 最后修改:2012-07-03 原文:Depth sorting alpha blended objects 先说个题外话,本来我想回答在 Creators Club论坛上的一个常见问题,但(意外的是)我竟然没能从网上找到一个令人满意的答案. 问题本身很简单,但答案却有些复杂: “为什么我的透明物体的绘制顺序是错误的,或者为什么它们的一部分不见了?” 当绘制一个3D场景的时候,将图形按深度排序非常重要,只有这样靠近摄像机的物体才能被绘制在(离摄像机)更远的物体的上面.我们不会希…
题目传送门 题意:给出一条链,比如x连到y,x一定要在y的左边,且代价是这条链经过的点的权值和,问如何排序使得代价最小 分析:类似拓扑排序,先把入度为0的点入队,把指向该点的所有点按照权值排序,保证这样是代价是最小的,然后把这一块看成一个点继续入队.看图更简单: /************************************************ * Author :Running_Time * Created Time :2015/10/3 星期六 13:02:41 * File…
UPD:我真不是想骗访问量TAT..一开始没注意总长度写着写着网页崩了王仓(其实中午的时候就时常开始卡了= =)....损失了2h(幸好长一点的都单独开了一篇)....吓得赶紧分成两坨....TAT.............. —————————————————————————————————————————————————————————————————————————————— 写(被虐)了整整一个月b站上usaco的金组题...然而到现在总共只写了100道上下TAT(当然是按AC人数降序排…
前言 查询处理及优化是关系数据库得以流行的根本原因,也是关系数据库系统最核心的技术之一.SQLite的查询处理模块很精致,而且很容易移植到不支持SQL的存储引擎(Berkeley DB最新的版本已经将其完整的移植过来). 查询处理一般来说,包括词法分析.语法分析.语义分析.生成执行计划以及执行计划几个部分.SQLite的词法分析器是手工写的(比较简单),语法分析器由Lemon生成,语义分析主要是进行语义方面的一些检查,比如table是否存在等.而执行计划的生成及执行是最核心的两部分,也是相对比较…
Three steps to construct Inverted Index as following: 最难的step中: Token sequence. Sort by term. Dictionary & Postings 第2步中的最现实的问题是:假如100G的terms如何排序? External Sorting Algorithm 基于块的排序索引方法 注释: 4. 文档集读取 5. 排序 6. 排序结果fi 存放到disk 7. Merge 这些排序结果为一个整体的Inverte…
原文: https://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=400738936&idx=1&sn=2910b4119b9943bafdcfe950dc89e028&scene=0&uin=Mjk1ODMyNTYyMg%3D%3D&key=04dce534b3b035ef3da41c55e69b6792390d87f8207be3e924d28fab0b6ac41a02549bf7410a7849c9f2…
然后列举一下需求:1.实时性要高,有频繁的更新和读取2.可按距离排序支持分页3.支持多条件筛选(一个经纬度数据还包含其他属性,比如社交系统的性别.年龄) 方案简单介绍:1.sphinx geo索引支持按照距离排序,并支持分页.但是尝试mva+geo失败,还在找原因.无法满足高实时性需求.(可能是不了解实时增量索引配置有误)资源占用小,速度快 2.mongodb geo索引支持按照距离排序,并支持分页.支持多条件筛选.可满足实时性需求.资源占用大,数据量达到百万级请流量在10w左右查询速度明显下降…
这里介绍下,Insert.Group By等SQL语句的优化方法: 1.大批量数据插入 当load命令导入数据的时候,可以进行适当的设置提高导入速度. 1.1 对于MyISAM表,可以先禁用非唯一索引更新,再导入数据来快速导入大量的数据. alter table table_name disable keys; load date infile 'xxx.txt' into table_name; alter table table_name enable keys; 1.2 对于InnoDB表…
主席树真是神奇的物种! Orz一篇资料 题意:给n.m   下面有n个数 (编号1到n) 有m个询问,询问的是上面的数的编号在[l,r]之间第k小的数 n.m的范围都是$10^5$ 是主席树的入门题 借此来学习一下主席树 主席数利用函数式线段树来维护数列,一般用来解决区间第k大问题 空间时间的复杂度小于树套树(常数小) 划分树也可以解决区间第k大问题,但划分树不支持修改,主席树可以(用树状数组维护) (这三道入门题都是无修改的) 我们先来YY一下这种求区间第k(大)小的题目··· 最容易想到的做…
Sqlite是轻量级的,在编译之后很小,其中一个原因就是在查询优化方面比较简单,它只是运用索引机制来进行优化的,经过对SQLite的查询优化的分析以及对源代码的研究,我将SQLite的查询优总结如下: 一.影响查询性能的因素: 1. 对表中行的检索数目,越小越好 2. 排序与否. 3. 是否要对一个索引. 4. 查询语句的形式 二.几个查询优化的转换 1. 对于单个表的单个列而言,如果都有形如T.C=expr这样的子句,并且都是用OR操作符连接起来,形如: x = expr1 OR expr2…
1119: [POI2009]SLO Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 379  Solved: 181[Submit][Status] Description 对于一个1-N的排列(ai),每次你可以交换两个数ax与ay(x<>y),代价为W(ax)+W(ay) 若干次交换的代价为每次交换的代价之和.请问将(ai)变为(bi)所需的最小代价是多少. Input 第一行N. 第二行N个数表示wi. 第三行N个数表示ai. 第四行N个…
一·.前言:这篇博文内容非原创,是我们公司的架构师给我们做技术培训的时候讲的内容,我稍微整理了下,借花献佛.这篇博文只是做一个大概的科普介绍,毕竟SQL优化的知识太大了,几乎可以用一本书来介绍.另外,博主对SQL优化也是刚刚接触,也有很多不了解的地方,说的不对的地方,还请大家指正,共勉!   二.oracle服务器,所谓oracle服务器指的是一个数据库管理系统,它包括一个oracle实例(动态)和一个oracle数据库(静态). oracle实例是一个运行的概念,提供了一种访问数据库的方式,由…
Description Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. 题意 给定一个数组,和一个定值,找出数组元素的两…
优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写起来简单,也容易理解.但是,有时候可以被更有效率的连接(JOIN)替代. 现在假如要找出从来没有在网站中消费的客户,也就是查询在客户customer表中但是不在支付payment表中的客户信息. 嵌套查询: explain select * from customer where customer_id not in (select customer_id fr…
方法一: 一种直观的解是,先对第一个字串排序,然后逐个字符在第二个字串中搜索,把搜索不到的字符输出,就是所要的结果. 然而,算法库中有一个集合差运算set_difference,而且要求两个集合容器是已经排好序的.乍一看,好像是针对集合差运算来的. #include<iostream> #include<fstream> #include<algorithm> using namespace std; int main() { ifstream in("rem…
原文:http://mp.weixin.qq.com/s/CDKN_nPcIjzA_U5-xwAE5w 导读 EXPLAIN的结果中,有哪些关键信息值得注意呢? MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息. 总的来说,我们只需要关注结果中的几列: 列名 备注 type 本次查询表联接类型,从这里可以看到本次查询大概的效率 key 最终选择的索引,如果没有索引的话,本次查询效率通常很差 key_len 本次查询用于结果过滤的索引实际长度…
推荐阅读这篇博文,索引说的非常详细到位:http://blog.linezing.com/?p=798#nav-3-2 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素.当然还有其他方面的,比如OS优化,硬件优化,MySQL Server优化,数据类型优化,应用层优化,但是这些都没有SQL语句优化来的重要.下面将介绍INSERT,GROUP BY,LIMIT等的优化方法. 1.优化大批量插入数据 当用load命令导入数据的时候,适当的设置可以提高导入的速度.对…
MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息. 总的来说,我们只需要关注结果中的几列: 列名 备注 type 本次查询表联接类型,从这里可以看到本次查询大概的效率 key 最终选择的索引,如果没有索引的话,本次查询效率通常很差 key_len 本次查询用于结果过滤的索引实际长度,参见另一篇分享(FAQ系列-解读EXPLAIN执行计划中的key_len) rows 预计需要扫描的记录数,预计需要扫描的记录数越小越好 Extra 额外附加信…
现在很多手机软件都用附近搜索功能,但具体是怎么实现的呢>在网上查了很多资料,mysql空间数据库.矩形算法.geohash我都用过了,当数据上了百万之后mysql空间数据库方法是最强最精确的(查询前100条数据只需5秒左右). 接下来推出一个原创计算方法,查询速度是mysql空间数据库算法的2倍 $lng是你的经度,$lat是你的纬度 SELECT lng,lat, (),) )) AS distance FROM `user_location` 经测试,在100万数据中取前100条数据只需2.…
EXPLAIN的结果中,有哪些关键信息值得注意呢? MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息. 总的来说,我们只需要关注结果中的几列: 列名 备注 type 本次查询表联接类型,从这里可以看到本次查询大概的效率 key 最终选择的索引,如果没有索引的话,本次查询效率通常很差 key_len 本次查询用于结果过滤的索引实际长度,参见另一篇分享(FAQ系列-解读EXPLAIN执行计划中的key_len) rows 预计需要扫描的记录数,…
这两天在看DB2的内存管理的内容,看的很是模糊,有以下问题不明白,请教 是不是数据库管理器的共享内存就是DB2能够使用的最大内容呢,然后数据库全局内存从管理器内存那里获得分配的内存,然后应用程序全局内存又从数据库全局内存那里获得分配内存的,也就是说他们是一层一层的包含关系.还是我理解有问题,是并列关系的呢? PS 现在DB2好的教材比较少,找了几本书上写的都不是很清楚,谁要要好的资料共享下,先谢了  nic518 回复于:2006-12-31 12:45:01 [导读]本文将向您讲解 DB2 内…
写在前面的话:总是在灾难发生后,才想起容灾的重要性:总是在吃过亏后,才记得有人提醒过 设计原则 1.不在数据库做运算:cpu计算务必移至业务层 2.控制单表数据量:单表记录控制在1000w 3.控制列数量:字段数控制在20以内 4.平衡范式与冗余:为提高效率牺牲范式设计,冗余数据 5.拒绝3B:拒绝大sql,大事务,大批量 6.表字符集使用UTF8 7.使用INNODB存储引擎 数据表设计 1.尽可能地使用最有效(最小)的数据类型 tinyint(1Byte) smallint(2Byte) m…
原文:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0404mcarthur/index.html 简介 性能是关系到随需应变型应用程序成功与否的关键.当那些应用程序使用 IBM® DB2 Universal Database™ 作为数据存储时,至关重要的是,从一开始就应该知道有关如何在 DB2 UDB 上取得尽可能好的性能的基础知识.在本文中,我将给出关于调优 DB2 UDB V8 系统的一些比较深入的建议…