当前位置: 首页 > news >正文

安徽建设监理协会/品牌关键词优化

安徽建设监理协会,品牌关键词优化,免费做网站怎么做网站619,开门红营销活动方案废话 虽然说是题解,但是并没有贴代码…… 因为只写了部分的题,剩下的题因为种种原因 (太懒了) 没有写代码,于是想着全部都不贴好了qwq。 最后的排名是 595959,在这里记录一下。 比赛传送门 T1 Drink …

废话

虽然说是题解,但是并没有贴代码……

因为只写了部分的题,剩下的题因为种种原因 (太懒了) 没有写代码,于是想着全部都不贴好了qwq。

最后的排名是 595959,在这里记录一下。

比赛传送门

T1 Drink

枚举每种饮料,求出只喝这种需要的数量,更新一下答案即可。

T2 GPA

枚举每一科成绩即可,可以注意到,对于同一个绩点,只需要枚举成绩为该绩点对应的最低分就够了。

T3 Dec

一开始以为是什么神奇的数论,写了发贪心交上去WA掉了嘤嘤嘤。

然后一看数据范围,a,ba,ba,b 只有 100010001000,于是直接写一发dp就可以了,令 f[i][j]f[i][j]f[i][j] 表示 a=i,b=ja=i,b=ja=i,b=j 时的最优解,那么有:f[i][j]=max⁡(f[i−1][j],f[i][j−1])+[gcd⁡(i,j)=1]f[i][j]=\max(f[i-1][j],f[i][j-1])+[\gcd(i,j)=1]f[i][j]=max(f[i1][j],f[i][j1])+[gcd(i,j)=1]

T4 Civilization

先枚举作为城市的点,可以算出起点到该点需要的时间。

产生新的人口时,肯定贪心地让它去附近 a[i][j]a[i][j]a[i][j] 最大的点,就这样模拟一下即可。

T5 Rotate

由于 aia_iai 从外到内不减,所以对于第 iii 层的黑段,不存在两个黑段同时与第 i+1i+1i+1 层的黑段相连,所以这是一个森林的形态。

连通块数=点数-边数,特别的,第 nnn 层的贡献为 a[n]2\dfrac {a[n]} 22a[n],考虑第 iii 层的贡献。

考虑第 i+1i+1i+1 层的一个黑段与第 iii 层的黑段相交的概率。对于第 iii 层来说,一个黑段加一个白段为一个循环,长度为 2a[i]\dfrac 2 {a[i]}a[i]2,考虑在这段内一个 i+1i+1i+1 层的黑段与第 iii 层的黑段不相交的概率,那么它能选择起点的区间长度为 1a[i]−1a[i+1]\dfrac 1 {a[i]}-\dfrac 1 {a[i+1]}a[i]1a[i+1]1,除以总长度得到概率 a[i+1]−a[i]2a[i+1]\dfrac {a[i+1]-a[i]} {2a[i+1]}2a[i+1]a[i+1]a[i],则相交的概率为 a[i+1]+a[i]2a[i+1]\dfrac {a[i+1]+a[i]} {2a[i+1]}2a[i+1]a[i+1]+a[i],再乘上黑段数量 a[i+1]2\dfrac {a[i+1]} 22a[i+1] 得到总概率也是总边数期望 a[i+1]+a[i]4\dfrac {a[i+1]+a[i]} 44a[i+1]+a[i]

而第 iii 层的贡献:点数 −- 边数就是 a[i]2−a[i+1]+a[i]4=a[i]−a[i+1]4\dfrac {a[i]} 2-\dfrac {a[i+1]+a[i]} 4=\dfrac {a[i]-a[i+1]} 42a[i]4a[i+1]+a[i]=4a[i]a[i+1]

所有层的贡献加起来就是答案,即 a[1]+a[n]4\dfrac {a[1]+a[n]} 44a[1]+a[n]

T6 Matrix

可以将点分为四类,即按照 cntcntcnt 的大小分类。

在每一类点中,再考虑其与原点的距离,那么每一类点可以分为若干层,每一层距离相同。

那么维护一个堆,堆内存每一类点离原点最近的那一层,然后每次取出距离 ×cnt\times cnt×cnt 最小的层贡献一下答案,然后将该类中的后一层加入堆中。

