自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iwi

  • 博客(75)
  • 问答 (1)
  • 收藏
  • 关注

原创 洛谷 P2627 修剪草坪

题目:修剪草坪思路:dp,用单调队列优化转移。代码:#include<bits/stdc++.h>using namespace std;#define maxn 100000#define ll long longint n,k;ll a[maxn+5];ll f[maxn+5],que[maxn+5];int h=0,t=0;void read...

2018-08-31 21:47:03 290

原创 tyvj 1650 LOJ #10172 涂抹果酱

题目:涂抹果酱思路:使用3进制状压。代码:#include<bits/stdc++.h>using namespace std;#define maxn 10000#define maxm 5#define maxs 250#define md 1000000#define ll long longint n,m,k;vector<int&gt...

2018-08-31 12:24:43 505

原创 洛谷 P2607 [ZJOI2008]骑士

题目:骑士思路:树形dp。最后一个点被卡常90分留念,感觉卡不过去了……代码:#pragma GCC optimize(2)#pragma GCC optimize(3)#pragma GCC optimize("Ofast")#pragma GCC optimize("inline")#pragma GCC optimize("-fgcse")#pragma GCC opt...

2018-08-31 10:54:02 142

原创 洛谷 P1352 没有上司的舞会

题目:没有上司的舞会思路: f[x][w]表示x的状态为w的最大开兴值。 转移方程: f[x][0]=∑max(f[y][0],f[y][1])f[x][0]=∑max(f[y][0],f[y][1])f[x][0]=∑max(f[y][0],f[y][1]) f[x][1]=∑f[y][0]  +c[x]f[x][1]=∑f[y][0]  +c...

2018-08-30 18:35:39 105

原创 洛谷 P3155 [CQOI2009]叶子的染色

题目:叶子的染色思路: 嗯首先每个节点都只有3种状态:白色、黑色、无色。 个人感觉选择根节点不太好处理,那我们先讨论假如根节点确定的情况。 我们先假设一个节点的所有儿子都有颜色,来看一下选择的情况。 如图(日常毁图祭),w代表white,b代表black。此时可以改变fa以及son的颜色,考虑局部最优的情况: 首先可以知道,儿子的颜色不可改变,但是可以去掉。即一个儿子已经被染...

2018-08-30 16:35:42 358

原创 Codeforces Round #506 (Div. 3) E. Tree with Small Distances (cf 1029E)

题目:Tree with Small Distances题意: 给出一棵树,求最少加多少条边,使得1号节点到每个节点的距离小于等于2。思路: 比赛时做的人最少的题,赛后写了好久… ↑↑↑QωQ【绝望.jpg】嗯这题一眼看出来是树形dpdpdp,实现上不太容易。 刚开始的思路是令f[x][w]f[x][w]f[x][w]表示节点xxx的上面的第w−1w−1w-1个节点向111...

2018-08-26 16:57:37 381 2

原创 洛谷 P2016 战略游戏

