自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(647)
  • 收藏
  • 关注

原创 BZOJ-6-2460: [BeiJing2011]元素-线性基

链接 :https://www.lydsy.com/JudgeOnline/problem.php?id=2460思路 :线性基不唯一,所以排序 进行贪心选择,价值最大的线性基,#include<bits/stdc++.h>using namespace std;#define ll long long#define maxn 123ll n,ans,p[maxn];...

2019-01-12 22:17:00 45

原创 P3812 【模板】线性基

P3812【模板】线性基理解 :线性基 类似于 向量的极大无关组,就是保持原来所有数的异或值的最小集合,求解过程也类似,可以 O( 60 * n )的复杂度求出线性基,线性基有许多性质,例如 线性基里面的数进行异或 的值域与原来所有数异或的值域相同。#include<bits/stdc++.h>using namespace std;#define ll long l...

2019-01-12 21:22:00 49

原创 Misunderstood-Missing-逆向DP

Misunderstood … Missing记忆深刻......打铁没做出来的题题意 :打怪,有A的攻击力,有D的成长,初始均为0,有n轮。同时有三个数组a[1:n],b[1:n],c[1:n]对于每一轮:首先,攻击力永久性成长A=A+D;然后,在下面三个选择中选择一种行为:①、发起进攻,产生A+ai的伤害。②、增加成长D=D+bi。③、永久性增加攻击力...

2019-01-12 17:23:00 973

原创 P3389 【模板】高斯消元法

P3389【模板】高斯消元法注意每次选择当前列绝对值最大元素去消除其他的行是误差尽可能的小,本题特有的性质是,bi全都大于0,所以如果出现对角线上为0的情况是不合理的 0x = bi#include<bits/stdc++.h>using namespace std;#define eps 1e-8#define maxn 123double A[maxn][ma...

2019-01-12 15:29:00 51

原创 牛客练习赛37

rank :153 虽然打的很惨,但是也没有抽中奖,啊哈哈哈题数 :1补题 :筱玛的迷阵探险可惜可惜啊,空间复杂度分析不到位,数组开小了 一直没过。思路 :根据 n的大小,发现 dfs 直接从 (1,1)到 (n,n)是肯定超时的,而且每一步也没有最优解,无法进行记忆化,只能全部结果保存,想到了折半搜索就是 从 (1,1)搜到 对角线 ,然后记录下所有结果 ,再从 (n,n)...

2019-01-12 10:28:00 30

原创 Farewell Party-构造

Farewell Party思路 : 转换思路 ,有 a [ i ] 个不相等的 ,那么至少得有 n - a [ i ]个与它相等的。 但是有可能与它拥有相同数目的有很多。但是为了能够最终 分配成成功 总的 个数 % N - a [ i ] 必须 == 0。所以 这样判断完否定之后 进行分配时需要操作的就是,把 每 N - a [ i ] 个 a [ i ]设置为同一颜色即可 。...

2019-01-11 17:15:00 56

原创 Rabbit的机器人-二分答案

Rabbit的机器人思路 : 可以 推知 挡板的位置与最后 一步的方向有关 。如果是 R 根据题目要求那么最终结果一定是在>0的位置,因为按照题意要求的最终不能回到重复走过的位置。所以如果有解的话挡板只能放在 < 0 的位置,分析一下就是 放在 >0的位置有两种情况 1 .在最终结果前面 ,这显然不可以 会直接导致走不过去,2.放在最终结果后面, 这似乎是个无用操作,,...

2019-01-11 16:27:00 56

原创 BZOJ-5-4300: 绝世好题-位-DP

思路 :题意描述我也很绝望 。先说一下题意 :给定长度为n数组a [ ],求a[ ] 的一个最大子序列(可以不连续),使得b [ i ]& b [ i - 1 ] ! = 0.求最大的 b数组的长度题解:显然是DP,状态转移方程显然是dp[ i ] = m a x { dp [ k ] + 1 } , a [ i ] & a [ k ] ! = 0但是不能跑 n*n 考虑位...

2019-01-09 17:41:00 59

原创 BZOJ-4-2038: [2009国家集训队]小Z的袜子(hose)-莫队

思路 :分块 思想 处理离线查询操作 对查询进行排序 在同一块内的按照 r 进行排序 不同块 的按照 L进行排序。#include<bits/stdc++.h>using namespace std;#define maxn 56789int n,m,col[maxn],cnt[maxn],l,r,zi,mu,len,B;struct node{ int ...

2019-01-09 16:35:00 50

原创 BZOJ-3-1010: [HNOI2008]玩具装箱toy-斜率优化DP