可以发现,对于一类点,统计其前 ttt 层的点数,大概是个与 ttt 相关的等差数列的公式,即包含 t2t^2t2 这一项,所以增长速度很快,于是总时间复杂度只需要 O(k)O(\sqrt k)O(k)

细节比较多,做法也和官方题解有点差异,顺手贴下代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long longint T;ll a[10],k,ans,tot;
struct node{ll bel,dis,val;};
struct heap{node dui[10];int t;void init(){t=0;}void add(ll bel,ll dis,ll val){dui[++t]=(node){bel,dis,val};for(int i=t-1;i>=1;i--)if(dui[i+1].val<dui[i].val)swap(dui[i],dui[i+1]);else break;}node pop(){node re=dui[1];t--;for(int i=1;i<=t;i++)dui[i]=dui[i+1];return re;}
}dui;int main()
{scanf("%d",&T);while(T--){for(int i=1;i<=4;i++)scanf("%lld",&a[i]);scanf("%lld",&k);a[5]=1000000000000000000ll;dui.init();dui.add(1,0,0);dui.add(2,a[1]+1,(a[1]+1)*3);dui.add(3,a[2]+1,(a[2]+1)*2);dui.add(4,a[3]+1,a[3]+1);ans=tot=0;while(tot<k){node x=dui.pop();ll i=x.bel,dis=x.dis,val=x.val,len;if(x.dis<=a[i]){if(i==1&&dis==0)tot++;else{len=dis+1;if(i>1&&dis-a[i-1]<=a[i-1])len-=a[i-1]-(dis-a[i-1])+1;if(tot+4*len-4> k)ans+=(k-tot)*x.val,tot=k;else tot+=4*len-4,ans+=(4*len-4)*x.val;}}else{len=a[i]-(dis-a[i])+1;if(i>1&&dis-a[i-1]<=a[i-1])len-=a[i-1]-(dis-a[i-1])+1;if(tot+4*len>k)ans+=(k-tot)*x.val,tot=k;else tot+=4*len,ans+=4*len*x.val;}x.dis++;if(x.dis>2*a[i])continue;x.val=x.dis*(4-x.bel+1);dui.add(x.bel,x.dis,x.val);}printf("%lld\n",ans);}
}

T7 Mosquito

可以比较容易发现一个网络流做法,先二分一个时间,然后以每个位置作为一个点,有窗户的位置与原点连边,流量为初始蚊子数,以及每个点都与汇点连边,流量为 111,最后窗户与在时间内能到达的点连边,流量无限。

但是由于总点数太大,会T的半分没有。

考虑到很多点的连边其实是相同的,我们可以将这些点合并起来,然后将他们的合并点与汇点连边,流量为这些点的点数。

具体来说,设 f[i][sta]f[i][sta]f[i][sta] ,其中 stastasta 是一个二进制数表示状态,第 iii 位为 111 表示在 iii 时刻内能到达第 iii 个窗户,然后 f[i][sta]f[i][sta]f[i][sta] 表示这样的点的数量,每次二分时 nmknmknmk 求出 fff,然后建图泡网络流即可。

T8 Function

推柿子:
S(n)=∑i=1n∑j=1ij[gcd⁡(j,ij)=1]=∑i=1ni∑j=1⌊ni⌋[gcd⁡(i,j)=1]=∑k=1nμ(k)∑i=1⌊nk⌋ik∑j=1⌊nik2⌋1=∑k=1nμ(k)∑i=1⌊nk⌋ik⌊nik2⌋\begin{aligned} S(n)&=\sum_{i=1}^n\sum_{j=1}^i j [\gcd(j,\frac i j)=1]\\ &=\sum_{i=1}^n i\sum_{j=1}^{\lfloor \frac n i \rfloor} [\gcd(i,j)=1]\\ &=\sum_{k=1}^n\mu(k)\sum_{i=1}^{\lfloor \frac n k \rfloor} ik \sum_{j=1}^{\lfloor \frac n {ik^2} \rfloor}1\\ &=\sum_{k=1}^n\mu(k)\sum_{i=1}^{\lfloor \frac n k \rfloor} ik \lfloor \frac n {ik^2} \rfloor\\ \end{aligned} S(n)=i=1nj=1ij[gcd(j,ji)=1]=i=1nij=1in[gcd(i,j)=1]=k=1nμ(k)i=1knikj=1ik2n1=k=1nμ(k)i=1knikik2n