题目:战略游戏思路: 可以知道,一个节点不用放哨兵,那么它的父节点和所有的子节点都必须放哨兵。 令f[x][w]f[x][w]f[x][w]表示第xxx个节点放哨兵的状态为www所用的最少哨兵数量。其中,bool wbool wbool\ w 为000代表没放哨兵,为111代表放了哨兵。 转移方程: f[x][1]=∑min(f[y][0],f[y][1]+1)f[...

2018-08-26 14:45:45 156

原创 LOJ 10155. 「一本通 5.2 例 3」数字转换

题目:数字转换思路: 对于每一个数,把它和它能够转移到的数之间连一条边。 由于不存在多元环,这个图本质上是一棵树。 然后在树上求最长链的长度就可以了。 具体实现就是dfs遍历整棵树,对于以每个点iii为根的子树上的最长链长f[i]=max(d[j])+max(d[k])f[i]=max(d[j])+max(d[k])f[i]=max(d[j])+max(d[k]),其中 j∈sonij...

2018-08-26 12:07:18 715

原创 Codeforces Round #506 (Div. 3) D Concatenated Multiples (cf 1029D)

题目:Concatenated Multiples题意:给出nnn个数,求数对(x,y)(x,y)(x,y)的个数,使得axaxa_x和ayaya_y简单拼接后能被kkk整除。思路: 对于两个数xxx和yyy,简单拼接后能被kkk整除,当且仅当 x×10log10ymod k + y mod k == 0x×10log

2018-08-25 17:48:44 592

原创 Codeforces Round #506 (Div. 3) F Multicolored Markers (cf 1029F)

题目:Multicolored Markers题意:现有一面长宽可无线延伸的网格,现要求将aaa个格子染成红色,bbb个格子染成蓝色。要求染成的图形为矩形,且至少有一种颜色染成了矩形。求染成的图形的最小周长。思路: 枚举染成的大矩形的边长,同时维护内部可以框住的小矩形的某一边的最大边长,判断一下能否围住就可以了。 当时以为只需要考虑占地多的染料围住占地少的染料,结果WA了。其实占地少的...

2018-08-25 14:43:42 305

原创 Codeforces Round #506 (Div. 3) C Maximal Intersection (cf 1029C)

题目:Maximal Intersection题意:给出数轴上的一些线段,可以任意删掉其中的一条线段,求最大的删除后所有线段的重合处的长度。思路: 可以预先算出不删除时最靠右的左端点和最靠左的右端点,以及第二靠右的左端点和第二靠左的右端点。 然后判断能否用 第二靠右的左端点和第二靠左的右端点 来更新 最靠右的左端点和最靠左的右端点。 注意当 第二靠右的左端点和第二靠左的右端点 在同一...

2018-08-25 14:08:51 205

原创 Codeforces Round #506 (Div. 3) B Creating the Contest (cf 1029B)

题目:Creating the Contest题意:给出一个递增的序列aaa,求一个最长的子序列使得序列中的每个数都不大于前一个数的两倍。思路: 刚开始以为要像求最长上升子序列的二分解法一样求,然后发现根本不用这样子做。 由于原序列aaa是递增的,所以当aiaia_i大于2∗ai–12∗ai−12*a_{i-1}时,aiaia_i也一定大于ai–2ai−2a_{i-2},ai–3ai−...

2018-08-25 13:44:35 181

原创 Codeforces Round #506 (Div. 3) A Many Equal Substrings (cf 1029A)

题目:Many Equal Substrings题意:给出一个字符串ttt,求一个最短的字符串sss,使得sss中恰好包含kkk个ttt。思路: 可以看出,kkk个字符串ttt是有公共部分的,即ttt的最长公共前后缀长度(意义等同于kmpkmpkmp算法中的nextnextnext数组)。 由于数据范围极小,可以暴力求出ttt的最长公共前后缀,计作lll。 答案就是k−1k−1k-1...

2018-08-25 13:28:52 205

原创 洛谷 P2015 二叉苹果树

题目:二叉苹果树思路: 树形dp/记忆化搜索。 f[i][j]f[i][j]f[i][j]表示以iii为根,其中需要保留jjj个分叉点最多可保留多少个苹果。 转移方程:f[i][j]=max(f[ch1][k]+w1+f[ch2][j−k−1]+w2)f[i][j]=max(f[ch1][k]+w1+f[ch2][j−k−1]+w2)f[i][j]=max(f[ch1][k]+w1+f[...

2018-08-25 11:54:36 151

原创 洛谷 P1005 矩阵取数游戏

题目:矩阵取数游戏思路: 每一行单独考虑。 f[lne][i][j]f[lne][i][j]f[lne][i][j]表示第lne行,[i,j][i,j][i,j]内的最大价值。 f[lne][i][j]=max(mi[k]∗a[lne][j]+f[lne][i][j−1],mi[k]∗a[lne][i]+f[lne][i+1][j])f[lne][i][j]=max(mi[k]∗a[ln...

2018-08-24 22:39:24 186

原创 LOJ #10151. 「一本通 5.1 练习 2」分离与合体

题目:分离与合体思路: f[i][j]f[i][j]f[i][j]表示区间[i,j][i,j][i,j]中可获得的最大价值。 转移方程:f[i][j]=(a[i]+a[j])∗a[k]+f[i][k]+f[k+1][j]f[i][j]=(a[i]+a[j])∗a[k]+f[i][k]+f[k+1][j]f[i][j]=(a[i]+a[j])*a[k]+f[i][k]+f[k+1][j],其...

2018-08-24 18:02:19 868

原创 LOJ #10150. 「一本通 5.1 练习 1」括号配对

题目:括号配对思路: 最开始以为[]和()分开处理就好了,但是[(])这样的数据过不去。 我们可以计算出这段序列有多少已经配好对的括号,[(])只计算[]或()中的一个,而[((]))只计算(())。 然后剩下来的每个字符都需要一个相应的字符与之对应。代码:#include<bits/stdc++.h>using namespace std;#define ...

2018-08-24 15:28:40 820

原创 洛谷P4363 [九省联考2018]一双木棋chess

题目:一木双棋思路: STO ouuan&cxy 状压轮廓线,记忆化搜索。 省选咕咕现在才过……太菜了啊代码:#include<bits/stdc++.h>using namespace std;#define maxn 10#define Sstate ((1<<n)-1)#define Tstate (((1&

2018-08-23 16:23:48 193

原创 洛谷P2252 取石子游戏

题目:取石子游戏思路: 结论题。 因为蜜汁取整70了好久orz代码:#include<bits/stdc++.h>using namespace std;int main() { int n,m; scanf("%d%d",&n,&m); printf("%d",!(min(n,m)==(int)((1+sqrt(5.0))...

2018-08-23 11:58:15 203

原创 洛谷 P2197 nim游戏

题目:nim游戏思路: 大佬的博客代码:using namespace std;int main() { int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); int s=0; while(n--) { ...

2018-08-23 10:47:46 177

原创 UVA10529 Dumb Bones

题目:Dumb Bones题意: 来自luogu—— 你正在尝试用多米诺骨牌搭成一条直线,以便最后试验时推倒它们 (确实,搭建某些东西仅仅为了推倒看上去没啥意义,但你有一些奇怪的爱好) 然而你在搭建过程中可能会弄倒骨牌,这将波及到邻近的部分 现在需要你来求将骨牌搭建完成所需的期望步数思路: 令f[i]表示连续i个骨牌搭建的期望步数。 枚举已经搭建了i-1个骨牌,还剩k第k个位...

2018-08-22 20:06:26 150

原创 P1291 SHOI2002 百事世界杯之旅

题目:百事世界杯之旅思路: 即求n∗(1+12+13+...+1n)n∗(1+12+13+...+1n)n*(1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{n}),注意向左对齐。代码:#include<bits/stdc++.h>using namespace std;#define ll long longint n;l...

2018-08-21 11:57:52 297

原创 Codeforces Round #505 D Recovering BST(cf 1025D)

题目:Recovering BST题意:给出n个升序排列的数,求是否能用这n个数组成一颗二叉排序树。思路: 考场上——看标题,BST!看了题面后,我zz的想,这不就是裸的图论题么…然后就一顿敲,交上去一遍AC,心里美滋滋。结果正式测评就在51个点WA了。 其实正解是dp。 令L[i][j]表示以i为根,i的左子树为i的左边j个数 这样的bst是否存在。 同理R[i][j]表示以i为...

2018-08-20 21:02:34 882 4

原创 Codeforces Round #505 C Plasticine zebra (cf 1025C)

题目:Plasticine zebra思路: 将序列首位相接,题目即求环上的最长交错字段。 为什么可以这样做呢? (图丑勿喷) 比如说假设我们将序列abcdef从bc处截断并翻转得到第二行的序列得到,可以发现,序列bafedc变成环形后等价于fedcba。由于是求01序列的最长交错子串,变更后的串也就等价于abcdef。同理将第二个串从ed间截断并翻转得到第3个串,也等价于环形上的...

2018-08-20 19:17:50 243

原创 Codeforces Round #505 B Weakened Common Divisor (cf 1025B)

题目:Weakened Common Divisor题意: 比赛时我的思路是求出每一对ai和bi的lcm,计作ci,再求出gcd(ci),最后求出这个gcd的一个质因数即可。问题是质因数的分解问题,max{gcd}=1e18,如果要找到质因数最多要做1e9次运算。然后我就被hack掉了… hack数据:11000000007 1000000009正确思路:将a1和b1分解质因...

2018-08-20 12:02:07 236

原创 Codeforces Round #505 A Doggo Recoloring (cf 1025A)

题目:Doggo Recoloring题意:给出一段序列,可以把出现次数大于等于2的数改成另外一个数(必须将这个数全部改掉),求能否将全序列变成一种数。思路: 只要序列中出现了次数大于等于2的数,那么这个序列就可以输出Yes,否则输出No。 特别的,当序列中的数只有一个数时输出Yes。代码:#include<bits/stdc++.h>using namesp...

2018-08-20 11:39:04 160

原创 poj 3071 Football

题目:Football思路: 就是用一个类似于线段树的树形结构维护下。 大概我是唯一一个不会推公式的,肯定是数据结构学傻了。代码:#include<iostream>#include<cstdio>using namespace std;#define db double#define maxn 7#define maxm (1&lt

2018-08-19 16:13:26 227

原创 数学一本通 骰子

题目: 思路: 令f[i][j]表示前i次投掷总和为j的方案数。 边界f[1][i]=i。 转移方程:f[i][j]=Σf[i-1][j-k]。 最后除以一个gcd。代码:#include<bits/stdc++.h>using namespace std;#define maxn 24#define m 6#define maxs 150#def...

2018-08-19 11:22:14 196

原创 CF1016C Vasya And The Mushrooms

题目:Vasya And The Mushrooms题意:有一个人在 2 × n 的网格图上种蘑菇, (i, i) 位置的格子每单位时间会增长V(i,j)个蘑菇。他从 (1,1) 开始,每单位时间移动一个格子。他决定访问每个格子一次且仅一次。思路: 依题意可得,轨迹一定如图所示: (图丑求轻拍~) 那么就可以预处理出两段的和,在O(n)的时间内枚举分界线查询即可。代码:...

2018-08-17 21:42:58 238

原创 CF1015E Stars Drawing

题目:Stars Drawing思路: 由于不需要求最小覆盖,就可以在所有可覆盖的地方都覆盖上一个十字形。 对于每个点,预处理出它上下左右能延伸的最长距离,那么可以有它覆盖上的十字形的size为min{up,down,right,left}。 然后在处理出两个前缀和数组judgerow、judgecol,在每个可处理出的十字形的上下左右端点相应的进行加1减1。 当一个点为*且judge...

2018-08-17 16:50:56 284

原创 CF933A A Twisty Movement

题目:Twisty Movement思路: dp。相当于求一个最长的形如11111122222112222的序列。 令f[i,j]为前i个字符在第j段的答案。其中每一段指11111,11122,22111,2222这种形式。 转移方程:f[i][j]=f[i][j-1];if(a[i]==(j+1)%2+1) f[i][j]=max(f[i][j],f[i-1][j]+1);...

2018-08-16 15:09:27 517

原创 CF 735C Tennis Championship

题目:Tennis Championship思路:dp,h=log n。代码:#include<bits/stdc++.h>using namespace std;#define ll long longll n;ll f[1000000]={0};int main() { scanf("%lld",&n); int ans=1; ...

2018-08-16 14:00:59 187

原创 洛谷 P1725 琪露诺

题目:琪露诺思路: 单调队列优化dp。 令f[i]表示走到第i个位置的最大冰冻指数,转移方程f[i]=a[i]+max{f[j]},j∈[i-r,i-l]。 其中,max{f[j]}可用单调队列维护。 最后的答案为max{f[j]},j∈[n-r+1,n]代码:#include<bits/stdc++.h>using namespace std;#define...

2018-08-15 23:24:51 265

原创 Astar2018 初赛R2T4 p1m2

题目:度度熊很喜欢数组!! 我们称一个整数数组为稳定的,若且唯若其同时符合以下两个条件: 1. 数组里面的元素都是非负整数。 2. 数组里面最大的元素跟最小的元素的差值不超过 1。 举例而言,[1,2,1,2] 是稳定的,而 [−1,0,−1] 跟 [1,2,3] 都不是。 现在,定义一个在整数数组进行的操作: * 选择数组中两个不同的元素 a 以及 b,将 a 减去...

2018-08-15 20:15:37 233

原创 bzoj 2654 tree

题目:tree思路: 假设给所有百边加上一个值mid,此时刚好的最小生成树用了Need条百边,那么此时所求的解为s-mid*need,其中s为最小生成树大小。 此时二分mid即可。 只是不知道为什么代码比别人的长很多Orz……代码:#include<bits/stdc++.h>using namespace std;#define maxn 50000#def...

2018-08-15 18:16:06 126

原创 洛谷 P1886 滑动窗口

题目:滑动窗口思路:用两个单调队列维护。代码:#include<bits/stdc++.h>using namespace std;#define maxn 1000000int n,m;int a[maxn+5]={0};int q1[maxn+5],q2[maxn+5];int h1=0,t1=0;int h2=0,t2=0;vector&lt...

2018-08-15 15:58:37 224

原创 洛谷 P1638 逛画展

题目:逛画展思路:大概就是用一个类似单调队列的东西搞一下就好了。代码:#include<bits/stdc++.h>using namespace std;#define maxn 1000000#define inf (1<<30)int n,m;int a[maxn+5],b[maxn+5];int p=0,q=inf;int cnt=...

2018-08-14 22:40:35 271

原创 洛谷 P1440 求m区间内的最小值

题目:求m区间内的最小值思路:单调队列模板题。代码:#include<bits/stdc++.h>using namespace std;#define maxn 2000000int n,m;int a[maxn+5]={0};int que[maxn+5]={0};int h=1,t=1;int main() { scanf("%d%d"...

2018-08-14 21:59:35 380

原创 poj 2406 Power Strings

题目:Power Strings思路:先用kmp求出nxt数组,当n%(n-nxt[n])==0时,n/(n-nxt[n])就是答案。代码:#include<cstring>#include<cstdio>#include<iostream>#include<string>using namespace std;#define...

2018-08-14 19:54:58 162

原创 HDU 6386 Age of Moyu

题目:Age of Moyu思路:裸的堆优化dijkstra代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define maxn 100struct Pair{ int x,y; Pair(){} Pair(int xx,int yy) { ...

2018-08-14 16:32:27 199

空空如也

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

TA关注的人

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