dp[i]=min(dp[j]+(sum[i]-sum[j]+i-j-1-L)^2) (j<i)令f[i]=sum[i]+i,c=1+l则dp[i]=min(dp[j]+(f[i]-f[j]-c)^2)1.证明决策单调性假设在状态i处的k决策优与j决策,即dp[k]+(f[i]-f[k]-c)^2<=dp[j]+(f[i]-f[j]-c)^2则对于i后的所有...

2019-01-09 15:16:00 43

原创 Print Article HDU - 3507 -斜率优化DP

思路 :1,用一个单调队列来维护解集。2,假设队列中从头到尾已经有元素a b c。那么当d要入队的时候,我们维护队列的下凸性质,即如果g[d,c]<g[c,b],那么就将c点删除。直到找到g[d,x]>=g[x,y]为止,并将d点加入在该位置中。3,求解时候,从队头开始,如果已有元素a b c,当i点要求解时,如果g[b,a]<sum[i],那么说明b点比a点更优,a...

2019-01-09 11:40:00 47

原创 BZOJ-2-4870: [Shoi2017]组合数问题 矩阵优化 DP

就 是 要 我 们 从 n k 件 物 品 里 面 选 出 若 干 件,使 得 其 数 量 模 k 等 于 r 的 方 案 数 。 dp方程 f [ i , j ] 表示前 i 件物品拿了若干件使得其数量模 k 等 于 j 的 方 案 数。非常明显的 i 与 i - 1递推的DP, 可以转化推矩阵,进行矩阵乘法。那么显然有f [ i , j ] = f [ i − 1 ,j ] +...

2019-01-08 20:42:00 81

原创 BZOJ-1- 4868: [Shoi2017]期末考试-三分

三分出成绩时间,假设当前出成绩最优,那么提前就会调增老师,增加不愉快度多于少等待的;如果延迟时间。那么等待更久,增加的不愉快度也将多余少调增剩省下的。于是:对于当前点,两边都是有单调性的。就是说不愉快度随出成绩时间呈单峰函数(这里开口向上),#include<bits/stdc++.h>using namespace std;#define ll long long#...

2019-01-08 18:24:00 48

原创 #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

#6164.「美团 CodeM 初赛 Round A」数列互质思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 ,但是还要处理有多少 次数 与ki互质 。根据数列的性质,无论这个区间多长,最长也就是 1 - n这个区间 ,所能产生的不同的次数 也就是 根号 n 种 例如 长度为28的 数列 1 2 2 3 3 3 4 4...

2019-01-08 17:00:00 64

原创 湖南大学第十四届ACM程序设计新生杯(重现赛)

RANK 0 题数 0期末复习没有参加,补几道喜欢的题。A:AFei Loves Magic 签到思路 :不需考虑 碰撞 直接计算最终状态即可。#include<bits/stdc++.h>using namespace std;#define maxn 12345int ans,n,l,t,x,d;int main(){ scanf("%d%d%d...

2019-01-07 19:42:00 64

原创 Codeforces Round #530 (Div. 2)

RANK :2252 题数 :3补题:D - Sum in the tree思路:贪心 把权值放在祖先节点上 ,预处理 每个节点保存 他与他儿子中 权值最小值即可。最后会有一些叶子节点依旧为 INF 权值按0算即可,然后其他的权值计算为 它 - 它父亲的。注意判断时候会出现父亲比儿子大的这种非法情况。#include<bits/stdc++.h>using names...

2019-01-07 17:39:00 44

原创 牛客练习赛-36

RANK :86 题数 :1做了三题过了一个...A题最小表示法裸题, B题dp状态定错一直改一直WA,F题叉积 计算凸多边形面积。 预处理姿势错误。补题 :记录叉积公式的前缀和即可。#include<bits/stdc++.h>using namespace std;#define maxn 123456struct node{ double x,y;...

2019-01-07 16:41:00 41

原创 2018级《程序设计基础(B)》期末机考--18计科(1801--1806)

今年是哪年?:签到 :#include&lt;bits/stdc++.h&gt;using namespace std;int main(){ int n; scanf("%d",&amp;n); if(n&gt;=2018)printf("What?\n"); else printf("I know\n"); return 0;}珂...

2019-01-05 21:24:14 1294 2

原创 最长回文 HDU - 3068 -Manacher

最长回文  HDU - 3068  以每个点 为中心的最长回文长度为 半径 -1 #include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 123465char str[maxn],cp[maxn*2];int p[maxn*2],len,ans;void manacher(){ int mx=0,i...

2018-12-29 12:22:59 311

原创 Polygon for the Angle-几何-性质

Polygon for the Angle 思路:根 据 几 何 性 质 , 正 多 边 形 所 有 三 个 点组成的 角 都 是最小角的倍数, 然后根据内角公式 可以求出  正多边形 最小角为   多边形内角 / (n - 2)   然后 打表发现 180边形最小角为1  最大角 178  所以 只有 179无法组成, 然后继续往后打表 发现 360边形 可以 组成 179。所以 打好最大...

