星际旅行

0分

瞬间爆炸。

考试的时候觉得这个题怎么这么难,

打个dp,可以被儿子贡献,可以被父亲贡献,还有自环,叶子节点连边可以贡献,非叶子也可以贡献,自环可以跑一回,自环可以跑两回,

关键是同一子树会贡献,不同子树也会贡献。

这还不是欧拉图欧拉路问题,awsl

然后我就放弃了这个题

考完试看题解,tm一个大水题

虽然好像不算水,

思考两个点之间因为连接的是无向边,所以所有点入度出度都为2。

先不考虑自环

如果把两个点之间无向边拆成两个有向边,那么问题就变成去掉两个边使原图存在欧拉路。

于是乎,问题就变得很简单了

如果有自环

可以去掉两个自环,或者去掉一个自环和一个边

砍树

做砍树时问大佬说,“这是一个数论分块”模板题

我:???

原来只有我没学过数论分块吗?

https://www.cnblogs.com/0xfffe/p/9648943.html

略微理解了理解,写的非常清楚

你说这是向下取整,不是向上取整,砍树要向上取整,那篇博客不适用于砍树?

确实不适用

我们要分块的是等式右面的$\sum_{i}^{n} a[i]  +k$除以d

因为C是固定的,所以这是一个分段函数,我们要处理的是不同的右面的值最后再跟左面对应

我们然后f存下这一段具体的值,

r存下具体右端点

然后就完了

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 11000000
ll l=1,r,n,m,a[A],dl[A],R[A],f[A],zz=0,num=0,ans=0,sum=0;
void precl()
{
while(1){
if(!(sum/l)) break;
r=sum/(sum/l);
f[++num]=sum/r;
R[num]=r;
l=r+1;
}
} int main(){
scanf("%lld%lld",&n,&m);
sum=m;
for(ll i=1;i<=n;i++){
scanf("%lld",&a[i]);
sum+=a[i];
}
precl();
for(ll j=1;j<=num;j++)
{
ll t=0;
for(ll i=1;i<=n;i++){
t+=ceil((double)a[i]/(double)R[j]);
}
// printf("f=%lld R=%lld\n",f[j],R[j]);
if(t<=f[j]) ans=R[j];
}
cout<<ans<<endl;
}

以下是我完全错误的解释

设$k\times i-p=N$ 向上取整设

$\large{\lceil \frac N{i+d} \rceil}=k$

于是$k\times (i+d)-p2=N$

同样得出p2=p+kd

就是照猫画虎的一个过程

底下我不具体推了,

$\large \left \lceil \frac N{\left \lfloor \frac Ni \right \rfloor } \right \rceil$

所以对砍树这道题来说,这确实是个模板题,分析发现这是一个分段函数,维护每一段大小相同,维护l,r下一个l=r+1

具体来说

$\large \left \lceil \frac {a[i]}{d} \right \rceil$不是为我们具体分块的值

$\large \lfloor \frac Ni \rfloor$才是

然后等式右面是$\sum_{i}^{n} a[i]  +k$再除以d

这个N就是$\sum_{i}^{n} a[i]  +k$

那么这个题就迎刃而解了。

超级树

等我AC了可怜与超市

