摘要:
题面传送门 对于这道题,用递推的思想。 设$f_i$表示$i$这个数的$lqp$拆分的值,那么考虑一下,除了自身的拆分,其他拆分一定是$x\times(i-x)$,其中$x$是一个多数组成的集合,而$(i-x)$是一个单个的数,然后问题就变成了怎么求$x$这个集合的$lqp$拆分的答案。因为这是递推 阅读全文
摘要:
题面传送门 既然是算期望,所以可以用$\frac$来求得。 把这道题抽象成一个模型,$i$个节点是在$i-1$个节点的树上再挂一个节点,那么就会有两种情况:加一个点与不加点,这就是卡特兰数模型,所以可以用通项公式。 \(h_n=\frac{2n!}{n!(n+1)!}\) 所以带进去可得 \(ans 阅读全文
摘要:
题面传送门 首先一段告诉我们这$n$条线任意三线不共点,任意两线不平行。 所以这个图像可以反过来。 那么第一层一定是$2$段,一个焦点。 第二层那一个焦点可以延伸出$2$个焦点,所以有四段。 以此类推。 而又因为它可以反过来,所以应该考虑两种情况。 代码实现: #include<cstdio> #d 阅读全文
摘要:
题面传送门 这题因为他只能对头尾两个进行操作,所以根据分治思想,只要考虑头尾两个就好了 代码实现: #include<cstdio> #define abs(x) ((x)>0?(x):-(x)) using namespace std; int t,n,a[100039],flag,tot,ans 阅读全文
摘要:
题面传送门 也很简单,统计二进制下有几位就好了(即$log^2n$) 代码实现: #include<cstdio> using namespace std; int m; int ans; int main(){ scanf("%d",&m); while(m){ m>>=1; ans++; } p 阅读全文
摘要:
题面传送门 简单博弈论,直接判奇偶就行了 代码实现: #include<cstdio> using namespace std; int n; int main(){ scanf("%d",&n); while(n){ if(n&1) printf("Bob\n"); else printf("Al 阅读全文
摘要:
题面传送门 对于这道题,明显可以$dp$,将一张表预处理出来。 我们可以设$f_{i,j,x,y,k}$表示左下角为$i,j$右上角为$x,y$,切大小为$k$的,转移时横竖各枚举切分点与$k$的分配转移,时间复杂度$O(305\times 502)=O(1)$ 不过我们发现,实际上这道题任意大小一 阅读全文
摘要:
题面传送门 这道题一眼就是二分,重点是$check$函数怎么写。 $62$分思路:把所有点按权值排序,每次枚举大于$mid$的点,枚举对角线并进行判断,一有满足条件的就退出,期望复杂度$O(n2m2log2(max{a_i}))$,咋一看复杂度比暴力还高,但在随机数据下摊还分析一下只有$O(nm\s 阅读全文