j*e
2 楼
给一个字符串,重新排列成相邻字母不能相同
我的想法是看到两个相同,就把第二个替换成后面不同的 aaabb -> abaab -> ababa
aaabbb-> abaabb -> ababab
但是这样的话就没法处理 aabbb的情况 aabbb-> ababb
我的想法是看到两个相同,就把第二个替换成后面不同的 aaabb -> abaab -> ababa
aaabbb-> abaabb -> ababab
但是这样的话就没法处理 aabbb的情况 aabbb-> ababb
l*l
3 楼
需要买冰箱,看到有一个return的冰箱, 便宜挺多的,500左右, 没敢下手,怕第一
个人是质量问题退的。有人买过吗? 脚的如何?
个人是质量问题退的。有人买过吗? 脚的如何?
n*7
4 楼
最早用latex,写公式很方便,
后来老板说跟人协作不友好,不是每个人都会用
track change也不方便
后来用word,简单公式还好
复杂了很痛苦,得用mathtype之类的东西
最近写文档用gdoc,爽翻了
多人并行处理完全释放生产力
问题是,gdoc的公式编辑插件只能处理简单的
我前几天搞个巨繁复的公式,它就不行了
我查了一下,多年以前gdoc是有latex支持的,不知道为啥后来没了
有些第三方网站可以让gdoc支持latex,但是实在担心安全性
有些关键信息现在不能公开
office365没研究过,既然本地的word支持latex还要插件,online版应该不会更好吧
微软的东西也尽量不想用
还有什么可以推荐吗?
另外,reference管理的问题我感觉主流的编辑工具都应该支持吧?
后来老板说跟人协作不友好,不是每个人都会用
track change也不方便
后来用word,简单公式还好
复杂了很痛苦,得用mathtype之类的东西
最近写文档用gdoc,爽翻了
多人并行处理完全释放生产力
问题是,gdoc的公式编辑插件只能处理简单的
我前几天搞个巨繁复的公式,它就不行了
我查了一下,多年以前gdoc是有latex支持的,不知道为啥后来没了
有些第三方网站可以让gdoc支持latex,但是实在担心安全性
有些关键信息现在不能公开
office365没研究过,既然本地的word支持latex还要插件,online版应该不会更好吧
微软的东西也尽量不想用
还有什么可以推荐吗?
另外,reference管理的问题我感觉主流的编辑工具都应该支持吧?
l*g
6 楼
Wiggle sort?
m*s
7 楼
有保修,应该也可以退货,跟小二问清楚再买。
i*h
10 楼
从最多的字符开始
s*l
11 楼
Bestbuy,的open box貌似折扣太少了,不怎么合适。
只有一次看到open box额外多加20%off,的时候才合适。就见到过一次。
只有一次看到open box额外多加20%off,的时候才合适。就见到过一次。
c*7
13 楼
我今天drop了几个 没任何问题
m*3
20 楼
这个方法行么
记录每一个字符出现的次数,比如count['a']=4, count['b']=2, count['c']=1
每次找满足条件的count最大的字符
比如,一开始
取a, 然后 count['a']-1,变成3
下一轮,虽然count['a']是最大,但是不能取,因为上一次取的是'a, 所以,这次取b,
count['b]-1 变成1
然后再取a
b
a
c
a
最后结果是ababaca
记录每一个字符出现的次数,比如count['a']=4, count['b']=2, count['c']=1
每次找满足条件的count最大的字符
比如,一开始
取a, 然后 count['a']-1,变成3
下一轮,虽然count['a']是最大,但是不能取,因为上一次取的是'a, 所以,这次取b,
count['b]-1 变成1
然后再取a
b
a
c
a
最后结果是ababaca
m*0
24 楼
我认为你的办法没什么问题
我还有一个办法:
也是统计所有字母的freq,
let s = 目前已经拼成的半成品string
repeat {
对每个freq>0的letter,取出一个,组成新string t, update freq[]
s = (s+t) or (t+s), depending on which is valid
}
return s
b,
【在 m******3 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 这个方法行么
: 记录每一个字符出现的次数,比如count['a']=4, count['b']=2, count['c']=1
: 每次找满足条件的count最大的字符
: 比如,一开始
: 取a, 然后 count['a']-1,变成3
: 下一轮,虽然count['a']是最大,但是不能取,因为上一次取的是'a, 所以,这次取b,
: count['b]-1 变成1
: 然后再取a
: b
: a
我还有一个办法:
也是统计所有字母的freq,
let s = 目前已经拼成的半成品string
repeat {
对每个freq>0的letter,取出一个,组成新string t, update freq[]
s = (s+t) or (t+s), depending on which is valid
}
return s
b,
【在 m******3 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 这个方法行么
: 记录每一个字符出现的次数,比如count['a']=4, count['b']=2, count['c']=1
: 每次找满足条件的count最大的字符
: 比如,一开始
: 取a, 然后 count['a']-1,变成3
: 下一轮,虽然count['a']是最大,但是不能取,因为上一次取的是'a, 所以,这次取b,
: count['b]-1 变成1
: 然后再取a
: b
: a
j*l
25 楼
没人用大名鼎鼎的winedit么?
y*g
26 楼
#include
#include
#include
#include
using namespace std;
struct Item {
int counter;
char c;
Item(): counter(0), c('\0') {};
Item(int counter_, char c_) : counter(counter_), c(c_) {};
Item(const Item &anotherItem): counter(anotherItem.counter), c(
anotherItem.c) {};
};
struct ItemCompare {
Item* prev;
ItemCompare(Item* prevItem): prev(prevItem) {};
bool operator() (const Item &item1, const Item &item2) {
if (!prev) {
return item1.counter < item2.counter;
} else {
if (prev->c == item1.c) {
return true;
} else if (prev->c == item2.c){
return false;
} else {
return item1.counter < item2.counter;
}
}
}
};
string shuffle(string str) {
if (str.empty()) return str;
unordered_map m;
for_each(str.begin(), str.end(), [&](char c) {
if (m.count(c)) {
++m[c].counter;
} else {
m[c] = Item(1, c);
}
});
vector- items;
for (auto kv: m) {
items.push_back(kv.second);
}
string result;
Item* prev = NULL;
while (!items.empty()) {
make_heap(items.begin(), items.end(), ItemCompare(prev));
result.push_back(items.front().c);
if (!--items.front().counter) {
pop_heap(items.begin(), items.end(), ItemCompare(prev));
items.pop_back();
prev = NULL;
} else {
prev = &(items.front());
}
}
return result;
};
int main() {
// your code goes here
cout << shuffle("aabb") << endl;
cout << shuffle("aaabb") << endl;
cout << shuffle("aabbb") << endl;
cout << shuffle("aabbbcc") << endl;
cout << shuffle("aabbc") << endl;
cout << shuffle("aabbcc") << endl;
cout << shuffle("aabbbbcc") << endl;
cout << shuffle("aabbbbc") << endl;
return 0;
}
#include
#include
#include
using namespace std;
struct Item {
int counter;
char c;
Item(): counter(0), c('\0') {};
Item(int counter_, char c_) : counter(counter_), c(c_) {};
Item(const Item &anotherItem): counter(anotherItem.counter), c(
anotherItem.c) {};
};
struct ItemCompare {
Item* prev;
ItemCompare(Item* prevItem): prev(prevItem) {};
bool operator() (const Item &item1, const Item &item2) {
if (!prev) {
return item1.counter < item2.counter;
} else {
if (prev->c == item1.c) {
return true;
} else if (prev->c == item2.c){
return false;
} else {
return item1.counter < item2.counter;
}
}
}
};
string shuffle(string str) {
if (str.empty()) return str;
unordered_map
for_each(str.begin(), str.end(), [&](char c) {
if (m.count(c)) {
++m[c].counter;
} else {
m[c] = Item(1, c);
}
});
vector
for (auto kv: m) {
items.push_back(kv.second);
}
string result;
Item* prev = NULL;
while (!items.empty()) {
make_heap(items.begin(), items.end(), ItemCompare(prev));
result.push_back(items.front().c);
if (!--items.front().counter) {
pop_heap(items.begin(), items.end(), ItemCompare(prev));
items.pop_back();
prev = NULL;
} else {
prev = &(items.front());
}
}
return result;
};
int main() {
// your code goes here
cout << shuffle("aabb") << endl;
cout << shuffle("aaabb") << endl;
cout << shuffle("aabbb") << endl;
cout << shuffle("aabbbcc") << endl;
cout << shuffle("aabbc") << endl;
cout << shuffle("aabbcc") << endl;
cout << shuffle("aabbbbcc") << endl;
cout << shuffle("aabbbbc") << endl;
return 0;
}
n*7
27 楼
又试了一下
可以手动label version
然后comparison
大致算是track change 功能了
还有个类似的工具,专门提了document history这个feature
https://www.sharelatex.com/
刚才研究了一会儿MathML,这个据说可以跟office online一起用
但是裸写MathML会死人的,我突然觉得用markdown来写应该不错
找找看有没有online写markdown的工具
【在 n******7 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 试了一下,感觉就是online latex
: 交互是强了,但是还是两个大问题没解决
: 1. 对于不懂latex的人来说,一头雾水
: 2. 还是没有track change的选项
: 我希望的是想word的mathtype插件那样,双击我就可以编辑公式
: 但是对于其他人来说,不编辑公式的时候就是一个所见即所得的编辑器
: 我注意到这个工具有个rich text的选项,语法挺像markdown语言的
: 看来他们也想在latex和可读性之间找个平衡
可以手动label version
然后comparison
大致算是track change 功能了
还有个类似的工具,专门提了document history这个feature
https://www.sharelatex.com/
刚才研究了一会儿MathML,这个据说可以跟office online一起用
但是裸写MathML会死人的,我突然觉得用markdown来写应该不错
找找看有没有online写markdown的工具
【在 n******7 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 试了一下,感觉就是online latex
: 交互是强了,但是还是两个大问题没解决
: 1. 对于不懂latex的人来说,一头雾水
: 2. 还是没有track change的选项
: 我希望的是想word的mathtype插件那样,双击我就可以编辑公式
: 但是对于其他人来说,不编辑公式的时候就是一个所见即所得的编辑器
: 我注意到这个工具有个rich text的选项,语法挺像markdown语言的
: 看来他们也想在latex和可读性之间找个平衡
L*s
28 楼
如果最多的字符是A,字符A有N个,
你就挖N个坑,先在每个坑填一个A,
然后往坑里填其它字符,字符一种一种地填,
坑一个一个地往前填,填到最后一个坑再回到最前面第一个坑继续填。
填好后发现不是解就无解。
你就挖N个坑,先在每个坑填一个A,
然后往坑里填其它字符,字符一种一种地填,
坑一个一个地往前填,填到最后一个坑再回到最前面第一个坑继续填。
填好后发现不是解就无解。
l*i
30 楼
This is correct. You can prove that if an input has a solution, then there
exists a solution starts with max count char. If not, let the solution be
string s, and let the max count char be X, then we can partition s into
blocks starting with X. At least one of those blocks can be moved to the
beginning of S without causing a conflict with s[0], otherwise s[0] has a
larger count than X. Similarly we can show that there always exists a
solution with a prefix generated by this algorithm and an induction on
length of s will complete the proof.
b,
【在 m******3 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 这个方法行么
: 记录每一个字符出现的次数,比如count['a']=4, count['b']=2, count['c']=1
: 每次找满足条件的count最大的字符
: 比如,一开始
: 取a, 然后 count['a']-1,变成3
: 下一轮,虽然count['a']是最大,但是不能取,因为上一次取的是'a, 所以,这次取b,
: count['b]-1 变成1
: 然后再取a
: b
: a
exists a solution starts with max count char. If not, let the solution be
string s, and let the max count char be X, then we can partition s into
blocks starting with X. At least one of those blocks can be moved to the
beginning of S without causing a conflict with s[0], otherwise s[0] has a
larger count than X. Similarly we can show that there always exists a
solution with a prefix generated by this algorithm and an induction on
length of s will complete the proof.
b,
【在 m******3 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 这个方法行么
: 记录每一个字符出现的次数,比如count['a']=4, count['b']=2, count['c']=1
: 每次找满足条件的count最大的字符
: 比如,一开始
: 取a, 然后 count['a']-1,变成3
: 下一轮,虽然count['a']是最大,但是不能取,因为上一次取的是'a, 所以,这次取b,
: count['b]-1 变成1
: 然后再取a
: b
: a
n*7
32 楼
试了一下markdown online editor
比如
https://stackedit.io/editor
发现这些个小网站都是用第三方的云存储来实现多人协作的
所以要手动同步才能看到别人的改动,不是实时的
有个网站实现了实时协同,但是一个人写,其他人都只读了。。。
比如
https://stackedit.io/editor
发现这些个小网站都是用第三方的云存储来实现多人协作的
所以要手动同步才能看到别人的改动,不是实时的
有个网站实现了实时协同,但是一个人写,其他人都只读了。。。
x*o
33 楼
折腾,emacs+github搞不定么?
【在 n******7 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 试了一下markdown online editor
: 比如
: https://stackedit.io/editor
: 发现这些个小网站都是用第三方的云存储来实现多人协作的
: 所以要手动同步才能看到别人的改动,不是实时的
: 有个网站实现了实时协同,但是一个人写,其他人都只读了。。。
【在 n******7 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 试了一下markdown online editor
: 比如
: https://stackedit.io/editor
: 发现这些个小网站都是用第三方的云存储来实现多人协作的
: 所以要手动同步才能看到别人的改动,不是实时的
: 有个网站实现了实时协同,但是一个人写,其他人都只读了。。。
相关阅读
[合集] 彪悍的人生不需要解释 (zz) (转载)山东盐场分布图 (转载)日本灾区最新扫描:食物都被抢光,只能抢A片了 (转载)电影《梅兰芳》里的限制级画面咆哮体生成器生成 -- 李白.明月不懂的这次还是不要乱插话, 今后十天东京风向如下 (转载)[[咆哮体征文]] Joke 版又举行活动了啊啊啊!!!那些个跟着起哄的反日的八零九零后,很多不是爱国。。。 (转载)PS的,不过还是搞笑打麻将可真是热Re: 蟋蟀腿没长错,是老嘁眼花了,原因见内。 (转载)网民都很喜感我有一个想法,可能很有前途,能得搞笑诺贝尔(转)学会计的都是上辈子折翼的新奥尔良烤翅!!!!!!!... (转载)美国财长:日本没有必要卖出美国国债 (转载)理科WSN们做题啦坐在自行车后架上的狗,拉风,淡定再别康桥警告/敬告各位和 mitbbs.com 网站 (转载)关于核辐射的真相 (转载)