自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Change the world by program.

一条咸鱼的博客

  • 博客(19)
  • 收藏
  • 关注

原创 POJ 2484 - A Funny Game(博弈)

题目链接 https://cn.vjudge.net/problem/POJ-2484【题意】n枚硬币围成一圈,Alice和Bob轮流取,每次取一枚或连续的两枚。硬币取走之后留下空位,相隔空位的硬币是不连续的。Alice先取,取走最后一枚硬币的一方获胜。输入n,当双方都采取最优策略时,谁会获胜?【思路】当n<=2时,Alice可以一次拿完获胜。当n>2时,Alice只能现将硬币...

2018-11-28 23:48:21 189

原创 51Nod 1066 - Bash游戏

【题目描述】【思路】看 nnn 是不是 k+1k+1k+1 的倍数即可#include<bits/stdc++.h>using namespace std;int main(){ int T; scanf("%d",&T); while(T--){ int n,k; scanf("%d%d",&n,&k); if(n%(k+1)=...

2018-11-28 23:14:36 146

原创 HDU 6223 -Infinite Fraction Path(BFS+剪枝)

【题目链接】http://acm.hdu.edu.cn/showproblem.php?pid=6223【题意】给一个长度为 nnn 的只包含 [0,9][0,9][0,9] 数字的串,位置从 000 开始,下标 iii 的下一个位置是 (i2+1) mod n(i^2+1) \ mod \ n(i2+1) mod n,问其中字符个数为 nnn 的路径...

2018-11-13 20:49:16 149

原创 51Nod 1461 - 稳定桌(枚举+线段树)

【题目描述】【思路】线段树还是写的少,不知道还有这样子的用法看了别人的题解,这道题是要枚举所有的长度,然后计算把当前长度作为最长桌腿时消耗的最小代价,取最小值就是答案. 当枚举某个长度 iii 时,要把比 iii 长的桌腿都删掉,这个可以用代价的前缀和处理. 然后看一看现在长度为 iii 的桌腿有没有超过剩下桌腿的一半,超过了直接更新答案,如果没超过那么还要删掉一定数量的长度比 iii 小...

2018-11-11 22:31:34 303

原创 51Nod 1322 - 关于树的函数(树DP)

【题目描述】【思路】看了大佬的题解才想明白的,f_zyj大佬的题解两棵树,对第一棵树暴力枚举所有边,拆掉这条边后的两个子树对应两个集合 A1,B1A1,B1A1,B1,用 dfsdfsdfs 枚举,然后在枚举出某一个 A1,A2A1,A2A1,A2 时,所有在 A1A1A1 中的节点 uuu,used[u]=trueused[u]=trueused[u]=true,现在对第二棵树枚举,df...

2018-11-08 19:52:31 229

原创 51Nod 1296 - 有限制的排列(DP)

【题目描述】【思路】做这道题首先要知道一种全排列的生成方式:如果要生成 [1,n][1,n][1,n] 的全排列,考虑递推关系,如果现在所有 [1,n−1][1,n-1][1,n−1] 的排列都是已知的,那么假设 [1,n][1,n][1,n] 中的一个排列末尾元素为 xxx ,那么只要把 [1,n−1][1,n-1][1,n−1] 中所有 >=x>=x>=...

2018-11-08 11:40:18 316

原创 51Nod 1293 - 球与切换器(DP)

