10.6_ACM小记

这里写图片描述
A:
数大(2^31),范围小(1e6)
筛出sqrt(n)范围内的素数(约为sqrt(n)/10个)
因为实际上是1000000的范围,直接枚举处素数然后筛,跳着跳着筛倍数 LL i=l/p*p;i<=r;i+=p
细节很多:
j要开LL ,为什么? 最后一次会加爆
当l==1时记得1不会被筛掉,但不是素数
当枚举到的恰好就是那个素数时,不能筛

B:
容斥 0~m-17中 可以整除任一a的数个数,因为 17<ai<2^31 乘多了就大于m,减枝即可
MAXINTlog17=7.5841684490768529784528160299273
八层 C(1,30)+C(2,30)+…C(8,30) 约为 8*1e6 可过

nnum要LL,乘爆WA十发。

void dfs(int pos,LL num,int dep)
{
    if(pos==(n+1)||num>m) return;
    LL nnum=1LL*a[pos]*1LL*num/gcd(a[pos],num);
    int select=(dep%2==0)?-1:1;
    ans+=select*m/nnum;
    dfs(pos+1,num,dep);
    dfs(pos+1,nnum,dep+1);
}
dfs(1,1,1);

C:
DP,以每个点为右下角的最大正方形边长。
f[i][j]=min(f[i-1][j-1],f[i-1][j],f[i][j-1])
//呜呼,我DP烂,想不到和上面和左边再比两次,只好再DP最近的上面的1和左边的1。
D:
古神:“遇到绝对值不拆你能做的出题?”
好了现在我知道遇到绝对值必拆了。(eg 曼哈顿->切比雪夫)
可更新: 2(ti-tj)>=|pi-pj|
变为:
2ti-pi>=2tj-pj
2ti+pi>=2tj+pj
令X=2t-j,Y=2t+j
三维?加起来就发现就满足了ti>=tj
//写成pi-2ti<=pj-2tj死活看不出来以为是三维偏序。
按X 排序,树状数组维护Y比他小的最大DP值。

E:
看起来很麻烦?其实是最小生成树。
新建个root,打井就是与root连边,建水渠就是建边, 最后其实是跑n+1个点的最小生成树 。
F:
把串扔trie中,在分叉处统计LCP。
最简的的方式是计算每条边的贡献,这样不用分类讨论
G:
雪球素数只有83个。
73939133。
题面致敬PoPoQQQ
H:
常用的把问题转化为每个元素的贡献。
每个元素对哪些顺序对有贡献 =前面比他小的*后面比他大的,树状数组维护
I:
毒瘤出题人。
割点求出来,计算带来的变化。
其他的割了不改变连通性,减去自己就行。
不必缩点,就像遍历树一样遍历一遍就行。
J:
看做一个方格/三个方向向量
暴力模拟
这里写图片描述
扔map里

rank
这里写图片描述

一个小插曲:
古神:这次不A我就不吃饭。
Accepted
古神站起来走出了机房。
根据上下文我们推断他是去吃饭了,于是也走了。

古神只是转一圈回来了:咦?!我的队友呢

顺便我们的队名XGH槽点很多地可爱


这次真的很开心,我们组的dalao们都非常可爱!!!
觉得自己平时严谨也好,思维速度,想题的方式切入点也好,都还有很长的路要走。不能只是说去接触更多题型,需要提升的是自身。

私心希望下次也能是这三个人一组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值