补题进度:10/10

A(树形dp)

B(dp)

题意:

  给出一个n个关键节点的机械手臂,最开始是竖直的,即关键点在二维平面上的坐标分别是(0,0) (0,100) (0,200) (0,300)......,然后我们每次可以选择一个关键节点把它旋转45°(当然它上面的那些点也要跟着旋转)

  现在有q个询问,每个询问输入一个矩形,问最少通过多少次操作使得机械手臂的末端落到这个矩形内

  n<=10,q<=1000

分析:

  首先关键点转的先后顺序对结果并没有影响,所以不妨我们先转下层的,再转上层的

  很自然的想法就是枚举每个关键点转了多少个45°,但是这样复杂度是8^10的,会TLE

  我们考虑减少状态,我们发现转动了前i个关键点,第i个点落在某个位置的时候,前面有很多转动方法,这些状态对后面影响是一样的,但是我们每次却要去计算它

  进一步发现每个可达点的坐标都可以用(100a+50sqrt(2)b,100c+50sqrt(2)d)来表示,所以我们可以把位置用四元组(a,b,c,d)来表示

  于是考虑dp[i][a][b][c][d][last]表示转了前i个位置,目前终点是在(a,b,c,d),并且上面的机械手臂的朝向是last方向的最少步数

  枚举每个点的转动然后计算出所有dp值就行了

C(树形dp)

题意:

  求n个点m条边的无向图的最小点覆盖

  2<=n<=1000,0<=m<=n+10

分析:

  对于一般无向图的最小点覆盖是没有多项式解的,这题的数据范围很特殊,m<=n+10

  首先如果m<=n-1,那么就是简单的树形dp,现在是在树的基础上,多出了11条边

  我们考虑先去人为枚举这些额外边对应的点的选取是否,然后再做树形dp,这样就ok了

  对于一条非树边(u,v),那么有三种情况:u选v不选;u不选v选;uv都选

  那么这样时间复杂度就是O(3^11*n)是TLE的

  我们考虑把三种情况压缩成两种:u选v不选;u随意v选

  然后时间复杂度就是O(2^11*n)的了,就过了

D(博弈)

题意:

  Alice和Bob进行博弈,刚开始有一个整数K,Alice可以把一个数字x变成$[\frac{x}{a1},\frac{x}{a2}]$中的一个实数,Bob可以把一个数字x变成$[\frac{x}{b1},\frac{x}{b2}]$中的一个实数,Alice和Bob轮流操作

  如果某个人的某一次操作之后,数字小于1了,那么他就获胜了

  给定整数k,a1,a2,b1,b2,问最终谁能获胜

  1<=k<=1e9,2<=a2<=a1<=1e9,2<=b2<=b1<=1e9

分析:

  [0,1)是先手必败态,我们考虑把[0,1)倍增上去直到包含k,那么我们就知道了k到底是Alice先手必胜还是Alice先手必败了

  假设我们已经知道了[0,m)的Alice/Bob先手胜败情况,那么是可以转移到[0,tm)的,其中t=min(a2,b2),要怎么转移呢?

  对于[0,m)中的Alice先手必胜区间[l,r),那么[l*b2,r*b1)是[0,tm)的Bob先手必败态,其它同理

  我们需要记录下所有的Alice、Bob胜败区间,去用区间更新,具体细节见代码

E(计算几何)

F(构造)

G(fibonacci循环节)

题意:

  求fibonacci在模p意义下的循环节,p不一定是质数

  2<=p<=2e9

分析:

  我们把p分解成$p_1^{k_1}p_2^{k_2}p_3^{k_3}...$,然后对每个$p_i^{k_i}$求出循环节,然后求个lcm就是结果了

  模$p_i^{k_i}$的循环节就是模$p_i$的循环节乘上$p_i^{k_i-1}$

  根据结论,模一个质数$p_i$的循环节一定是(p+1)(p-1)的因数,枚举因子就行了

  时间复杂度是O(sqrt(p)*log(p))

H(dp套dp+轮廓线)

题意:

  给出一个n行m列的矩阵,每个矩阵元素是0/1/2,现在要从(1,1)走到(n,m),每步只能向下走一步或者向右走一步,将走过的路上的数字加起来作为你的得分,假设最大得分是k

  现在给定n,m,你需要回答对于k=0,1,2,...,2(n+m-1),有多少种n行m列的矩阵,最大得分是k

  1<=n,m<=6

分析:

  考虑一个简单的问题,给定这个矩阵,如何求出最大得分?这是一个很简单的dp问题,dp[i][j]表示走到(i,j)的最大得分

  现在我们要去统计方案数,我们需要把dp[i][j]作为状态放到我们的计数dp里

  dp[i][j][state]表示填数填到了(i,j),dp状态是state情况下的方案数,其中state应该是一个二维数组

  那么时间复杂度是O(n*m*23^(nm))的,是很爆炸的

  我们仔细分析发现对(i,j)有影响的dp状态只又(i,j)轮廓线上的所有位置,也就是说只有m个,所以我们可以做轮廓线dp

  这样时间复杂度就是O(n*m*23^m)

  我们不用数组去存那个轮廓线,用vector去存那个轮廓线,那么状态就会继续大大减少

  但是这样还是比较慢,没法在几秒内跑出来的,但没关系,打个表就可以了

I(贪心)

题意:

  给出n个a区间和m个b区间[li,ri]。你需要从b区间中选择最少的区间,使得每个a区间都和你选出的某个b区间有交。

  n,m<=2000,li,ri<=1e9