NOIP模拟测试5「星际旅行·砍树·超级树」的更多相关文章

  1. NOIP模拟测试17「入阵曲&#183;将军令&#183;星空」

    入阵曲 题解 应用了一种美妙移项思想, 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k==0$可以转化为 $sum[r]\% k==sum[l-1]\%k$开个桶维护一 ...

  2. NOIP模拟测试14「旋转子段·走格子·柱状图」

    旋转子段 连60分都没想,考试一直肝t3,t2,没想到t1最简单 我一直以为t1很难,看了题解发现也就那样 题解 性质1 一个包含a[i]旋转区间值域范围最多为min(a[i],i)----max(a ...

  3. NOIP模拟测试11「string&#183;matrix&#183;big」

    打的big出了点小问题,maxx初值我设的0然后少了10分 第二题暴力打炸 第一题剪了一些没用的枝依然40分 总分70 这是一次失败的考试 string 想到和序列那个题很像,但我没做序列,考场回忆学 ...

  4. NOIP模拟测试19「count·dinner·chess」

    反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...

  5. 20190803 NOIP模拟测试12「斐波那契(fibonacci)· 数颜色 · 分组 」

    164分 rank11/64 这次考的不算太差,但是并没有多大的可能性反超(只比一小部分人高十几分而已),时间分配还是不均,T2两个半小时,T1半个小时,T3-额十几分钟吧 然额付出总是与回报成反比的 ...

  6. NOIP模拟测试10「大佬·辣鸡·模板」

    大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...

  7. NOIP模拟测试38「金·斯诺·赤」

    金 辗转相减见祖宗 高精 #include<bits/stdc++.h> using namespace std; #define A 2000 #define P 1 #define N ...

  8. NOIP模拟测试28「阴阳·虎·山洞」

    写这几个题解我觉得我就像在按照官方题解抄一样 阴阳 题解 将题目中给的阴阳看作黑色和白色 首先我们观察到最后生成图中某种颜色必须是竖着单调递增或竖着单调递减 类似这样 否则不满足这个条件 但合法染色方 ...

  9. NOIP模拟测试30「return·one·magic」

    magic 题解 首先原式指数肯定会爆$long$ $long$ 首先根据欧拉定理我们可以将原式换成$N^{\sum\limits_{i=1}^{i<=N} [gcd(i,N)==1] C_{G ...

随机推荐

  1. Centos7下搭建gitbook环境踩坑记录

    1.安装npm yum -y install npm 2.配置npm仓 npm config set registry https://mirrors.tencent.com/npm/ 3.安装git ...

  2. web scraper

    参考:https://sspai.com/u/skychx/updates https://www.jianshu.com/p/76cad8e963b5 :nth-of-type(-n+100) 元素 ...

  3. HEVC学习(一) —— HM的使用

    http://blog.csdn.net/hevc_cjl/article/details/8169182 首先自然是先把这个测试模型下载下来,链接地址如下:https://hevc.hhi.frau ...

  4. linux-TCP多线程的并发服务器- 以言责人甚易,以义持己实难!!!

    1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <ti ...

  5. java基础——初识面向对象

    面向对象 面向过程&面向对象 面向过程思想 步骤请简单:第一步做什么,第一步做什么 面向过程适合处理一些较为简单的东西 面向对象思想 物以类聚,分类的思维模式,思考的问题首先会解决问题需要哪些 ...

  6. windows下安装python 且 安装pip

    1.安装python 第一步,windows下面的Python安装一般是通过软件安装包安装而不是命令行,所以我们首先要在Python的官方主页上面下载最新的Python安装包.  下载地址是:http ...

  7. 烽火SATA SSD DSS200-B

    烽火SATA SSD DSS200-B 运营商用户 > 产品与解决方案 > 产品 烽火SATA SSD DSS200-B 烽火通信 DSS200-B 2.5" SATA SSD ...

  8. 攻防世界(七)ics-06

    攻防世界系列:ics-06 1.打开题目 很LiuPi的样子,根据题目提示点开报表中心(其他的点开没什么变化) 注意到URL中有?id=1,测试其他数值无果 3.抓包对id爆破 设置1-10000,爆 ...

  9. Rust模块化

    Rust模块化 模块化有助于代码的管理和层次逻辑的清晰 Rust模块化有多种方式: 1.嵌套模块 嵌套模块就是直接在要使用模块的文件中声明模块 mod food{//声明模块 pub struct C ...

  10. dd命令详解-(转自dkcndk)

    Linux-dd命令详解 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换.名称: dd 使用权限: 所有使用者dd 这个指令在 ...