csp-s模拟测试59(10.4)「Reverse」(set)·「Silhouette」(容斥)

A. Reverse



菜鸡wwb又不会了.....

可以线段树优化建边,然而不会所以只能set水了

发现对于k和当前反转点固定的节点x确定奇偶性所到达的节点奇偶性是一定的

那么set维护奇偶点,然后每次set找点删点注意边界

set在删点后原来的迭代器会玄学出错,xuefeng好像被坑了,所以lowerbound一下就不用++了

B. Silhouette


很玄学的容斥

考场多QJ了18分,因为如果1-n是个序列,好像就是一个简单的容斥.....

然后用能发现是以“L”形的形状向右推的,随便乘一下就出来了....

正解的话就很困难了2333333

将a,b排序,没有影响。

然后发现对于某个节点单独考虑贡献,我们从大到小枚举值,然后当s<min(a[i],b[j])时

当前节点就可以贡献了,因为我们排过序所以每次的形状不是“L”型就是矩形

那么我们开始容斥了,然后与xuefeng看(tui)了一下午,最后看大佬WD博客,大概明白了。

其实对于一个L型矩形我们分成两部分,然后我们设f[i]表式至少有i行最大值不是s的方案

用二项式反演可以推出恰好0行的方案数,(然而还是不会二项式反演QAQ)

$f[i]=\sum\limits_{i=0}^{a}C_a^i \times (S^i \times ( (S+1)^{A-i} - S^{A-i} ) )^b \times ( S^i \times (S+1)^{a-i} )^{B-b}$

有时间再解释把...

原文地址:https://www.cnblogs.com/Wwb123/p/11623422.html

时间: 2024-11-05 23:20:28

csp-s模拟测试59(10.4)「Reverse」(set)·「Silhouette」(容斥)的相关文章

csp-s模拟测试57(10.2)「天空龙」&#183;「巨神兵」&#183;「太阳神」

题目是古埃及神话??? A. 天空龙 傻逼模拟,看来没有滑天下之大稽QAQ,也没有打错快读(大雾...) B. 巨神兵 难度爆增,一脸懵比..... 60分状压: 因为是求有向图,关于有向图好像拓扑用的很多,考虑到每个图的拓扑序是一定的 那么我们可以借此转移,设f[i][j]为当前点的状态为i,出度为零的点的度数为j 向下一层转移时枚举下一层的点集,那么点集S中每个点一定要和j连边,可以和i中除j以外的点连边 然后对于每个点cnt1,表示除j以外与i的连边,cnt2表示与j的连边,该点的贡献为2

[考试反思]1004csp-s模拟测试59:惊醒

一句话:我看错考试时间了,我以为11:30结束,T2T3暴力没来得及交. 为什么考试的时间忽然变了啊...没转过来 一定要看清考试的起止时间! 虽说T2T3连爆搜都没打,只打特殊性质只有32分.爆搜分还挺高的. 当特殊性质不好扩展时,记得把爆搜打上. 本来是想T1先送上暴力,然后尝试肝T2,然后是T3暴力,有时间再回来优化T1. 但是整场考试时间是崩的,也没回T1...然而T2T3 注意分数与时间的权衡. T1: BFS. 二营长打法极其简单.因为是BFS所以一个点不会被多次更新. 那么一次更新

csp-s模拟测试56(10.2)Merchant「二分」&#183;Equation「树状数组」

又死了......T1 Merchant 因为每个集合都可以写成一次函数的形式,所以假设是单调升的函数,那么随着t越大就越佳 而单调减的函数,随着t的增大结果越小,所以不是单调的??? 但是我们的单调只需凭借t时刻的sum值是否大于S即可 如果某个单减的集合符合情况,那么他在t==0时就符合情况 如果不符合,那么他就不会作出贡献 所以可以二分 T2 Equation 一开始以为是高斯消元??? 当然不是..... 把每个xi均用x1表示,那么我们发现,对于深度奇偶不同的点,他的表示方式是不同的,

[CSP-S模拟测试59]题解

以后题解还是单独放吧. A.Divisors 根号筛求所有数的因子,扫一遍去重统计即可. #include<cstdio> #include<iostream> #include<cstring> #include<vector> #include<map> using namespace std; const int N=205; int a[N],m,n; map<int,int> bu; vector<int> re

CSPS模拟测试59

这场考得我心态爆炸......... 开场T1只会$n^{2}$,然后发现bfs时每个点只需要被更新一次,其他的更新都是没用的. 也就是说,我们可以只更新还没被更新的点? 于是我先YY了一个链表,发现在链表中删除一个数之后,用它更新其他点的时候,就没有办法找到它的前趋后继了,用之前的可以被卡成$O(n^{2})$,大样例都跑了2s+,然后就死了. 然后才想到set,可以保证每个点只被更新一次,然而发现我对set一无所知,一直以为begin指向为空,而end指向最大元素,调了好久,后来发现是反的.

模拟测试59

T1: 翻转区间相当于位移,但是边界附近的点要特判. 可以处理出最左侧和最右侧的对称轴,然后分类讨论每个数的位置,即可知道他能移动到的区间. 用set进行bfs即可,相同的点不会被遍历两次. 也可以线段树优化建边,注意优化建边跑双端队列bfs一定要把出边的权值设为1. 时间复杂度$O(nlogn)$. T2: 将所有的数排序,从大到小枚举. 每次扩展和枚举的数相同的行和列,这样扩展出的区间为矩形或L形. 在同一个区间内数的上界限制相同,而互不影响. 每个矩形或L形的方案数可以用容斥求出. 先考虑

「PKUWC2018」猎人杀(概率+容斥+分治NTT)

https://loj.ac/problem/2541 很有意思的一道题目. 直接去算这题话,因为分母会变,你会发现不管怎么样都要枚举顺序. 考虑把题目转换,变成分母不会变的,即对于一个已经删过的,我们不把它从分母中剔除,但是,每一次的选择需要一直选直到选了一个没有被删过的. 然后再考虑怎么计算,这时就可以容斥了: 1既然要最后删除,我们枚举一个集合S一定在它之后被删,其它的随意. 设\(sw\)为\(\sum_{i\in S}w[i]\),\(W=\sum_{i=1}^n w[i]\) 最后答

微信在线信息模拟测试工具(基于Senparc.Weixin.MP)

目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具在线DEMO:http://weixin.senparc.com/SimulateTool Senparc.Weixin.MP是一个开源的微信SDK项目,地址:https://github.com/JeffreySu/WeiXinMPSDK (其中https://github.com/Jeffrey

noip模拟测试11

T1:string 第一眼秒出思路,这不就是排序那道题的加强版吗? 然而歪?解复杂度虽然是对的,但常数过大,竟被卡到70 歪?解:(实际上std写的就是这个,但据说std被卡掉了 OAO) 因为字符集很小,所以我们可以把区间排序改为区间查询和覆盖 即:先查询区间内所有字符的个数,再从左端点开始按照大小关系依次将长度为字符个数的区间修改为该字符. 期望复杂度O ( 26*mlogn ),实际复杂度O ( 26*mlogn*(巨大的常数) ) 所以需要一(feng)定(kuang)的卡常 正?解: