NOIP模拟测试5「星际旅行·砍树·超级树」
星际旅行
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「星际旅行·砍树·超级树」的更多相关文章
- NOIP模拟测试17「入阵曲·将军令·星空」
入阵曲 题解 应用了一种美妙移项思想, 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k==0$可以转化为 $sum[r]\% k==sum[l-1]\%k$开个桶维护一 ...
- NOIP模拟测试14「旋转子段·走格子·柱状图」
旋转子段 连60分都没想,考试一直肝t3,t2,没想到t1最简单 我一直以为t1很难,看了题解发现也就那样 题解 性质1 一个包含a[i]旋转区间值域范围最多为min(a[i],i)----max(a ...
- NOIP模拟测试11「string·matrix·big」
打的big出了点小问题,maxx初值我设的0然后少了10分 第二题暴力打炸 第一题剪了一些没用的枝依然40分 总分70 这是一次失败的考试 string 想到和序列那个题很像,但我没做序列,考场回忆学 ...
- NOIP模拟测试19「count·dinner·chess」
反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...
- 20190803 NOIP模拟测试12「斐波那契(fibonacci)· 数颜色 · 分组 」
164分 rank11/64 这次考的不算太差,但是并没有多大的可能性反超(只比一小部分人高十几分而已),时间分配还是不均,T2两个半小时,T1半个小时,T3-额十几分钟吧 然额付出总是与回报成反比的 ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
- NOIP模拟测试38「金·斯诺·赤」
金 辗转相减见祖宗 高精 #include<bits/stdc++.h> using namespace std; #define A 2000 #define P 1 #define N ...
- NOIP模拟测试28「阴阳·虎·山洞」
写这几个题解我觉得我就像在按照官方题解抄一样 阴阳 题解 将题目中给的阴阳看作黑色和白色 首先我们观察到最后生成图中某种颜色必须是竖着单调递增或竖着单调递减 类似这样 否则不满足这个条件 但合法染色方 ...
- NOIP模拟测试30「return·one·magic」
magic 题解 首先原式指数肯定会爆$long$ $long$ 首先根据欧拉定理我们可以将原式换成$N^{\sum\limits_{i=1}^{i<=N} [gcd(i,N)==1] C_{G ...
随机推荐
- C++逆向分析----虚函数与多层继承
虚函数 C++通过关键字virtual来将函数声明为一个虚函数.当一个类包含虚函数后编译器就会给类的实例对象增加一个虚表指针,所谓的虚表指针就是指向虚表的指针.虚表就是一张地址表,它包含了这个类中所有 ...
- JVM虚拟机 类加载过程与类加载器
目录 前言 类的生命周期 类加载过程 加载 连接 验证 准备 解析 初始化 类加载器 三大类加载器 双亲委派模型 概念 为什么要使用双亲委派模型 源码分析 反双亲委派模型 参考 前言 类装载器子系统是 ...
- 前端面试 CSS三大特性
CSS的三大特性 1.层叠性 代码由上向下执行,相同选择器设置到同一元素上,样式冲突的,会执行比较靠近html的样式,样式不冲突的情况下不影响 代码如下 <!DOCTYPE html> & ...
- Spring Cloud Gateway之全局过滤器在工作中的使用场景
一.使用注意事项 1.全局过滤器作用于所有的路由,不需要单独配置. 2.通过@Order来指定执行的顺序,数字越小,优先级越高. 二.默认全局拦截器的整体架构 三.实战场景,例如,校验token.记录 ...
- .Net 中的 string、String、StringBuffer 内存处理性能 和 应用场景
body { font-family: Segoe UI, SegoeUI, Helvetica Neue, Helvetica, Arial, sans-serif } code { color: ...
- Gateway导航
简介 最近都在弄微服务的东西,现在来记录下收获.我从一知半解到现在能从0搭建使用最大的感触有两点 1.微服务各大组件的版本很多,网上很多博客内容不一定适合你的版本,很多时候苦苦琢磨都是无用功 2.网上 ...
- [bug] CM / CDH 主机运行状态不良情况
参考 https://blog.csdn.net/fhfkv8644/article/details/82383196 无法发出查询:Host Monitor 未运行 https://blog.csd ...
- [刷题] PTA 6-10 阶乘计算升级版
要求: 实现一个打印非负整数阶乘的函数 N是用户传入的参数,其值不超过1000.如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印"Invalid input" 1 # ...
- BUUCTF(八)[极客大挑战 2019]LoveSQL
BUUCTF 1.打开题目 注入方法可参考NewsCenter 2.测试注入点 username: 1'or'1=1 password: 1'or'1=1 登录成功,说明存在注入漏洞. 下面测试位点个 ...
- JavaSE 知识图谱
JAVA基础语法 DOS命令 JAVA介绍 JDK安装 JAVA环境的搭建 关键字 注释 标识符命名规则(编码规范) 字面值常量 进制转换 基本类型 变量(局部变量.静态变量) 运算符 表达式 控制语 ...