Redian新闻
>
Clover装El Capitan已经很好用了
avatar
Clover装El Capitan已经很好用了# Apple - 家有苹果
C*4
1
博士acta有好几篇,课题比较新。国内数IF,好像不好找教职。
avatar
d*w
2
You are given an unsorted array A of n elements, now construct an array B
for which
B[i] = A[j] where j is the least number such that A[j] > A[i] and j>i
if such a j does not exist B[i] = -1
Eg:
A={1,3,5,7,6,4,8}
B = {3 5 7 8 8 8 -1}
avatar
g*i
3
一直用Unibeast,现在才发现Clover真是领先一代。Trick就是研究下用哪些EFI
driver.
用了一年Yosemite, Xeon四核依然卡。
10.11流畅的像10.8,10.9的样子。
avatar
I*W
4
学校,导师,获奖??,这些都很重要。
avatar
s*l
5

void next_record(int* a, int* b, int n)
{
/* assert(n>0); */
int i,j,k=0;
int m = a[0];
for (i=1;iif (a[i]>m){
m = a[i];
for (j=k;jk = j;
}
}
// for (j=k;jb[k] = -1;
if (k==n-1) return;
next_record(a+k+1,b+k+1,n-k-1);
}

【在 d********w 的大作中提到】
: You are given an unsorted array A of n elements, now construct an array B
: for which
: B[i] = A[j] where j is the least number such that A[j] > A[i] and j>i
: if such a j does not exist B[i] = -1
: Eg:
: A={1,3,5,7,6,4,8}
: B = {3 5 7 8 8 8 -1}

avatar
C*4
6
upenn,导师David J Srolovitz,在国家实验室做有名字的博后。
avatar
l*g
7
你程序里的m不能这么用。问题里的example你的code刚好可以适用,但下面的case就不
行了
{1, 2, 10, 3, 4, 5}
你算出的结果是:{ 2, 10, -1, -1, -1, -1}
但实际应该是:{ 2, 10, -1, 4, 5, -1}
为你修改一下:
void next_record(int *a, int *b, int len)
{
// skip some boundary checks here
int k = 0;
b[len-1] = -1;

for (int i = 0; i < len-1; i++)
{
if (a[i] < a[k])
{
b[i] = a[k];
}
else
{
bool found = false;
for (int j = i+1; j < len; j++)
{
if (a[j] > a[i])
{
b[i] = a[j];
found = true;
k = j;
break;
}
}
if (!found)
{
b[i] = -1;
k = i+1;
}
}
}
return;
}

【在 s*********l 的大作中提到】
:
: void next_record(int* a, int* b, int n)
: {
: /* assert(n>0); */
: int i,j,k=0;
: int m = a[0];
: for (i=1;i: if (a[i]>m){
: m = a[i];
: for (j=k;j
avatar
I*W
8
upenn和uiuc差不多级别的了,没啥大区别。打听一下哪个老板对学生支持就去哪个。
avatar
s*h
9
What if
A = [5,3,4,6]

【在 l*****g 的大作中提到】
: 你程序里的m不能这么用。问题里的example你的code刚好可以适用,但下面的case就不
: 行了
: {1, 2, 10, 3, 4, 5}
: 你算出的结果是:{ 2, 10, -1, -1, -1, -1}
: 但实际应该是:{ 2, 10, -1, 4, 5, -1}
: 为你修改一下:
: void next_record(int *a, int *b, int len)
: {
: // skip some boundary checks here
: int k = 0;

avatar
C*4
10
uiuc的话应该是做理论/计算生物物理,教职是不是多一点?
avatar
c*n
11
什么破公司的题啊, 这题可真难看懂.

B

【在 d********w 的大作中提到】
: You are given an unsorted array A of n elements, now construct an array B
: for which
: B[i] = A[j] where j is the least number such that A[j] > A[i] and j>i
: if such a j does not exist B[i] = -1
: Eg:
: A={1,3,5,7,6,4,8}
: B = {3 5 7 8 8 8 -1}

avatar
h*0
12
如果你自己没有特殊喜好,理论/计算生物物理未来应该更好。

【在 C****4 的大作中提到】
: uiuc的话应该是做理论/计算生物物理,教职是不是多一点?
avatar
s*l
13
谢谢发现这个问题,我错误地把题目理解成找下一个比所有当前元素都大的record(纪录
), 所以函数也取名为next_record.
现在把最后一句

for (j=k;j改成
b[k] = -1;
if (k==n-1) return;
next_record(a+k+1,b+k+1,n-k-1);

【在 l*****g 的大作中提到】
: 你程序里的m不能这么用。问题里的example你的code刚好可以适用,但下面的case就不
: 行了
: {1, 2, 10, 3, 4, 5}
: 你算出的结果是:{ 2, 10, -1, -1, -1, -1}
: 但实际应该是:{ 2, 10, -1, 4, 5, -1}
: 为你修改一下:
: void next_record(int *a, int *b, int len)
: {
: // skip some boundary checks here
: int k = 0;

avatar
C*4
14
我本科是纯理论/计算凝聚态物理背景的,没什么偏好。理论/计算生物物理是不是比纳
米材料计算也要好一点?
avatar
i*d
15
有点类似max rectangle in histogram
只不过这个是找后面第一个比自己大的
可以O(n)
假设C[i] = min{ j | A[j]>A[i] && j > i}
C[n-1] = -1
for i <= n-2 ~ 0:
j = i+1;
while (j!=-1 && A[j]<=A[i])
j = C[j]
C[i] = j
就是处理到A[i]的时候,先看A[i+1],符合最好,不符合的话说明A[i+1] <= A[i]
那下一个满足要求的肯定至少是C[i+1]
最后根据C转存到A就可以了

【在 d********w 的大作中提到】
: You are given an unsorted array A of n elements, now construct an array B
: for which
: B[i] = A[j] where j is the least number such that A[j] > A[i] and j>i
: if such a j does not exist B[i] = -1
: Eg:
: A={1,3,5,7,6,4,8}
: B = {3 5 7 8 8 8 -1}

avatar
h*0
16
这是我的感觉。生物物理是未来的重要方向,纳米做的比较烂。

【在 C****4 的大作中提到】
: 我本科是纯理论/计算凝聚态物理背景的,没什么偏好。理论/计算生物物理是不是比纳
: 米材料计算也要好一点?

avatar
f*g
17
不是应该是
B = { 6, 4, 6, -1}?

【在 s****h 的大作中提到】
: What if
: A = [5,3,4,6]

avatar
t*r
18
好奇问一嘴,Srolovitz的学生,还在国家实验室,难道你在LANL?
Director fellow?
avatar
f*g
19
2 cents:
从最后一个开始scan。
并用一个stack维持一个有序递增数列。
O(n)。
有待验证
avatar
D*1
20

都给了这个多信息了 随便一Google也能查实了
别为难楼主了

【在 t*********r 的大作中提到】
: 好奇问一嘴,Srolovitz的学生,还在国家实验室,难道你在LANL?
: Director fellow?

avatar
g*s
21
good observation to associate it with max rect in hist.

【在 i****d 的大作中提到】
: 有点类似max rectangle in histogram
: 只不过这个是找后面第一个比自己大的
: 可以O(n)
: 假设C[i] = min{ j | A[j]>A[i] && j > i}
: C[n-1] = -1
: for i <= n-2 ~ 0:
: j = i+1;
: while (j!=-1 && A[j]<=A[i])
: j = C[j]
: C[i] = j

avatar
e*5
22
LANL出去不太好找但是如果能申请到0.5M一般就能留下,就是挣了钱没地方花

【在 t*********r 的大作中提到】
: 好奇问一嘴,Srolovitz的学生,还在国家实验室,难道你在LANL?
: Director fellow?

avatar
l*a
23
一开始没往O(n)的算法想。
还欠火候。
avatar
C*4
24
地方太差,可能还是想去caltech之类做博后

【在 e*******5 的大作中提到】
: LANL出去不太好找但是如果能申请到0.5M一般就能留下,就是挣了钱没地方花
avatar
l*g
25
是的,我错了,光顾着抓前面spellscroll的bug了
下面的optimization是不对的
if (a[i] < a[k])
{
b[i] = a[k];
}
看来spellscroll修改后的程序也还是不对

【在 f***g 的大作中提到】
: 不是应该是
: B = { 6, 4, 6, -1}?

avatar
t*r
26
还好吧基本上找的都能找到。
LANL就算能留下,长久看想活下来也不易,都是Programmatically funded,说没就没
。。。(可能有点悲观了)

【在 e*******5 的大作中提到】
: LANL出去不太好找但是如果能申请到0.5M一般就能留下,就是挣了钱没地方花
avatar
l*g
27
赞,这个是正解
有个小bug, while loop应该改成这样
while(a[j] <= a[j])
{
j = C[j];
if (j == -1)
break;
}

【在 i****d 的大作中提到】
: 有点类似max rectangle in histogram
: 只不过这个是找后面第一个比自己大的
: 可以O(n)
: 假设C[i] = min{ j | A[j]>A[i] && j > i}
: C[n-1] = -1
: for i <= n-2 ~ 0:
: j = i+1;
: while (j!=-1 && A[j]<=A[i])
: j = C[j]
: C[i] = j

avatar
e*5
28
是啊,见到没钱了的PI去别的组蹭钱打杂好惨啊。还有变态的审查,装个电脑都能把荷
枪实弹的的军警招来

【在 t*********r 的大作中提到】
: 还好吧基本上找的都能找到。
: LANL就算能留下,长久看想活下来也不易,都是Programmatically funded,说没就没
: 。。。(可能有点悲观了)

avatar
t*d
30
what is the bug? I can't see the difference.
also, how's the runtime turn out to be n? isn't the worst time still n^2
because of the while loop? average time nLgn ?

【在 l*****g 的大作中提到】
: 赞,这个是正解
: 有个小bug, while loop应该改成这样
: while(a[j] <= a[j])
: {
: j = C[j];
: if (j == -1)
: break;
: }

avatar
t*d
31
can you prove it's O(n)?
avatar
g*s
32
ohh. b[n] can be used as stack.
So, loop twice, it can be solved in O(n) with O(1) extra space.
avatar
l*l
33
void nextLarger(int a[],int b[],int n)
{
stack st;
st.push(0);
for (int i=1;i{
while (!st.empty() && a[i]> a[st.top()])
{
b[st.top()] = i;
st.pop();
}
st.push(i);
}
while (!st.empty())
{
b[st.top()] = -1;
st.pop();
}
}
avatar
g*s
34
this one need extra O(n) space. But in fact, it can be polished to use b[]
as the stack at the same time.
So, it can be solved in O(n) by extra O(1) space.

【在 l******l 的大作中提到】
: void nextLarger(int a[],int b[],int n)
: {
: stack st;
: st.push(0);
: for (int i=1;i: {
: while (!st.empty() && a[i]> a[st.top()])
: {
: b[st.top()] = i;
: st.pop();

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。