Luogu P2069 【松鼠吃果子】】的更多相关文章

P2069 松鼠吃果子 题目描述 有N个一种松鼠喜欢吃的果子由下向上串排成一列,并标号1,2,...N.一只松鼠从最下果子开始向上跳,并且第i次跳可以一次跳过i*i*i除以5的余数+1个果子(=i*i*i%5+1),并把脚下的果子吃了,如果上面有果子,在重力作用下,都将向下掉下一格.如第1次跳从第一个果子上跳过1*1*1%5+1=2个果子,可跳到第3个果子上,并把第3个果子吃了:第2次从第4个果子上(落在原来第三个果子位置)跳过2*2*2%5+1=4个到第8个果子上,并把第8个吃了:如此....…
洛谷 P2069 松鼠吃果子 https://www.luogu.org/problemnew/show/P2069 JDOJ 1256: VIJOS-P1078 松鼠吃果子 https://neooj.com:8082/oldoj/problem.php?id=1256 题目描述 有N个一种松鼠喜欢吃的果子由下向上串排成一列,并标号1,2,...N.一只松鼠从最下果子开始向上跳,并且第i次跳可以一次跳过i*i*i除以5的余数+1个果子(=i*i*i%5+1),并把脚下的果子吃了,如果上面有果子…
推荐一波数组模拟链表的讲解 这道题呢,数组写的话不好删除(因为后面要接过来),自然想到链表 对于一个果子,我们可以维护其前驱和后继,我们不妨记与一个点相邻的上面的点为其前驱,下面的点为其后继 观察到题目要求我们完成两种操作 1,跳,即遍历链表2,吃,即删除链表中元素 具体来讲删除就是普通的删除,不再赘述 跳 for(;s&&pos;s--,pos=fa[pos]); //s为步数 把最上面果子的前驱设为0 跳过了,就把松鼠的位置pos移至1重新跳 观察到这题1号果子是不会被吃的,即head…
题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块奶酪的坐标. 两点之间的距离公式=sqrt((x1-x2) * (x1-x2)+(y1-y2) * (y1-y2)) 输出格式: 一个数,表示要跑的最少距离,保留2位小数. 原题戳这里 深搜,记录上一个点和已经吃了多少块奶酪,再立一个flag,防止一块奶酪吃很多次 再就是剪枝,不剪枝会超时,如果距离已经大于了最小值,就…
Luogu P1090 [解题思路] 刚看到这题的时候,第一反应就是每次取两个最小,然后重新排序,再取最小.但是这样会TLE. 既然找最小的,那就可以利用单调队列了.显然输入的数据是不具有单调性的,但是可以排一次序,使之具有单调性. 这题需要两个队列,一个队列用于存储最先给出的堆,另一个队列用于存储合并后的堆. 值得一提的是,后面合并出来的堆,一定比前面合并出来的要大. 也就是说队列的单调性在这里是自然而然的,不需要维护的. 此时我们可以选择的操作有三种: 在队列1中选择最小两个 在队列2中选择…
题目描述 Bessie拿到了N (1 <= N <= 50,000)块巧克力.她决定想个办法吃掉这些巧克力,使得它在吃巧克力的这段时间里,最不开心的一天尽可能的开心.并且一共吃D (1 <= D <= 50,000)天. 每块巧克力有一个开心值H_i (1 <= H_i <= 1,000,000),当某天你吃下那块巧克力时,你将获得那块巧克力的开心值.每一天的开心值是所有当天吃掉的巧克力的总开心值之和.每天晚上Bessie睡觉之后,它的开心值会减半.也就是说,比如昨天B…
题面 题解 这种题目一看就是重链剖分裸题,还是区间修改,单点查询,查询之前在遍历时要记一个\(delta\),因为这一次的起点就是上一次的终点,不需要放糖,所以可以用\(BIT\)来写,但我写完\(modify\)才反应过来,所以没改了. #include <cstdio> #include <cstring> #include <algorithm> using std::swap; const int N = 3e5 + 10; int n, a[N], siz[N…
题目传送门 题意:给出一个01矩阵,找出一条对角线,使得对角线上的元素都为1,而对角线所在矩阵其他元素均为0,使得这样的对角线最长. 状态:$f[i][j]$表示以($i$,$j$)为对角线端点的最长长度.(很好想(吧)). 但是本题要求只能对角线上为1,其他地方为0,这样让我们的转移就很难搞. 看到dalao开出了两个辅助数组:$l[i][j]$,$u[i][j]$.分别表示向左/右最多能延伸多少格子使格子中的数为0,向上/下最多能延伸多少格子使格子中的数为0. 那么只要两遍dp,一遍左上到右…
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<string> #include<map> typedef long long ll; using namespace std; int n,m,ans; ][],f[][],s1[][],s2[][];//s1为横向,s2为纵向 //s1[i][j]表示(i,j)最多向…
懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.小明决定把所有的果子合成一堆. 因为小明比较懒,为了省力气,小明开始想点子了: 每一次合并,小明可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了.小明在合并果子时总共消耗的体力等于每次合并所耗体力之和.  因为还要…