分析:

  首先把a中包含其它区间的区间删除,把b中被其它区间包含的区间删除,那么a,b中的区间按照左端点上升排序,右端点也是上升的了

  对于b区间的删除很好办,对于a区间的删除只需要拿个栈来维护就行了

  删完之后就简单的贪心就行了

  时间复杂度O(nlogn)

J(贪心)

题意:

  给出一个n的排列p,你可以交换相邻的数让它从小到大排列,最少交换次数显然是逆序对的个数k。问通过k步交换使它从小到大的方案是否唯一。

  n<=1e5

分析:

  如果某一时刻,可以交换的相邻逆序对有两个,那么就是不唯一了

  仔细分析发现,唯一当且仅当只有一个数字偏离了正确的相对位置,即最长公共子序列的长度是n-1

寒武纪camp Day6的更多相关文章

  1. 寒武纪camp网络测试赛

    寒武纪camp网络测试赛 地址:oj点我进入 A(树形dp+树链剖分) 题意: 分析: 考虑树形dp,f0(x)和f1(x)分别表示以x为根的子树,不取x点或取x点的最大合法子集的元素个数 那么对于一 ...

  2. Wannafly summer camp Day6 - D 区间权值

    这道题实在是不该,我在化式子的时候,多此一举,把式子进行累加,导致自己当时化的式子是错的,这样导致自己卡了很久,也没想到好的思路,赛后重新分析一波,感觉巨™简单...难受的一逼. 这道题的关键在于,W ...

  3. 寒武纪camp Day5

    补题进度:6/10 A(状压dp) 题意: 有n个数字1,2,...,n,有m个限制(a,b),表示至少要有一个数字a排在数字b的前面 你需要构造出一个含有数字1~n的序列,数字可以重复多次,要求该序 ...

  4. 寒武纪camp Day4

    补题进度:7/11 A(博弈论) 略 B 待填坑 C(贪心) 题意: 一个序列是good的当且仅当相邻两个数字不相同.给出一个长度为n的数列,每个数字是ai.定义一种操作就是把a中某个元素拿到首位去, ...

  5. 寒武纪camp Day3

    补题进度:9/10 A(多项式) 题意: 在一个长度为n=262144的环上,一个人站在0点上,每一秒钟有$\frac{1}{2}$的概率待在原地不动,有$\frac{1}{4}$的概率向前走一步,有 ...

  6. 寒武纪camp Day2

    补题进度:8/10 A(计数+BIT) 题意: 给一个长度为n的数组a[],任意选0<=i<=j<n,将a[i]~a[j]从小到大排序,形成新的数组.问有多少个不同的新数组. N,a ...

  7. 寒武纪camp Day1

    补题进度:8/10 A(组合计数) 题意: 一个人站在数轴原点,每秒有1/4概率向前走一步,1/4概率向后走一步,1/2概率不动,问t秒后在p位置的概率. t,p<=100000 分析: 枚举不 ...

  8. Python之路,Day6 - Python基础6

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  9. day6

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

随机推荐

  1. [Python3]Python官方文档-Python Manuals

    简介 一般情况下,初学者都不愿意直接去浏览Python Manuals,即Python自带的官方文档.尤其是只有英文版的情况下,初学者更加不会去使用该官方文档了. 在这里笔者强力推荐初学者经常学会使用 ...

  2. 在一台电脑上运行两个或多个tomcat

    在一台电脑上运行多个tomcat 在本例中,使用两个tomcat做示例   工具/原料   tomcat 安装好jdk,并且配置好环境变量 方法/步骤     首先去apache下载一个tomcat, ...

  3. SPOJ COT2 Count on a tree II (树上莫队,倍增算法求LCA)

    题意:给一个树图,每个点的点权(比如颜色编号),m个询问,每个询问是一个区间[a,b],图中两点之间唯一路径上有多少个不同点权(即多少种颜色).n<40000,m<100000. 思路:无 ...

  4. 在云环境上使用SLF4J对Java程序进行日志记录

    我开发了一个Java应用,部署到云环境上之后,用postman测试发现不能按照我期望的工作,但是返回的消息对我没有任何帮助. 因为部署在云端的应用很难像本地Java应用一样调试,所以我打算用SLF4J ...

  5. 云梯互联:所有主机已全面支持免费SSL!附小白配置教程。

    HTTPS和HTTP的区别:1.HTTPS是加密传输协议,HTTP是名文传输协议;2.HTTPS需要用到SSL证书,而HTTP不用;3.HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO4. ...

  6. SQLite_Home

    SQLite教程 SQLite是一个库,实现了一个独立的软件,serverless zero-configuration.事务SQL数据库引擎.SQLite是世界上最广泛的部署SQL数据库引擎.SQL ...

  7. 看Spring Data如何简化数据操作

    Spring Data 概述 Spring Data 用于简化数据库访问,支持NoSQL 和 关系数据存储,其主要目标是使数据库的访问变得方便快捷. SpringData 项目所支持 NoSQL 存储 ...

  8. 【Hive】explain command throw ClassCastException in 2.3.4

    参考:https://issues.apache.org/jira/browse/HIVE-21489 (一)问题描述: Hive-2.3.4 执行  explain select * from sr ...

  9. postman设置环境变量、全局变量

    讲postman环境变量设置之前,先讲一个小插曲,环境变量.全局变量的区别在于Globals,只能用一组,而Environmen可以设置多组,所以我更喜欢设置环境变量 1.环境变量-Environme ...

  10. linux部署全流程(未完)

    一.环境搭建 1.jdk 2.tomcat 3.nginx 4.redis 推荐工具:winSCP(用来传输文件).SecureCRT(用来执行命令) 1.jdk 下载地址:https://www.o ...