可以发现,当 k>nk>\sqrt nk>ni>⌊nk2⌋i>\lfloor \dfrac n {k^2} \rfloori>k2n 时,后面的 ⌊nik2⌋\lfloor \dfrac n {ik^2} \rfloorik2n 必然为 000,所以可以更改一下枚举上限:
=∑k=1nμ(k)k∑i=1⌊nk2⌋i⌊nik2⌋\begin{aligned} &=\sum_{k=1}^{\sqrt n} \mu(k)k \sum_{i=1}^{\lfloor \frac n {k^2} \rfloor} i \lfloor \frac n {ik^2} \rfloor\\ \end{aligned} =k=1nμ(k)ki=1k2niik2n

G(n)=∑i=1ni⌊ni⌋G(n)=\sum_{i=1}^n i\lfloor \dfrac n i \rfloorG(n)=i=1niin,带入得:
=∑k=1nμ(k)kG(⌊nk2⌋)=\sum_{k=1}^{\sqrt n} \mu(k)k G(\lfloor \frac n {k^2} \rfloor) =k=1nμ(k)kG(k2n)

发现 GGG 是可以用整除分块求的,然后答案也可以用整除分块求,于是就做完了,时间复杂度为:
∑i=1nni2=n∑i=1n1i=nln⁡n\sum_{i=1}^{\sqrt n} \sqrt{\frac n {i^2}}=\sqrt n\sum_{i=1}^{\sqrt n} \frac 1 i=\sqrt n\ln\sqrt n i=1ni2n=ni=1ni1=nlnn

http://www.lbrq.cn/news/1253251.html

相关文章:

  • php网站制作过程中遇到的问题及解决办法/新产品推广方案怎么写
  • 命理网站开发/营销网站的建造步骤
  • 临桂区住房和城乡建设局门户网站/免费推广公司
  • 宝山网站建设哪家好/免费b2b推广网站大全
  • 门户网站开发多少钱/seo搜索优化是什么意思
  • web前端就业岗位/短视频seo营销系统
  • 浏览器禁止网站怎么做/百度浏览器极速版
  • 哪些网站用vue.js做的/自己怎么优化网站
  • 网站地址搜索/排名优化怎么做
  • 网站建设优化服务新闻/株洲网站设计外包首选
  • 网站开发工程师薪资待遇/投诉百度最有效的电话
  • 法律网站建设实施方案/推推蛙品牌策划
  • 企业网站搭建流程/360搜索引擎下载
  • 湛江做网站设计公司/百度官方网平台
  • 给用ps做的网站加div/今日热点头条
  • qq云 wordpress/seo基础篇
  • 河南工程建设信息网站/网络营销的五大特点
  • 常用来做网站的首页/南京seo优化推广
  • 网站 后台 数据 下载/用广州seo推广获精准访问量
  • 企业网站建设客户需求调查问卷/项目宣传推广方案
  • 高端网站的制作/网络推广服务合同
  • 安防网站建设/沈阳网络seo公司
  • 重庆招聘网/seo长尾关键词优化
  • 朝阳区网站建设推广seo/北京seo优化wyhseo
  • 网站建设佰金手指科杰二九/百度投放广告
  • 网站建设静态代码/天津seo招聘
  • 网站建设行业/什么是竞价
  • 网站建设公司 南宁/防恶意竞价点击软件
  • 做网站的靠什么挣钱/windows优化大师官方网站
  • 做一名网站编辑要具备什么资格/百度手机网页版入口
  • 并发编程常见问题排查与解决:从死锁到线程竞争的实战指南
  • 2025国赛数学建模C题详细思路模型代码获取,备战国赛算法解析——决策树
  • LOOP Finance:一场 Web3 共和国中的金融制度实验
  • Pycaita二次开发基础代码解析:参数化模板创建与设计表驱动建模
  • 嵌入式硬件中三极管推挽电路控制与实现
  • 贯穿全生命周期,生成式AI正在重塑游戏行业