喂狗,成千上万的狗,求第k小元素 先贴个王晓东《算法设计与分析》的程序,TLE,囧 #include<iostream> #include <stdio.h> using namespace std; int n,m; int v[100010]; int d[100010]; int partition(int lef, int rig) { int i=lef, j=rig+1; int cmp=d[lef]; while(1) { while(d[++i]< cmp && i<rig); while(d[--j]> cmp ); if(i>=j) break; swap(d[i],d[j]); } d[lef]=d[j]; d[j]=cmp; return j; } int findkth(int lef, int rig, int k) { if(lef == rig) return d[lef]; int i=partition(lef, rig); int j=i-lef+1; if(k<=j) return findkth(lef, i, k); else return findkth(i+1, rig, k-j); } int main() { int l, r, k, i; scanf("%d%d",&n,&m); for(i=1; i<=n; i++) scanf("%d",&v[i]); while( m-- ) { scanf("%d%d%d",&l,&r,&k); for(i=l; i<=r; i++) d[i]=v[i]; printf("%d/n", findkth(l,r,k)); } return 0; } 学习其他方法ing...