CROI R1
$CROI$ $R1$
今天参加了一场比赛,什么比赛呢?CROI。
CROI是什么呢? $Challestend$ $Rehtorbegnaro$ $OI$。总的来说就是我们机房的一些神仙出的题啦。
这篇文章没有密码...被你发现啦!
T1:Challestend and Hyperrectangle
一道特别神仙的题目。
题意概述一下:给出一个高维立方体的 $n$ 个边长,将它的表面刷上漆,再将它切成单位小块,求恰好有 $i$ 面被着色的小立方体个数,对998244353取模.$i \in [0,2n]$,$4<=n<=30000,1<=a_i<=2^{64}$.
不会做呀...本来是有一点想法的,就是从一二三维的简单情况开始,进行类比,推出来一个比较科学的式子(它甚至可以过一个比较大的样例),但是对于 $a<=2$ 的情况就会崩溃,而且小一点的数据里每个都有这种情况,所以最后也没有分了。还是讲一下思路:
一维:两个顶点,$a-2$个无色立方体;
二维:四个顶点,$2\times(a-2+b-2)$个棱上的点,$(a-2)(b-2)$个无色立方体;
三维:八个顶点,$4\times(a-2+b-2+c-2)$个棱上的点,$2\times((a-2)(b-2)+(a-2)(c-2)+(b-2)(c-2))$个面上的点,$(a-2)(b-2)(c-2)$个无色的;
一维二维的可能比较难想,在这里放个图:


这题比较玄学的一点就是怎么分辨 $n$ 维立方体的“面”,因为按照一般的思路来说,只有三维立方体才有“面”。不过通过看样例,可以发现这道题里的“面”指的就是 $n-1$ 维的空间啦。
T2:Challestend and Anarchy Heap
这道题还是比较简单的(虽然我没做出来)。

题意概述:将斐波那契数顺次插入一个二叉堆,比较函数是随机的,问每次插入后堆顶的期望值的和,对998244353取模。$T<=400,1<=n<2^{64}$
期望具有线性性,所以只要算出每个点作为堆顶的概率。虽然比较函数坏掉了,但是树的形态还是固定的。可以发现每次插入新数后,堆顶要么是新数,要么不变。考虑是新数的概率:新数运气超好,一路随机上来到了根,也就是$\frac{1}{2^{x}}$,(x=当前点离根节点的距离),其它情况下都继承原答案。递推可以做到 $O(N)$,但是显然跑不过,所以可以矩乘,由于深度不固定,还得分段矩乘,有一点难写。
T3:Challestend and Summation
挺好的一道题,专治多项式学傻。
对以下式子求值:$n<=1e7,m<=1000$,F是一个 $m$ 项多项式。
$\sum_{i=1}^n\sum_{j|i}F(j) \space (\%998244353)$
首先给大家表演一下多项式学傻的人的做法:
$\sum_{j=1}^n\frac{n}{j}\sum_{i=0}^{m-1}a_ij^i$
$\sum_{j=1}^n\frac{n}{j}\sum_{i=0}^{m-1}a_i\sum_{k=1}^jS(i,k)\binom{j}{k}k!$
$\sum_{j=1}^n\frac{n}{j}\sum_{i=0}^{m-1}a_i\sum_{k=1}^jS(i,k)\frac{j!}{k!(j-k)!}k!$
$\sum_{j=1}^n\frac{n}{j}\sum_{i=0}^{m-1}a_i\sum_{k=1}^mS(i,k)\frac{j!}{(j-k)!}$
$\sum_{i=0}^{m-1}a_i\sum_{k=1}^mS(i,k)\sum_{j=1}^n\frac{n}{j}\frac{j!}{(j-k)!}$
第二类斯特林太妙啦,可以将很大的幂指数换成好求很多的阶乘!没错我当时就是这么想的。

