1 条题解

  • 0
    @ 2025-7-17 22:17:06
    #include <stdio.h>
    #include <string.h>
    #define lson cur << 1
    #define rson cur << 1 | 1
    
    const int maxn = 50000;
    
    struct node
    {
    	int pid;
    	int loop;
    	int tag;
    }tree[maxn];
    
    int n, i, k;
    void build(int cur, int d)
    {
    	if(d == n)
    		return;
    	tree[lson].loop = d;
    	tree[lson].pid = k;
    	tree[lson].tag = ++k;
    	build(lson, d+1);
    	tree[rson].loop = d;
    	tree[rson].tag = ++k;
    	tree[rson].pid = tree[cur].pid;
    	build(rson, d+1);
    }
    
    void dfs(int cur, int d, int flag)
    {
    	if(cur >= maxn) return;
    	if(d+1000 == tree[cur].tag)
    	{
    		if(flag)
    			printf("Loop %d: Process ID=%d\n", tree[cur].loop, tree[cur].pid);
    		else
    			printf("Process ID=%d, A=%d\n", tree[cur].tag, (tree[cur].loop + 1) * 7);
    		return ;
    	}
    	dfs(lson, d, flag);
    	dfs(rson, d, flag);
    }
    
    int main()
    {
    	int t;
    	scanf("%d", &t);
    	while(t--)
    	{
    		memset(tree, 0, sizeof tree);
    		k = 1000;
    		scanf("%d%d", &n, &i);
    		tree[1].loop = 0, tree[1].pid = k, tree[1].tag = ++k;
    		build(1, 1);
    		dfs(1, (i+1) >> 1, i & 1);
    	}
    	return 0;
    }
    • 1

    信息

    ID
    681
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者