首页 > 其他分享 >UER #6 逃跑

UER #6 逃跑

时间:2023-10-13 17:47:54浏览次数:26  
标签:方案 sum 位置 times overline 逃跑 我们 UER

设总方案数为 \(all=(w_1+w_2+w_3+w_4)^n\) 种,第 \(i\) 个方案经过的不同位置个数为 \(d_i\),则有:

\[V\times all=\sum (d_i-\overline d)^2\times all=(\sum d_i^2+all\times \overline d^2-2\overline d\sum d_i)\times all \]

由于 \(\overline d=\frac{\sum d_i}{all}\),故有:

\[V\times all=all\sum d_i^2-(\sum d_i)^2 \]

所以我们只需要算出 \(\sum d_i^2\) 和 \(\sum d_i\) 即可。

先考虑 \(\sum d_i\) 怎么做。考虑利用期望的线性性,把贡献下放到每个位置上,统计第 \(i\) 步能走到的首次经过位置个数。则对于这些节点,贡献为后面步数随便走的方案数。(我们可以总结的套路是,如果存在取多次只算一次贡献,不妨将贡献放到取第一次上)

考虑我们在第 \(i\) 步走到某个位置时,该位置不是第一次走到,那么我们一定可以找到第一次走到该位置的步数 \(p\),且在 \(p\) 后的 \(i-p\) 步一定是绕了若干圈又回到原地。

所以不妨设 \(f_i\) 表示第 \(i\) 步能走到的新位置的总贡献,\(all_i=(w_1+w_2+w_3+w_4)^i\),\(s(p,i,j)\) 表示从当前节点 \((x,y)\) 开始,走 \(p\) 步之后走到 \((x+i,y+j)\) 的方案数。其中 \(s(p,i,j)\) 可以通过递推在 \(O(n^3)\) 以内求出。则有转移:

\[f_i=all_i-\sum_{j=0}^{i-1}f_js(i-j,0,0) \]

初始为 \(f_0=1\)。则:

\[\sum d=\sum_{i=0}^n f_iall_{n-i} \]

接下来考虑 \(\sum d^2\)请在求平方期望时考虑其组合意义,对于方案中新位置对计数。

故我们现在要求的就是,中途经过位置 \((i,j)\)、第 \(p\) 步时第一次经过另一个位置 \((i+x,j+y)\) 的方案数,我们将其设为 \(g(p,x,y)\)。总方案数可以为 \(f_k\) 和 \(s(p-k,x,y)\) 拼接的结果,但如果这样我们会算重一些方案:

  • 我们并非先走到了 \((i,j)\) 再走到了 \((i+x,j+y)\),而是先 \((i+x,j+y)\),再到 \((i,j)\)。这部分的方案数为 \(g(k,-x,-y)\times s(p-k,x,y)\)。

  • 我们并非第一次走到 \((i+x,j+y)\)。这部分的方案数为 \(g(k,x,y)\times s(p-k,0,0)\)。

把它们减去,即可得到 \(g(p,x,y)\):

\[g(p,x,y)=\sum_{k=0}^{p-1}f_ks(p-k,x,y)-g(k,-x,-y)s(p-k,x,y)-g(k,x,y)s(p-k,0,0) \]

于是我们可以得到:

\[\sum d^2=\sum d+2\sum g(p,x,y) all_{n-p} \]

乘 \(all_{n-p}\) 的原因和前面一样,我们找到位置对之后后面的步数可以随便走。乘 \(2\) 是因为一个位置对会造成两次贡献。

总时间复杂度 \(O(n^4)\),瓶颈在 \(g\) 的求解。

注意 \(g(*,0,0)\) 不合法一定为 \(0\),以及在求解 \(g\) 时需要尽量减少枚举常数。

标签:方案,sum,位置,times,overline,逃跑,我们,UER
From: https://www.cnblogs.com/ydtz/p/17762694.html

相关文章

  • cadquery装配教程(1)
    代码 绘制出的图形DXF图形截图 用到的函数.sketch() 在当前界面创建一个草图importers.importDXF()导入2D图用于建模 .finalize() 一般用于.sketch(),结束草图.返回元素用于拉伸. ......
  • 在jQuery中如何检查一个复选框是否被选中?
    内容来自DOChttps://q.houxu6.top/?s=在jQuery中如何检查一个复选框是否被选中?我需要检查复选框的checked属性,并根据该属性使用jQuery执行操作。例如,如果age复选框被选中,那么我需要显示一个文本框以输入age,否则隐藏该文本框。但是以下代码默认返回false:if($('#isAgeSelec......
  • java项目使用Mybatis-Plus插件,QueryWrapper日期开始-结束范围查询
    1、参数开始日期startTime、结束日期endTime挺好用,开始日期、结束日期当天都包含进去了,如果使用qw.between("create_time",startTime,endTime)方法是不含endTime结束日期当天的qw.apply(bCulresCardMvVO.getStartTime()!=null,"date_format(create_time,......
  • jQuery能做到,PHP能做到,C#也能做到
    题目有些大,但文中谈到的问题很小;看似表扬C#,实际不是。这个小问题来自这样的应用场景——以HTTPPOST的方式调用第三方API,第三方API不支持JSON传参,只能通过URLquerystring方式传参(a=1&b=2)。假设API的地址是https://www.clw9335.com/gl/index-htm-page-9.html,需要传递的参数是us......
  • 给url的query传参时的奇妙现象
    如果你要传一个时间参数,那么要小心啦!这个问题看得我头疼。见下面例子:letstart_time="23-10-1000:00:00"leturlTo=`/syslog?start_time=${start_time}`好的,要执行跳转了。此时urlTo在浏览器url栏中会变成:/syslog?start_time=2023-10-10%2000:00:00也就是空格变成了%20。......
  • django model 条件过滤 queryset.filter详细用法
    条件选取querySet的时候,filter表示=,exclude表示!=。querySet.distinct()去重复__exact精确等于like'aaa'__iexact精确等于忽略大小写ilike'aaa'__contains包含like'%aaa%'__icontains包含忽略大小写ilike'%aaa%',但是对于sqlite来说,contains的作用效果等同......
  • jquery uploadify动态更新配置参数方法uploadifySettings()
    1.使用scriptData给后台传参数的时候,必须声明'method':'GET',因为默认是POST2.$("#uploadify").uploadifySettings('scriptData',{'name':'liudong','age':22});动态更新配置参数$("#uploadify&quo......
  • jquery取redio、checkbox、select的值
    从jQuery1.3开始,前导的@符号已经被废除redio//取值varitem=$("input[name=radio_name]:checked").val();或$("input[name='radio_name']:checked").val();或$("[name='radio_name'][checked]").......
  • 使用jquery的html()判断Table元素为空时的bug
    在使用jquery的html()函数判断接点为空时从服务器端取数据,不为空时则不再取数据,这样减少与服务器的交互。使用元素<divid="test"></div>使用if(!$("#test").html())判断没有问题使用<tableid="test"></table>时出现问题,判断时总不为空,用alert($("#t......
  • jquery.form.js与file文件域、document.domain有冲突
    jquery.form.js的ajaxForm、ajaxSubmit方法无法成功执行回调函数:1.用response.getWriter().out()给客户端打印数据与<scripttype="text/javascript">document.domain="XXX.com";</script>使用jquery.form.js的ajaxForm、ajaxSubmit方法,......