后来又想了一下才发现...画到第一步时已经是一个很显然的整除分块形式,只要能快速求出 $f$ 的前缀和即可。而通过一些函数知识可以得到,$m$ 次函数的前缀和是一个 $m+1$ 次的函数,所以插值即可。注意这里不能写 $m^2$ 的插值,要优化一下到 $m$.
# include <cstdio>
# include <iostream>
# define R register int
# define ll long long using namespace std; const int mod=;
const int maxn=;
int n,m,a[maxn],k;
int ans,sx[maxn],f[maxn],inv[maxn],x[maxn],y[maxn]; ll cal (ll x)
{
ll s=,ans=;
for (R i=;i<m;++i)
{
ans=(ans+1LL*a[i]*s)%mod;
s=s*x%mod;
}
return ans;
} ll qui (ll a,ll b)
{
ll s=;
while(b)
{
if(b&) s=s*a%mod;
a=a*a%mod;
b>>=;
}
return s;
} ll S (int v)
{
if(v<=m) return y[v];
ll ans=;
for (R i=;i<=m;++i)
ans=(ans+1LL*y[i]*sx[i]%mod*(1LL*f[v]*inv[v-i]%mod*f[v-i-]%mod*inv[v--m]%mod))%mod;
return ans;
} int main()
{
scanf("%d%d",&n,&m); k=m;
for (R i=;i<m;++i) scanf("%d",&a[i]);
for (R i=;i<=m;++i)
{
x[i]=i;
y[i]=cal(i);
y[i]=(y[i]+y[i-])%mod;
}
f[]=;
for (R i=;i<=n;++i) f[i]=1LL*f[i-]*i%mod;
inv[n]=qui(f[n],mod-);
for (R i=n;i>=;--i) inv[i-]=1LL*inv[i]*i%mod;
for (R i=;i<=k;++i)
{
sx[i]=;
for (R j=;j<=k;++j)
{
if(i==j) continue;
sx[i]=1LL*sx[i]*(x[i]-x[j]+mod)%mod;
}
sx[i]=qui(sx[i],mod-);
}
int l=,r;
while(l<=n)
{
r=n/(n/l);
ans=(ans+1LL*(n/l)*((S(r)-S(l-))%mod+mod)%mod)%mod;
l=r+;
}
printf("%d\n",ans);
return ;
}
C
T4:Challestend and the Second War against Duliu
一看题目就可以发现这道题“Duliu”的本质了。
简单的说:给定一个长度为 $n$ 的数列以及 $n$ 个观察者,每个观察者可以看到 $[l_i,r_i]$ 的一段区域,要求支持如下操作:
对数列区间加;查询一段编号连续的观察者所能看到的值的和;修改某个观察者的观察区域。
$n,m<=10^5$
这题能做?$O(N\sqrt{N}logN)$ 的做法其实不是特别难想,但是似乎会被卡常。另注:这题的最大难点在于读题。
刚刚听了题解,感觉学到了很多东西,原来分块可以做到 $O(\sqrt{N})$ 区间加,$O(1)$ 区间查询,实在是非常神奇。
那么这里先写抄一份正常解法:
首先考虑分块维护区间和,有一个比较巧妙的做法是对于每个块维护和,再对于每个点维护块内的前后缀和,这样就可以做到 $O(1)$ 区间查询了。如果直接把这个做法扩展到区间加上复杂度就崩了,因为每次要打很多的标记。考虑对于每个块维护一个delta,表示未下放的标记...但是每个点得到的标记的实际值和它的位置是有关的,所以这里有两个做法:1.差分;2.delta标记变为维护一个等差数列的首项和公差;再用这种巧妙的分块代替原先的树状数组,即可通过本题 $O(N\sqrt{N})$
下面是我的乱搞做法:
对于观察者序列分块,每个块内维护一个长度为 $n$ 的数组,每个位置上的值表示这个块内的观察者有多少能看到这个位置。修改时,对于每个块计算贡献;查询时,整块可以直接得到答案,散点暴力查询。修改观察区间则更简单,只需要在相应的块内做一些处理就可以了。这里需要一个区间修改的数据结构,选择树状数组。
这样做的问题在于每个操作之间的复杂度过于不平衡,所以用 a,b,c 表示三个操作的操作次数,m表示分块大小,得到下式:
$a\frac{N}{M}logN+b\frac{N}{M}+bMlogN+clogN$
这样就可以用...模拟退火得到最优的块大小!
---shzr
CROI R1的更多相关文章
- PP66 EEPPPPMM SSyysstteemm AAddmmiinniissttrraattiioonn GGuuiiddee 16 R1
※★◆●PP66 EEPPPPMM SSyysstteemm AAddmmiinniissttrraattiioonn GGuuiiddee 16 R1AApprriill 22001166Conte ...
- P6 EPPM Installation and Configuration Guide 16 R1 April 2016
P6 EPPM Installation and Configuration Guide 16 R1 April 2016 Contents About Installing and ...
- P6 EPPM 16 R1 文档和帮助系统
P6 EPPM 16 R1 文档和帮助系统 https://docs.oracle.com/cd/E74894_01/ http://docs.oracle.com/cd/E68202_01/clie ...
- P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1
P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1 May ...
- 位运算取第一个非0的位 r & (~(r-1))
Single Number III Given an array of numbers nums, in which exactly two elements appear only once and ...
- Intersoft Mobile Studio 2013 R1 SP1 Crack
Intersoft Mobile Studio 2013 R1 SP1 (iOS, Android & WinR) Leave a comment tweet inShare ...
- 洛谷3月月赛 R1 Step! ZERO to ONE
洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...
- SDOI 2019 R1游记
$SDOI$ $2019$ $R1$游记 昨天才刚回来,今天就来写游记啦! Day -5: 做了一下去年省选的Day1,感觉很神仙. Day -4: 做了一下去年省选的Day2,感觉还是很神仙. Da ...
- SDOI2017 R1做题笔记
SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30
随机推荐
- python中的魔法属性
目录 1. __doc__ 2. __module__ 和 __class__ 3. __init__ 4. __del__ 5. __call__ 6. __dict__ 7. __str__ 8. ...
- python基础学习(七)列表
列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组(例如java.c) 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列表 ...
- js 随机点名
1.对象构造函数 设置节点与人名 constructor({ printElement, startElement, stopElement , person }) { this.list = per ...
- easyUI按钮图表对照大全
easyUI图标与对照类的对应关系:
- css中的颜色
我常用的是win10里面的自带的3D画图工具里面的颜色表 CSS 设置颜色的几种方式: 1.颜色名 2.rgb值 3十六进制表示 4. HSL color values CSS3 adds numer ...
- HTML元素被定义为块级元素或内联元素。那么什么是块级元素,什么是内联元素呢
块级元素(block)特性: 块级元素在浏览器显示时,通常会以新行来开始(和结束). 宽度(width).高度(height).内边距(padding)和外边距(margin)都可控制;就像以前用到的 ...
- 从零开始设计数据大屏—基于Vue ZT
虽然已经决定这个项目用Wyn来做了,但是,了解一下如何从头开始写一个数据大屏还是挺有好玩的. ------------- 为什么要做数据大屏? 现如今的大数据逐渐发挥出了它的力量,并无形的改变着我们的 ...
- Android 四大组件之broadcast的理解
Android广播的两种类型: 1.静态广播 2.动态广播 静态注册广播: Manifeast中的代码块: <receiver android:name=".broadcast.MyS ...
- 杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》
课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲 师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Developmen ...
- 同一个菜品商家中心和erp价格显示不一致解决方案FAQ
1.适用场景: 2.问题原因:子账号在商家中心改了价格 3.解决办法: (1).子账号登录商家后台修改 再同步(2).ERP上商品管理 修改价格