首页 > 其他分享 >Atcoder ABC 265DEF

Atcoder ABC 265DEF

时间:2022-08-22 10:59:05浏览次数:72  
标签:Atcoder le 10 d2 sum ABC 265DEF dp d1

D

题目大意

给定一个序列\(A = (A_0,\cdot,A_{N - 1})\),判断是否能找到一个四元组\((x,y,z,w)\)满足:

  • \(0 \le x < y < z < w \le N\)
  • \(\sum_{i = x} ^ {y - 1} A_i = P\)
  • \(\sum_{i = y} ^ {z - 1} A_i = Q\)
  • \(\sum_{i = z} ^ {w - 1} A_i = R\)

\(3 \le N \le 2 \times 10^5,1 \le A_i \le 10^9,1 \le P,Q,R \le 10^15\)

Solution

对于每个\(i\),设\(ps_i,qs_i,rs_i\)为以\(i\)为左端点的连续数列和分别为\(P,Q,R\)的右端点位置(没有设为inf),这个可以用双指针完成(或者二分),然后枚举每个\(i\),设\(x = i\),先跳到\(x \leftarrow ps_x + 1\),再跳到\(x \leftarrow qs_x + 1\),最后跳到\(x \leftarrow rs_x\),每一步判断是否合法。
时间复杂度\(O(n)\)或\(O(n \log{n})\),取决于求解\(ps_i,qs_i,rs_i\)的方式。

E

题目大意

一个人起点在\((0,0)\),给定\(N,M,A,B,C,D,E,F\),他可以走\(N\)步,每一步可以这样走:

  • \((x,y) \rightarrow (x + A,y + B)\)
  • \((x,y) \rightarrow (x + C,y + D)\)
  • \((x,y) \rightarrow (x + E,y + F)\)
    有\(M\)个障碍物\((x_1,y_1),\cdots,(x_M,y_M)\)是走的时候不能经过的,求走\(N\)步的合法的不同路径数量,对\(998244353\)取模。
    \(1 \le N \le 300,0 \le M \le 10^5,-10^9 \le A,B,C,D,E,F ,X_i,Y_i \le 10^9\)

Solution

设\(dp_{i,j,k}\)为走了\(i\)次1操作,\(j\)次2操作,\(k\)次3操作的合法路径数量。那么当前位置为\((x = Ai+Cj+Ek,y = Bi + Dj + Fk)\),如果当前位置为障碍物,\(dp{i,j,k} = 0\),否则
\(dp_{i,j,k} = dp_{i - 1,j,k}\cdot [i \ge 1] + dp_{i,j - 1,k}\cdot[j \ge 1] + dp_{i,j,k - 1} \cdot [k \ge 1]\)
复杂度\(O(n^3\log{m})\),其中\(\log{m}\)是用map判断是否是障碍物。

F

题目大意

给两个长度为\(n\)的数对\(x = (x_1,\cdots,x_n),y = (y_1,\cdots,y_n)\),定义:

\[d(x,y) = \sum_{i = 1} ^ n |x_i - y_i| \]

给定两个长度为\(n\)的数列\(p = (p_1,\cdots,p_n),q = (q_1,\cdots,q_n)\),求出满足\(d(p,r) \le D,d(q,r) \le D\)(\(D\)给定)的序列\(r\)的个数,对\(998244353\)取模。

Solution

设\(dp_i,j,k\)为在前\(i\)位中\(\sum_{l = 1} ^ i |r_i - p_i| = j, \sum_{l = 1} ^ i |r_i - q_i| = k\)的合法数量。
转移:枚举\(x \in [-2D,2D]\),计算\(d1 = |x - p_i|,d2 = |x - q_i|\),\(dp_{i,j,k} = \sum_x dp_{i - 1,j - d1,k - d2}\cdot [j \ge d1,k \ge d2]\)
答案就是\(\sum_{i = 0} ^ D \sum_{j = 0} ^ D dp_{n,i,j}\)

复杂度\(O(nD^3)\),过不去
设\(l = \min \{p_i,q_i\},r = \max\{p_i,q_i\},s = r - l\),分不同情况考虑:

  • \(l \le x \le r\) :有\(d1 + d2 = r - l \to dp_{i,j,k} = \sum_{j' + k' = j + k - s}dp_{i - 1,j',k'}\)
  • \(x < l\) 或 \(x > r\):有\(d1 + d2 = r - x\)或\(d1 + d2 = x - l \to dp_{i,j,k} = \sum_{j' - k' = i - j + s 或j' - k' = i - j - s} dp_{i - 1,j',k'}\)
    这样转移就\(O(1)\)了,总复杂度\(O(nD^2)\),空间上\(i\)一维滚掉,可以过。

标签:Atcoder,le,10,d2,sum,ABC,265DEF,dp,d1
From: https://www.cnblogs.com/luyiming123blog/p/16612060.html

相关文章

  • AtCoder Beginner Contest 265赛后总结
    生日打了场AtcoderBeginner还可以吧……做出了前四道题,第五、六题是dp方程没想出来QwQA-Apple水题+1,感谢atcoder把坑都亮出来QwQ……分两种情况讨论:三个一卖的比(一个......
  • AtCoder Beginner Contest 264(D-E)
    D-"redocta".swap(i,i+1)题意:给一个字符串,每次交换相邻两个字符,问最少多少次变成"atcoder"题解:从左到右依次模拟#include<bits/stdc++.h>usingnamespacestd;......
  • [题解] Atcoder Regular Contest ARC 146 A B C D 题解
    点我看题A-ThreeCards先把所有数按位数从多到少排序,答案的位数一定等于位数最多的三个数的位数之和\(tot\)。对于每个i,把有i位的数排序,并记录每个i的排序结果。最后......
  • 「atcoder - agc054c」Roughly Sorted
    link。高妙题,我只会到构造下界那一步……构造下界比较容易,只需要注意到交换一次最多让序列向合法迫近一步即可。则答案下界为\(\sum_i\max\{\left(\sum_{j<i}[p'_j......
  • 三个线程交替打印ABC100次问题思考
    如题:使用三个线程交替打印ABC,直至100次代码实战方法一:使用notify()、wait()方法publicclassPrintAbc{/***唤醒线程的状态值state:threadA=0,threa......
  • AtCoder 比赛记录
    ARC140打得很烂。Rank590,Performance1696。D-OnetoOne每个点都有恰好一个出边,所以这是一个外向基环森林。因此连通块数就等于环的个数,我们只需要求出所有方案中......
  • [ABC236H] Distinct Multiples
    一、题目点此看题二、解法考虑容斥第二个限制,如果钦定\(a_i=a_j\)我们就连边\((i,j)\),具体来说我们枚举边集\(E\)的子集\(S\),设\(f(S)\)表示满足\(\forall(u,......
  • AtCoder Beginner Contest 258
    A-When?问21:00后的第k分钟的时间#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+5;intn,a[N],cnt,k;int32_tmain(){ intn,h=21......
  • AGC058D Yet Another ABC String
    link由于限制是循环的考虑用连续段容斥。直接容斥的做法是枚举一组限制,并带上\((-1)^c\)的系数:某些相邻的三个数必须\(\in123,231,312\),相交的限制会互相影响得到连......
  • abc264 E
    题目链接:clickhereSolution:首先考虑维护连通块,但是在删边的条件下进行维护连通块显然比较复杂如果不是删边,而是增添边,那么连通块的维护难度将大大减少,那么我们如何从......