1 条题解

  • 0
    @ 2025-8-24 21:14:07

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 览遍千秋
    将伤与泪汇成力化作拳

    搬运于2025-08-24 21:14:06,当前版本为作者最后更新于2022-08-16 19:32:17,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    我们可以使用一个数组 aa 来记录当前所有灯的状态,用 00 表示关闭,用 11 表示打开。数组初值均为 00

    接下来,对于每一次操作 xx,将 ax1,ax,ax+1a_{x-1},a_{x},a_{x+1} 全部取反即可。可以通过 1tt1-t \rightarrow t(将 11- 那个数赋值给那个数)的方式取反。

    但是由于是环形摆放,需要特判 x=1,x=nx=1,x=n


    while(m--) {
    	int x; scanf("%d", &x);
    	if(x == 1) a[1] = 1 - a[1], a[2] = 1 - a[2], a[n] = 1 - a[n];
    	else if(x == n) a[n] = 1 - a[n], a[n - 1] = 1 - a[n - 1], a[1] = 1 - a[1];
    	else a[x] = 1 - a[x], a[x + 1] = 1 - a[x + 1], a[x - 1] = 1 - a[x - 1];
    }
    
    • 1

    信息

    ID
    7470
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者