博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
电子科大春季体验营 (都是思维题。。。。)
阅读量:4569 次
发布时间:2019-06-08

本文共 1338 字,大约阅读时间需要 4 分钟。

                                                                            T1  crazy

      给定一颗n节点有权值的树,定义疯子树,满足:

     ①为原图的一个子图

     ②将所有节点按权值排序后的b1,b2,b3…bn,满足对于i<n,bi到bi+1上的点的路径(不包含bi+1)不存在权值大于w[bi]的点;

     n<=200000;

      题解:

      ①定义b1为疯子树的中心,则从中心发出的每一条链一定递增。(可以考虑不断构造的过程简易证明)

      ②如果选取每一个点去辐散,需要n^2,考虑bfs只扩展比当前节点权值大的点之后会得到一颗树,且以我们选取的点为根。因为每个点在不同情况下的贡献是一样的,所以每次搜完记忆一下,可以达到O(n);

                                T2   little

      给定一个数n,求其分解成k(k不定)个数乘积的方案,满足这k个数的差不大于1;(若有无限多组解,输出-1

     n≤10^18

     题解:

     ①只有满足2^k的数输出-1;

     ②考虑分解后一定为n = a^k1 * (a+1)^k2 ;所以

      a^(k1+k2) < n < (a+1) ^(k1+k2)  意思就是知道了k的话,把n开k次跟就好了。

     ③至于k的范围,就是lg n,10^18还是可以应付的,至于开根可以用pow求k分之一次幂;

                                 T3 cake

     给定一个边长为1的正n边形,求能够包含它的最小正m边形的边长;

     大概不爆long long;  保留四位小数;

     ①有一个很邪恶的骗分做法:求出n边形的外接圆,再求出以这个圆的外接m边形,一点数学知识就可以,因为精度要求很低,所以竟然过了80。。。。;

     ②

      来自YYT学长:

      考虑求出内外边长的关系,最小化m边形的边长即最大化OC,因为m边形所有的m个小三角形全等,把OA…OC全部旋转到一个小三角形内,那么最大的情况一定是当有任意两条相邻线刚好碰到多边形的边的时候(如图中OB,OC),所以只要求出∠B‘OC’,结合m变形的边心距和三角函数,就可以得到关系;

     (好像多画了一个C,不要介意。。。)

     ③把2π分成m*n份,那么m边形的圆心角为n,n边形的圆心角为m,旋转群即(a + k*m) % n一个的群,会形成一个在mod n的意义下内相差为gcd(m,n)的剩余系;所以∠B‘OC’ = 2π / (n*m)   * gcd(m,n) = 2π / lcm(m,n) ;

     结束了。(发出长长的叹息。。。)

     

    

                                   T4  grass

     有n个草,生长的速度为a1 – an ,有m个操作: di bi 在第di天将所有长度大于bi的草的长度割为bi,草的初始长度都为0,求每次操作割的草的总单位长度;

     n,m<=4 * 10^5;

     ①有一个看似无用的条件:草的初始长度都为0;由此可得到生长速度快的不论怎么减,草的长度一定不会小于生长速度慢的;将草按降序a排序,我们只需要区间修改维护前面某段的sum值,相对的位置一定不会改变,统计答案的话就用sum - tot * bi就好了

     ②线段树和splay应该都是可以做的  :设立ly1 和 ly2 两个标记表示,分别表示集体被砍成ly1 和 生长 ly2(注意ly1 可以 覆盖 ly2),其余就是数据结构的基本操作;

 

 

转载于:https://www.cnblogs.com/Paul-Guderian/p/8598862.html

你可能感兴趣的文章
多线程/多进程+QProgressBar实现进度条
查看>>
多任务(进程)案例----- 拷贝文件夹
查看>>
Kotlin的快速入门
查看>>
底层原理
查看>>
21. Merge Two Sorted Lists
查看>>
创建数组
查看>>
dict使用
查看>>
ASP.NET MVC的帮助类HtmlHelper和UrlHelper
查看>>
02_ListActive中响应事件 并LogCat输出
查看>>
doubleclick adx note
查看>>
Celery框架
查看>>
[c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
查看>>
[转载,感觉写的非常详细]DUBBO配置方式详解
查看>>
linux Valgrind使用说明-内存泄漏
查看>>
Android在Eclipse上的环境配置
查看>>
面向对象(五)
查看>>
android平台下使用点九PNG技术
查看>>
Python学习3,列表
查看>>
最长回文子串
查看>>
JAVA基础-JDBC(一)
查看>>