B注意讨论情况C可以这样考虑,每次都从第一个蹦蹦床起跳,当高度为1时顺延到下一个蹦蹦床,我们从前向后线性扫描一个一个把高度清成1即可。for(int i=1; i<=n; i++) {     int p = g[i] - c[i] - 1;     ans += max(p, 0);     //如果抵达的次数不够,需要从这里开始重新起跳     for(int j = i + 2; j 
转载 2021-03-02 10:19:50
174阅读
2评论
有个数组$a_i\in{-1,0,1}$。你需要输出所有$a_i=0$的$i$。 交互。每次可以在这个数组的下标中选择两个不可相交的非空集合$S,T$,询问$\sum_{x\in S}a_x\sum_{y\in T} a_y$。 询问次数$n+\lfloor\lg n\rfloor$ \(n\le
转载 2021-03-01 20:42:00
64阅读
2评论
首先,只需要找到一个有磁性的位置,就可以通过$n-1$次判断其余磁铁是否有磁性,因此也就是要在$\lfloor\log_{2}n\rfloor+1$次中找到一个有磁性的位置 有一个$n-1$次的做法,即暴力枚举第$i$个磁铁($i\ge 2$),将1到$i-1$的磁铁放在左侧,那么一定能找到第2个有
转载 2021-03-02 16:06:00
86阅读
2评论
将其连有向边$(i,c_{i})$,由于每一个点出入度都为1,那么必然构成若干个环 对于每一个环,从一点出发,将搜到的点依次记录下来(直至返回自己),记作$v_{1},v_{2},...,v_{k}$,那么就有$c_{v_{i}}=v_{i+1}$(特别的,$c_{v_{k}}=v_{1}$) 显然
转载 2021-03-02 21:11:00
47阅读
2评论
题目 题目链接:https://codeforces.com/contest/1491/problem/G 桌面上有 \(n\) 枚硬币。初始时,第 \(c_i\) 号硬币位于位置 \(i\),正面朝上(\(c_1, c_2, \cdots, c_n\) 是一个 \(1 \sim n\) 的排列)。
转载 2021-06-03 18:11:00
59阅读
2评论
有 $n$ 个蹦床排成一列,每个蹦床有一个弹力值 $s_i$。每一轮的最开始,会任意选择一个蹦床作为她的起点。当她在蹦床 $i$ 时,她会跳到蹦床 $i+s_i$ 上,并且 $s_i$ 会变为 $\max(1,s_i-1)$(也就是说,蹦床每被跳一次弹力值就会减一,直到弹力值为 $1$)。当她跳到了第 $n$ 个蹦床的后面时,该轮结束。现在想要把所有的 $s_i$ 都变成 $1$,问最少要多少轮才
转载 2021-03-03 10:35:29
151阅读
2评论
前言 据说这是 lxl 的题啊。 你这分块不是也是正解吗? 不,我这是部分分暴力。 题目 洛谷 CF 讲解 分块就完事了。 借用重链剖分的思想,考虑维护一个 \(tp_i\) 表示 \(i\) 跳出块外的位置。 散块怎么改复杂度都没问题,所以我们开整块。 对于一个整块,其大小为 \(\sqrt{n} ...
转载 2021-10-12 17:15:00
37阅读
2评论
将其按照区间分块(即$[(i-1)K+1,iK]$作为一个块),并定义$f_{x}$表示$x$的祖先中编号最小且与$x$在同一个块内的节点,$f_{x}$可以通过$f_{a_{x}}$转移,即$f_{x}=\begin{cases}f_{a_{x}}\ \ \ (x与a_{x}在一个块中)\\x\
转载 2021-03-03 13:07:00
115阅读
2评论
XXXII.CF1491H Yuezheng Ling and Dynamic Tree 首先,相信大家都做过[HNOI2010]弹飞绵羊这道经典原题,而这题显然是那题的增强版。 众所周知,该原题有两种常见解法:LCT或分块。凭直觉发现LCT不可能处理这种区间修改问题,于是我们考虑分块。 分块的话,
转载 2021-04-02 17:08:00
24阅读
思路:先求出每两点之间的最短路,建出n个最短路径图,然后枚举起点终点和中间点,计算条数用到拓扑图dp。。。 看别人的方法很巧妙地用floyd在计算最短路的时候就可以直接计算条数啦。。。
转载 2018-07-13 09:48:00
49阅读
2评论
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1491题意:给一个2006年的日期,问和2006年10月21日还差几天。mark:getdays是用于获得m月d日是当年的第几天。最后和10月21日做比较。代码:# include <stdio.h>int getdays (int m, int d){ int i, rtn = 0, month [12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30} ; for (i = 0 ; i < m ; i++) rtn += m...
转载 2012-01-08 05:11:00
8阅读
Octorber 21stTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 3
转载 2012-09-02 18:36:00
26阅读
2评论
这一类题带有鲜明的套路:分块,然后将跳大块和跳小块分开计算复杂度,跳大块最多跳 $B$ 次,小块最多暴力更新 $\frac{n}{B}$ 次。 同样考虑维护 $b_i$ 表示 $i$ 第一次跳出所在块会跳到哪里去,那么查询的话就可以两个点往前跳,跳到同一个大块后再继续不断跳 $b_i$ 直到相等,... ...
转载 2021-09-15 14:20:00
56阅读
2评论
简单题View Code #include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <cmath>using namespace std;#define maxn 55int n;int f[maxn];int gcd(int a, int b){ if (b > 0) return gcd(b, a % b); return a;}void input(){ for (int i = 0; i < n; i++) sc
转载 2013-02-26 13:50:00
50阅读
2评论
// /148K 0MS C++#include #include #include int val[55];int valNum;int gcd(int p, int q) { int r = p%q; if (r == 0) { return q; } el
原创 2023-05-23 15:54:59
41阅读
#include <iostream> //水题#include <cmath>using namespace std;int gcd(int x,int y) { if (x==0||y==0) return max(x,y); int i=0,j=0; while (x&1==0) { ++i; x=x>>1; } while (y&1==0) { ++j; y=y>>1; } i=min(i,j); while(1) { if(x<y) swap(x,y); x-=y; if(x==0) return y<&lt
转载 2011-07-22 20:03:00
105阅读
2评论
1491 取物品 http://codevs.cn/problem/1491/ 时间限制: 1 s 空间限制: 128000 KB 1491 取物品 http://codevs.cn/problem/1491/ 1491 取物品 http://codevs.cn/problem/1491/ 时间限制
原创 2021-08-05 13:45:28
91阅读
floyd。
转载 2016-09-20 19:34:00
94阅读
2评论
题目描述 每次有大的活动,大家都要在一起“聚一聚”,不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快。还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺是如此的高超,还记得狗狗的枪法永远是'S'……还有不能忘了,胖子的歌声永远是让我们惊叫的!! 今天是野猫的生日,所以想到这些也正常
c
原创 2021-05-20 22:38:54
82阅读
在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象。不妨看这样的一个问题。在一个社交圈子里有n个人,人与人之间有不同程度的关系。我们将这个关系网络对应到一个n个结点的无向图上,两个不同
原创 2023-04-24 23:47:29
50阅读
  • 1
  • 2
  • 3
  • 4
  • 5