【题目描述】【思路】经过该切换器的球的总量是k,发现如果是该位置的值是1,那么会有(k+1)/2的球像右去,剩下的球向下去。如果该位置的值是-1,那么会有(k+1)/2的球像下去,剩下的球向右去。最后求右下角的位置球向下的数量。设 dp[i][j][0]dp[i][j][0]dp[i][j][0] 表示经过位置 (i,j)(i,j)(i,j) 并向下走的球数量,dp[i][j][1]dp[...

2018-11-08 00:25:15 145

原创 51Nod 1277 - 字符串中的最大值(KMP)

【题目描述】【思路】假设现在有一个位置 pospospos ,其前缀已经出现一次即 [0,pos−1][0,pos-1][0,pos−1] 这个前缀已经出现了一次,现在考虑一下 next[pos]next[pos]next[pos] 的意义,其实就是包含在 [0,pos−1][0,pos-1][0,pos−1] 这个前缀里面的前缀(前缀针对整个字符串而言,并非 [0,pos−1][0,po...

2018-11-07 21:45:06 218

原创 51Nod 1275 - 连续子段的差异(单调队列)

【题目描述】【思路】固定左端点 iii,向右寻找一个最远的右端点 jjj ,使得区间 a[i,j]a[i,j]a[i,j] 中的最大值减去最小值的差 <=k<=k<=k 同时 a[i,j+1]a[i,j+1]a[i,j+1] 中的最大值减去最小值的差 >k>k>k,这样一来 [i,i],[i,i+1]...[i,j][i,i...

2018-11-06 21:32:11 355

原创 51Nod 1274 - 最长递增路径(DP)

【题目描述】【思路】如果是有向图,那么可以把边按照从小到大排序,然后设 dp[i]dp[i]dp[i] 以 iii 为终点的最长距离。有 dp[u]=max{dp[u],dp[v]+1∣(u,v)∈E}dp[u]=max\{dp[u],dp[v]+1|(u,v)\in E\}dp[u]=max{dp[u],dp[v]+1∣(u,v)∈E}而在无向图中,对于无向边 (u,v)(u,v)(u,...

2018-11-06 20:30:57 261

原创 51Nod 1201 - 整数划分(DP)

【题目描述】【思路】dp[i][j]表示数字i被划分成j个互不相同的数字之和的方案数,那么dp[i][j] 表示数字i被划分成j个互不相同的数字之和的方案数,那么dp[i][j]表示数字i被划分成j个互不相同的数字之和的方案数,那么dp[i][j]=dp[i−j][j]+dp[i−1][j−1]dp[i][j]=dp[i-j][j]+dp[i-1][j-1]dp[i][j]=dp[i−j]...

2018-11-05 21:27:30 147

原创 51Nod 1259 - 整数划分 V2(五边形数定理)

【题目描述】【思路】大佬的博客记板子#include<bits/stdc++.h>#define f(x)(((x)*(3*(x)-1))>>1)#define g(x)(((x)*(3*(x)+1))>>1)using namespace std;const int mod=1e9+7;const int maxn=100005;in...

2018-11-05 20:09:29 385

原创 51Nod 1257 - 背包问题 V3(二分)

【题目描述】【思路】二分最大化平均值,设被选择的集合是 SSS 那么对于某个单位价值 xxx 我们去验证物品集合 SSS 中的单位价值能否达到 xxx 即验证下面的式子是否成立 ∑i∈Spiwi>=x\sum_{i \in S} \frac{p_i}{w_i}>=xi∈S∑​wi​pi​​>=x 移项后,等价于验证 ∑i∈S(pi−xwi)>...

2018-11-05 17:20:10 156

原创 51Nod 1225 - 余数之和(整除分块)

【题目描述】【思路】整除分块+等差数列设 p=⌊ki⌋,k mod i=k−pip =\lfloor \frac{k}{i} \rfloor , k \ mod \ i =k-pip=⌊ik​⌋,k mod i=k−pi 如果有⌊ki+1⌋=p,k mod (i+1)=k−p(i+1)=k−pi−p=k mod&

2018-11-04 23:37:42 261

原创 51Nod 1217 - Minimum Modular(数论)

【题目描述】【思路】这个题我们可以考虑从小到大枚举m(从max(1,n-k)到max(a[i])+1),然后判断能否在删不超过k个数的情况下满足每个数模m都互不相同。对于模m的情况,a[i]≡a[j](mod m)当且仅当a[i]-a[j]是m的倍数,我们可以先预处理出a[i]-a[j]=w的个数cnt[w],然后对于模m的情况,就只用考虑删m|a[i]-a[j]的i或j了,根据调和级数我...

2018-11-04 21:56:44 203

原创 51Nod - 1215 数组的宽度(单调栈)

【题目描述】【思路】单调栈处理左右第一处比自己小和大的位置,然后计算每个元素对答案的贡献,注意若干相同元素不能重复计算,所以在处理左边第一处大于自己的位置后,右边就要处理第一处大于等于自己的位置,这样才不会重复计算,比自己小的位置也同理#include<stack>#include<cstdio>#include<cstring>#include&...

2018-11-04 20:39:16 175

原创 51Nod 1204 - Parity(并查集)

【题目描述】【思路】并查集这题要转化一下,一转化就比较明显了。我们定义前缀和为 sum[i]sum[i]sum[i] 表示 111 到 iii 的和,那么 sum[b]−sum[a−1]=c[a]+c[a+1]+c[a+2]……c[b]sum[b]-sum[a-1]=c[a]+c[a+1]+c[a+2]……c[b]sum[b]−sum[a−1]=c[a]+c[a+1]+c[a+2]……c[...

2018-11-04 19:24:13 153

原创 洛谷P3384 - 树链剖分(树链剖分模板题)

题目链接 https://www.luogu.org/problemnew/show/P3384【描述】树链剖分模板题,记一下板子#include<bits/stdc++.h>#define node tree[id]#define lson tree[id<<1]#define rson tree[id<<1|1]using namespace...

2018-11-04 12:47:50 410

原创 51Nod 1199 - Money out of Thin Air(树链剖分)

【题目描述】【思路】树链剖分,两次dfs将重链转换成连续区间,然后用线段树维护区间和#include<bits/stdc++.h>#define node tree[id]#define lson tree[id<<1]#define rson tree[id<<1|1]using namespace std;typedef long lon

2018-11-03 10:03:20 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除