1 条题解

  • 0
    @ 2025-9-7 12:13:51

    对于任意两块相距不超过 kk 的年糕,无论先吃哪块,都会在另一块年糕上蹭下 11 单位辣椒酱。

    也就是说,最终蹭下辣椒酱的量与吃法无关,恒等于相距不超过 kk 的年糕对数。

    直接前缀和统计相距不超过 kk 的年糕对数即可。

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e5 + 12;
    char s[N];
    int pre[N];
    int n;
    int k;
    int main()
    {
    	freopen("ricecake.in", "r", stdin);
    	freopen("ricecake.out", "w", stdout);
    	int T;
    	scanf("%d", &T);
    	while (T--)
    	{
    		scanf("%d %d %s", &n, &k, s + 1);
    		for (int i = 1; i <= n; i++)
    			pre[i] = pre[i - 1] + s[i] - '0';
    		long long ans = 0;
    		for (int i = 1; i <= n; i++)
    			if (s[i] == '1')
    			{
    				int i1 = min(i + k, n);
    				int i2 = max(i - k - 1, 0);
    				ans += pre[i1] - pre[i2] - 1;
    			}
    		cout << ans / 2 << endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    197
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    76
    已通过
    23
    上传者