Prob_Solve 板


LINE

※ 引述《tropical72 (蓝影)》之铭言: : 下述说明, array index start from 0. : 不知道这有没有明确定义的名词 < 其实是在排列演算法里面看到的 >。 : 现假设一 arr[] = {6,3,4,5,1,2}; : 中介数 n[i] 代表 arr[i] > arr[j] ( for j>i) 之个数, : 白话点,就是元素 a[i] 以右,比 a[i] 还大的个数。 : 以 n[1] 为例,arr[1] 右边比 arr[1] 大的数有 2 个, n[1]=2; : n[2] ,arr[2] arr[2] 1 , n[2]=1。 : ---- : 这里做几个前提假设 : a. 假设 array 数值分布为 [1,n] 或 [0,n-1] : b. 每个数都刚好会出现一次。 : 问题有三个 : 1. 有办法快速知道 n[] 值吗? (可接受额外空间) : 目前作法是 : : for(i=0; i<size; ++i) : for(n[i]=0, j=i+1; j<size; ++j) : n[i]+=(arr[j]>arr[i]); : 因这动作非常频繁,不知是否有其他作法? 硬爆: 把动作抽象化:我们需要一个支援如下操作的集合S - 动态增(删)一个数字 - 查询比 k 小的数字有几个 那上述回圈改为 S ← {} for i = n down to 1 n[i] = 查询 S 中有几个数字 < a[i] 把 a[i] 加入 S S可以用平衡树或Binary Index Tree(BIT, 好写)实现. 或者, BIT 可以维护 [1,i] i≦n 的资讯, 也可以变成维护 [i,n], 1≦i 我们把 a[] 的数字由小到大处理 v[1...n] = 0 for k = 1 to n let a[i] be the kth smallest number in a[] n[i] = 求和: v[i+1...n] v[i]++ 其中 v 可以用 segment tree(???这名称我不确定 反正对岸称为线段树)或 BIT 维护 其实跟上面方法一样意思...... : 2. 怎麽再解码回去? (可接受额外空间) : 若 n[] = {1,0,2,1 } ; 我该怎麽解码解成 : arr[] = {4,5,3,1,2} 或 {3,4,2,0,1}? : const int size=5; : char used[size]={0}; : int i, j, cnt; : for(i=0; i<size-1; ++i){ : cnt = 0; : for(j=size-1; cnt!=n[i]; --j) : if(used[j]==0) ++cnt; : arr[i] = j, used[j]=1; : } : // 最後还要查一次没用到的 : for(i=0; i<size && used[i]; ++i) ; : arr[size-1] = i; : 目前想法也是猪头想法,只差无限猴子定理没搬出来做, : 不知能否有些技巧? 一样,把要什麽动作写出来可以知道哪边可以加速 (注:这个同 http://uva.onlinejudge.org/external/115/11525.html ) S = {1, 2, ..., n} n[] 为输入的编码 for i = 1...n a[i] ← S 中第 n[i] 小的数字 从 S 中移除 a[i] 所以我们的 S 需要: - 求出第 k 大的数字是什麽 - 删除任一个数字 一样, S 用任一种平衡树都可以, 用 segment tree 也可以, BIT 上二分搜也可以 BIT上二分搜大致是: BIT纪录<=k的数字有几个, 然後对这个二分搜找到所需的数字是谁 附上以前写的程式码, 但是当时乱写的, 只是稍微加快了原先 O(n^2) 的算法, 并不是 O(n lg n) / O(n lg n lg n) 的做法... http://pastie.org/3328428 当时记的好像是"已经删掉了几个数" : 3. 假设不成立时,中介数之编解码是否该重新设计? : 倘若 假设 a. array 数值分布为 [1,n] 或 [0,n-1] 不成立, : 唯一确定的是 array 元素保证两两相异,试问还有什麽技巧可完成? 预处理把 a 中每个数字是第几大的算出来, 范围就变 [1,n] : ---- : 这篇发得很像作业文,但纯粹是个人进修卡住, : 希望各位先进能不吝给个意见。 : 恳请不吝赐教,小弟感激不尽。 突然发现跟 #1E06h4Uk 有类似处... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.217.33.242
1F:推 tropical72:先推再说,谢谢回覆指导 ^^ 02/07 00:42







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP