小编dej*_*avu的帖子

二分图中的交叉数

在二部图中,左侧有 n 个节点,右侧有 m 个节点。节点按 1 到 n 和 1 到 m 的顺序排列。左侧的节点连接到右侧的节点。所有节点均未连接。例如:

1 is connected to 4

2 is connected to 3

3 is connected to 2

3 is connected to 1
Run Code Online (Sandbox Code Playgroud)

我想知道图中有多少个交叉点(这里有 5 个交叉点)。SPOJ上也有类似的问题

我想知道如何使用一些用户提到的二叉索引树来解决这个问题。我正在使用 O(n^2) 算法求解并得到 TLE。

这不是作业。昨天我学习了BIT,正在寻找一些问题,所以我遇到了这个。就告诉我秘诀吧。请不要写出整个程序。

algorithm

4
推荐指数
1
解决办法
1773
查看次数

段树中的延迟传播?

好吧,我试图在Codechef上解决这个翻转硬币问题.用分段树解决它.但是时间限制超过了.我搜索并发现我必须使用懒惰传播.但我无法理解.我的更新功能递归地工作(从上到下).请提供一些提示或用例子解释.还要指出我必须更改代码的位置.

在翻转硬币时,如果节点值为1,则在更新期间将其更改为0,如果为0,则将其更改为1.

start和end是原始数组的限制.树是分段树阵列.

void update(int node, int start, int end,int pos)//pos=position to update
{
    if(start==end) tree[node]=(tree[node]==0) ? 1 : 0;
    else
    {
        int mid=(start+end)/2;
        if(mid>=pos) update(2*node + 1, start, mid, pos);
        else update(2*node + 2, mid+1, end, pos);

        tree[node]=tree[2*node +1] + tree[2*node +2];
    }
}
Run Code Online (Sandbox Code Playgroud)

algorithm segment-tree lazy-propagation

3
推荐指数
1
解决办法
1万
查看次数

C语言中的指针和函数歧义

请看下面的代码:

char* test ( )
{
    char word[20];
    printf ("Type a word: ");
    scanf ("%s", word);
    return word;
}

void main()
{
    printf("%s",test());
}
Run Code Online (Sandbox Code Playgroud)

当函数返回时,变量word被销毁并打印一些垃圾值.但当我更换

char word[20];
Run Code Online (Sandbox Code Playgroud)

通过 char *word;

它打印正确的值.根据我的说法,指针变量应该被破坏,类似于字符数组,输出应该是一些垃圾值.任何人都可以解释一下这种含糊之处吗?

c pointers function

0
推荐指数
1
解决办法
112
查看次数

请在C中解释这种歧义

当我编译这个程序时,我得到一些随机数作为输出.在Cygwin中输出为47但在RHEL5中,它给出一些负的随机数作为输出.谁能告诉我原因?
码:

main()
{
printf("%d");
}
Run Code Online (Sandbox Code Playgroud)

c random

-5
推荐指数
1
解决办法
158
查看次数