d*******l 发帖数: 338 | 1 int MaxProduct(int a[], int n)
{
int maxp = 0, maxn = 0;
int ans = 0;
for(int i = 0; i < n; i++) {
if(!a[i]) maxp = maxn = 0;
else if(a[i] > 0) {
maxp = max(maxp*a[i], a[i]);
maxn = a[i]*maxn;
} else {
int t = maxn;
maxn = min(maxp*a[i], a[i]);
maxp = a[i]*t;
}
ans = max(ans, maxp);
}
return (n==1)?a[0]:ans;
} |
|
l*********y 发帖数: 142 | 2 顺手写了一个,46min整。也没用状态压缩,待会看一下gloomyturkey的code。
#include
#include
#include
#include
#include
#include
#include
|
|
s*****r 发帖数: 108 | 3 写麻烦了,只要扫两遍就好,O(n log n) + O(n) + O(n)
空间上也只需要一个输出数组 O(n)
不过没有仔细想是否正确
sort(points, cmp)
maxn, count = 0, 0
for p in points
(p.start?) ? (++count) : (--count)
maxn = max(maxn, count)
ret = []
count = 0
last_start = nil
for p in points
if p.start?
++count
last_start = p
else
if count == maxn
ret << [last_start.val, p.val]
--count
ret |
|
t*********n 发帖数: 278 | 4 the sample from programming pearls. But, I got complier error at this line
qsort(a, n, sizeof(char *), pstrcmp). How can I fix this one? Thanx.
#include
#include
#include
int pstrcmp(char **p, char **q)
{ return strcmp(*p, *q); }
#define MAXN 5000000
char c[MAXN], *a[MAXN];
int main()
{ int i, ch, n = 0, maxi, maxlen = -1;
while ((ch = getchar()) != EOF) {
a[n] = &c[n];
c[n++] = ch;
}
c[n] = 0;
qsort(a, n, sizeof(char *), pstrcmp);
} |
|
k***d 发帖数: 4 | 5 #include
#define N 3
#define MAXN 10
void gen(int level){
int i, j;
static int dice[MAXN]; /* global array also works */
if(level <= N){
for(i = 1; i <= 6; i++){
dice[level] = i;
gen(level+1);
}
}else{
for(j = 1; j <= N; j++){
printf("%d", dice[j]);
}
printf("\n");
}
}
int main(){
gen(1);
return 0;
} |
|
s****j 发帖数: 67 | 6 平面最近点对那题,提供一种方法供参考,该方法看似复杂度o(n^2),但实际使用中几
乎是o(n)(不算nlgn排序的预处理)。主要是利用了三角形两边之差小于第三边的性质
,大大减枝。另外该方法实现简单,比传统o(nlgn)的实现简单很多也直观很多。
代码如下:
#include
#include
#include
#include
#include
using namespace std;
const int maxn=100005;
const double eps=1e-8;
struct Point
{
double x,y,dis;
} p[maxn];
int n;
bool cmpp(const Point &p1,const Point &p2)
{
return p1.dis
}
void solve()
{
sort(p,p+n,cmpp);
double ans=1e18,now;
int i,j;
for (i=0;i阅读全帖 |
|
s****j 发帖数: 67 | 7 int a[maxn],b[maxn];
int find(int aleft,int aright,int bleft,int bright,int k) {
if ((aright-aleft+1)+(bright-bleft+1)
cout<<"error"<
return 0;
}
if (aleft>aright)
return b[bleft+k-1];
if (bleft>bright)
return a[aleft+k-1];
int amid=(aleft+aright)>>1;
int bmid=(bleft+bright)>>1;
if (a[amid]<=b[bmid])
if (k<=(amid-aleft)+(bmid-bleft)+1)
return find(aleft,aright,bleft,bmid-1,k);
else
retu... 阅读全帖 |
|
S******t 发帖数: 151 | 8 来自主题: JobHunting版 - 这题咋做? “走”是说往前走么?
anyway, basic dp
int v[MAXN];
int f[MAXN];
int foo(int now) {
int ret = 0;
for(int i=1;i
ret |= foo(now + i);
return f[now] = ret;
}
int main() {
memset(f,-1,sizeof(f));
printf("%d\n",foo(0));
return 0;
} |
|
n****r 发帖数: 120 | 9 上个版本的aux数组多余!写个用数组实现栈的版本,更快一些。
public class Solution {
public static class Bar {
int height, startIdx;
Bar(){}
Bar(int h, int s){ height = h; startIdx = s; }
}
public static int maxn = 1000;
public static Bar[] stack = new Bar[maxn];
public static int largestRectangle(int[] h){
int top = 0, max = 0;
stack[top++] = new Bar(-1, 0);
for (int i=0; i<=h.length; i++){
Bar cur = new Bar(0, i);
if (i < h.leng... 阅读全帖 |
|
r********d 发帖数: 7742 | 10 lz, 三妹给的答案肯定是不work的。
不过既然三妹是无法改变的,我们还是从提高自身身上入手。
fib这个东西确实比较基础,但是有很多种玩法。这些玩法玩出来了不算什么,可一旦
玩不出来的话会比较伤感情。
我写一个你看看work不,这个应该没有重复打印和计算。。。N不能太大。
fib增长是1.6^n。用int64_t或者long long能多撑一会儿。。。
#include
using std::cout;
void PrintFib(int n, int n1, int n2) {
//handles the missing heading 1
if (0 == n1)
cout << 1 << '\t';
if (n > 0) {
int sum = n1+n2;
cout << sum << '\t';
PrintFib(n-1, n2, sum);
}
}
int main() {
const int MAXN = 20;
int a = 0, b = 1;
PrintFib(MAXN, a, b... 阅读全帖 |
|
o***c 发帖数: 32 | 11 我同学两周前onsite被考到了,不过此题线段树写起来也方便。
#define Maxn 10000
int val[1010];
class Segment_Tree {
private:
struct Node {
int left,right,cover;
};
Node Tree[Maxn];
int Number, c, d;
public:
void build(int Now, int a,int b) {
Tree[Now].left=a;
Tree[Now].right=b;
if(b-a>=1) {
int mid=(a+b)>>1;
Tree[Now].left=a;
build(2*Now+1 , a,mid);
Tree[Now].right=b;
build(2*Now+2,mid+1, b);
Tree[Now]... 阅读全帖 |
|
R******d 发帖数: 1436 | 12 先谢谢了。
第一个问题关于输出宏变量的:
先用proc sql产生了一些宏变量:
proc sql noprint;
select count(distinct name) into:nid from summary where name^="ID";
select name into :id1-:id%left(&nid) from summary where name^="ID";
quit;
现在想得到最后一个变量名,用%put &&id%left(&nid)不能得到正确的结果:
%put &&id%left(&nid) ;
WARNING: Apparent symbolic reference ID not resolved.
&id3
而用下面两步就可以:
%let maxn=%left(&nid);
%put &&id&maxn.
A3810_gg4
请问怎么能一次得到?
=========================
第二个问题关于临时数组的应用:
%do i =1 %to &nid;
%let arr_r =&arr_r pre_&i._[i]... 阅读全帖 |
|
v***a 发帖数: 365 | 13
发现之前算法还不够优化,有overlap直接删点就是了
struct node {
int x, y;
node * left, * right, * fa;
};
node * insert(node * n, int x, int y) {
while (n && overlap(n, x, y)) {
if (n->x < x) x = n->x; if (n->y > y) y = n->y;
n = removeNode(n); // The hard part
}
if (n == NULL) {
n = new node;
n->x = x; n->y = y; n->left = NULL; n->right = NULL; n->fa = NULL;
if (root == NULL) root = n;
return n;
}
node * ret;
if (n->x < x) {
r... 阅读全帖 |
|
s*******r 发帖数: 1325 | 14 还有网吗?柔软度呢?现在AMAZON上都没有老包装的了,那个sensitive的和以前是一
样的吗? |
|
l**g 发帖数: 2859 | 15 没用过老的。
用的dry max的,觉得不错。 |
|
|
s*******r 发帖数: 1325 | 17 现在我们家大宝在用dry max的4号,感觉很差劲啊。1号,2号我们以前用的老包装的
swaddler的,很好用。现在想给二宝屯1号,2号,不知道该买什么了 |
|
l**g 发帖数: 2859 | 18 N-2号不记得了。3号的正在用的sensitive的,没有网。 |
|
s*******r 发帖数: 1325 | 19 5555555,我大宝3号,4号都用过dry max的,我知道没网,就是想知道1-2号的 |
|
l**g 发帖数: 2859 | 20 555555555555 我现在突然我发现我记忆力好差。。。真的想不起来了。。。好像有? |
|
|
t**h 发帖数: 241 | 22 pampers n-2 都是有网的。但是我们用的n和1号都挺好的,可是2号有点红屁股。 |
|
s****u 发帖数: 118 | 23 要草的可以这样
int mem[maxn];
const int size = 8 * sizeof(int);
void set(int x) {
mem[x / size] |= (1 << (x % size))
}
int get(int x) {
return mem[x / size] & (1 << (x % size));
} |
|
w**b 发帖数: 19 | 24 p430上的程序:
Item aux[maxN];
merge(Item a[], int l, int m, int r)
{ int i, j, k;
for (i = m+1; i > l; i--) aux[i-1] = a[i-1];
for (j = m; j < r; j++) aux[r+m-j] = a[j+1];
for (k = l; k <= r; k++)
if (less(aux[i], aux[j]))
a[k] = aux[i++]; else a[k] = aux[j--];
}
输入a[l], 到a[m]是增序,a[m+1], 到a[r]是增序;
书上说这个mergesort不是stable的,我怎么没看出来?高手请解释一下? |
|
N******p 发帖数: 2777 | 25 看看 maxNumCompThreads 设的是几. 我在multicore上跑多个Simulink仿真的话,maxN
umCompThreads设成 1 是最快的。 |
|
t***s 发帖数: 4666 | 26 试了一下,没用。我现在怀疑是内存带宽的问题。主要是做2d conv,试了一下
开一个instance,大概1000秒。同时开两个,每个都要1500秒。
不知道parallel toolbox的parfor会不会好一点。这样让3个cores闲着比较不爽。
maxN |
|
r****y 发帖数: 26819 | 27 这个?
http://rss.acs.unt.edu/Rdoc/library/micEcon/R-ex/maxNR.R
### Name: maxNR
### Title: Newton-Raphson maximisation
### Aliases: maxNR
### Keywords: optimize
### ** Examples
## ML estimation of exponential duration model:
t <- rexp(100, 2)
loglik <- function(theta) sum(log(theta) - theta*t)
## Note the log-likelihood and gradient are summed over observations
gradlik <- function(theta) sum(1/theta - t)
hesslik <- function(theta) -100/theta^2
## Estimate with numeric gradient and Hessian
a <- maxN |
|