2018-12-29 11:21:16 631

原创 Easy Problem-简单DP

Easy Problem 思路:设dp [ i ] [ j ] 表 示 前 i 位 匹 配 了 hard 的 前 j 个 字 符,破 坏 掉 需 要 的 最 小 的 代 价 。 破 毁 掉  前 1 个 只 能 破 坏 自 己,坏 掉 前 两 个 可以通过破坏第一个 或第二个 ,依次类推,按顺序转移 dp  [ i ] [ 3 ] 转移 是min ( d p [ i -  1 ] [ 3 ]...

2018-12-29 11:12:49 445

原创 How many HDU - 2609 -最小表示法

How many  HDU - 2609  思路:任何一个字符串环,最小表示都是唯一的。求出 n 个字符串环的最小表示,set统计种类即可。 #include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 12345set&lt;string&gt;ok;string hk;char str[maxn];int...

2018-12-29 10:36:09 272

原创 Count the string HDU - 3336-NEXT应用-前缀出现次数

Count the string  HDU - 3336  思路:首先 ans = n 是每个前缀出现一次,下面统计这些前缀作为枚举其中每个位置 作为后缀出现的次数求和即可。 这个题要求的 前缀 是包含本身的 ,但是next 中存的是 真后缀,不会重复计数。 #include&lt;bits/stdc++.h&gt;using namespace std;#define ...

2018-12-28 21:34:07 264

原创 D - Circular Dance-思维-dfs

D - Circular Dance 思路: 随便选定一个起点即可。那就选择 1吧 , 选择建边 来把原来的图 恢复, 题目给出的信息是这个点后面的两个点 我们不能确定这个点与谁相连,当能知道的是 后面的两个点一定相连,所以建两个无向边,最终得到的vector 是 每个点都有 两个相连的点,一左一右, 题目让输出的是 从左往右 ,所以我们要保证  dfs恢复图的过程中 从1出发是往后走 。...

2018-12-28 20:39:59 430

原创 Cyclic Nacklace HDU - 3746 -next -循环节

Cyclic Nacklace HDU - 3746  #include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 123456int nxt[maxn],len,t;char str[maxn];void getnxt(){ nxt[0]=0; for(int i=1; i&lt;len; ...

2018-12-28 19:05:06 313

原创 Make It Connected-生成树

Make It Connected 题意 :给定 n给点生成一棵树,发费 任意两点可以建边 ,花费为 a [ i ]+ a [ j ] ,还有给定的一些边,都可以使用。 思路 第一种建边方式必然是选择 都插在  a[ id ]最小的点上。 所以直接建立 n-1条 与 最小的 id 相连的边即可。然后在  现在所有的边上跑一边 最小生成树即可。 #include&lt;bits/std...

2018-12-28 17:29:12 389

原创 Powers Of Two-思维

Powers Of Two 题意 : 问能否把 n分解成 k个 2 的次幂 的和 思路:优先队列维护 分成的 数,如果数目&lt;k 取出最大的继续分解。控制好终止条件即可。 当 个数&gt;k ,或者 小于 k 并且全为1了不能再分解了 停止输出NO,恰好为 K 停止输出即可  。  #include&lt;bits/stdc++.h&gt;using namespace std...

2018-12-28 17:25:00 566

原创 P3431 [POI2005]AUT-The Bus-二维偏序DP

  P3431 [POI2005]AUT-The Bus 思路 :路线是向右上方运动的。我们首先对y排序,离散化.然后很容易发现,我们的状态转移为  f [ i ] = f [ j ] + v a l [ i ] ( x [ i ] &gt; x [ j ]  & &  y [ i ] &gt;  y [ j ] ),这时候维护当前位置之前的最大值即可. 按x进行排序 ,树状数组查询 1 ...

2018-12-27 20:15:34 354 1

原创 P4170 [CQOI2007]涂色-区间DP

P4170 [CQOI2007]涂色 思路 :理解为“把一段连续的区间改成一个定值 当i!=j且s[i]==s[j]时,可以想到只需要在首次涂色时多涂一格即可,于是f[i][j]=min(f[i][j-1],f[i+1][j]) 当i!=j且s[i]!=s[j]时,我们需要考虑将子串断成两部分来涂色,于是需要枚举子串的断点,设断点为k,那么f[i][j]=min(f[i][j],f[i][k...

2018-12-27 15:24:51 283

原创 P2774 方格取数问题-最小割模型

P2774 方格取数问题 把点权转换为了边权,我们的目的是断开一些边,使得没有路径从源点到达汇点(为了满足题目的条件)。 然后我们要使断开的边的权值之和最小(断开的边就相当于是不选那个点,就是剩下的边权之和最大) 所以我们可以跑一遍最大流求出最小割,然后用总的边权减去它就是我们的答案了 #include&lt;bits/stdc++.h&gt;using namespace std...

2018-12-27 09:27:27 289

原创 Keywords Search HDU - 2222 -AC自动机

 裸#include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 567891int ans,cnt,nxt[maxn],t,n;int tree[maxn][32],bo[maxn];void made(char *s){ int u=1,len=strlen(s); for(int i=0; i...

2018-12-26 20:58:03 256 2

原创 Chip Factory HDU - 5536 -01字典树

Chip Factory  HDU - 5536  题目大意:n个数字的序列中,找出三个数字使得(a[i] + a[j])^a[k]最大。 题目思路:把这n个数字保存下来建在一个01字典树上面。因为i,j,k三个数字不能重复,所以删去要用的i和j, 再在里面找出能和num( a[i]+a[j])异或出的最大值。(注意  (1 &lt;&lt; i) &amp;  x  ?  1  ...

2018-12-26 18:22:25 295

原创 6005-最长递增子序列 -DP-最大流

6005.「网络流 24 题」最长递增子序列 n<=500 思路:先用dp求出第一问的答案,和 dp数组,dp[i]代表以i为终点最长不下降子序列的长度 对于第二问,源点T向 dp[i]等于第一问答案的点连边,dp[i]=1的点向汇点S连边,中间的点 u和点v,如果 dp[u]=dp[v]+1且a[u]>...

2018-12-26 16:33:25 311

原创 LiberOJ -6210-tree -树形DP

https://loj.ac/problem/6210 题意 :按照定义的路径计算权值方式找一条最小的权值路径。 思路 :设定dp[ i ] [ 0 / 1 ] 以1为根的情况下,以  i 节点下子树走分别全1和走一次2和剩余全走1 的最长链 每遍历一次子树,统计一次答案,DP过程中 ans1,统计 路径全为1的最大值。 ans2统计路径走 一段1中间一个2再走一段1的最长距离,三个最值更...

2018-12-26 11:52:54 311

原创 C. Ehab and a 2-operation task-构造

题意: n个数,最多n+1操作,要么前i个数加x,要么前i个数对x取余,最后使得严格递增 思路 直接进行n+1次,最终目标为 1 - n-1 的递增序列。开始所有数都取余n;后面n次。 从后面开始到对 看看 这个位置的数 与 其对应的  最终应该成为的   i-1 差距是多少 ,并且需要把后面的对他造成的影响, 算在其中,不断传递 过程中 相邻两个 之间才会有影响 ,因为 传递一次 影响...

2018-12-25 22:30:28 289

原创 6281. 数列分块入门 5 -区间开方

#6281. 数列分块入门 5     标记区间是否 已经全为1,暴力分块即可。  #include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 56789int a[maxn],n,sum[maxn],flag[maxn];int b[maxn],op,l...

2018-12-25 22:28:09 359

原创 6279. 数列分块入门 3 - set维护

#6279. 数列分块入门 3   利用set,只是关心相对大小,于是相同的元素自然可以只保留一个,还能保证有序,其他操作类似 #include&lt;bits/stdc++.h&gt;using namespace std;#define inf 0x3f3f3f3f#define maxn 123456int n,op,l,r,c,ta...

2018-12-25 21:00:45 259

原创 H - The Battle of Chibi HDU - 5542 -dp-树状数组

H - The Battle of Chibi  HDU - 5542  题意:给出长度为n的序列,问这个序列中有多少个长度为m的单调递增子序列。 思路:dp[i][j],长度为 j 的单调递增子序列第 j 个位置 为 a [ i ]的方案数 ,可以由在其前面 并且 小于它 的  长度为 j-1 的 单调递增子序列的方案数求和 得到,长度为 j-1 的状态可以用树状数组维护。 ...

2018-12-25 20:24:02 185

原创 6278. 数列分块入门 2 -二分查找

#6278. 数列分块入门 2     思路:由于要查询小于x的数的个数,我们想到如果每个块内的元素是有序的话,可以直接二分很快得到结果。 于是对于每一块中的元素都保存在一个vector容器中,涉及到加法操作时,如果是完整的块, 直接打标记,否则暴力修改,然后注意把这个快重新排序。(可以考虑归并排序 优化) 查询时就是完整的块二分求解,否则暴力查询...

2018-12-25 19:50:20 266

原创 6277. 数列分块入门 1-区间修改-单点查询

  #6277. 数列分块入门 1   加法标记,表示对整个区间的所有数加上标记值。于是做法就很简单了注意分块大小 sqrt( n/3 )较优 。 #include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 56789int n,a[maxn],l,r,j;int op,bi...

2018-12-25 16:44:18 248

空空如也

空空如也

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

TA关注的人

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