自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDU - 2643 Rank 第二类斯特灵数(递推)

题意:给定n个人,问他们所有的排序方式有多少种,两个人rank可以相等思路:把相同rank的人看作同一个集合,这样的话问题转换成把n个不同的人分成 1,2....n 个集合的所有种类数,①分成m个集合后还可以对他们进行全排列;对于①,是裸的第二类斯特灵数的结论,也可以按递推的想法想:S[i][j] 表示 i 个不同的数分为j个不同的集合的数目,递推式:S[i][j] = S[i-1][j-1] +...

2018-05-29 13:38:10 223

原创 Codeforces Testing Round #4 B. Smile House 倍增+Floyd

输入:结点u, v, 两点之前边权 d(u-v), d(v-u);题意:给定有向图,带边权,问最小的正环(环的权值和为正数)包含结点个数;思路:倍增想法+Floyd判正环d[p][i][j] 表示 最大间隔为(2^p)的两个点i , j 之间的最长距离; 利用的倍增的思想;这里的Floyd不是真正的,只是利用那个思想,用来更新当前长度两点间的最大权值;然后枚举上述的 p ,如果当前新图能形成的正环...

2018-05-28 21:02:04 263

原创 Codeforces Testing Round #4 A. Punctuation 分割单词

题意:给定字符串,把其中的单词和标点符号隔开,需要满足以下3条规则:1 如果两个单词之间没有标点符号,则它们应该分隔一个空格2 每个标点符号前应该没有空格3 每个标点符号后应该有一个空格思路:将每个单词、标点符号作为string存起来,然后输出的时候判断当前位置后面是否能够添加空格;#include<bits/stdc++.h>using namespace std;const i...

2018-05-28 16:01:52 159

原创 codeforces 915D Almost Acyclic Graph 拓扑判环(Onm)

题意:给定有向图,问删掉一条边能否使得整个图无环思路:点不多,但是边很多,枚举删掉哪条边再判环不可行,所以有两种优化方法:法一:先判是否有环,如果有的话找到一个环,因为要删的哪条边一定来自这个环,这样的话只要枚举这个环上的边就够了(On),然后判删掉后有没有环,复杂度可以做到Onm;法二:我们用拓扑判环的方法(On),只需要知道每个点的入度就可以了,对于这个题,只要证明可行性无需找到删掉哪个边,然...

2018-05-21 23:45:08 245

原创 CodeForces 977 D. Divide by three, multiply by two 除以三排序

题意:给定一个序列,重排,使后面一个数是前面一个数的2倍或者(1/3);思路:法一:建图,跑dfs;法二:一共有两种关系,题说一定有解,所以左边的一定是右边的数的3倍,或者除去3的倍数的因子以外的因子右边是左边的两倍;这样的话对于每个数除以三并记录个数,然后排序;法二代码:#include <bits/stdc++.h>using namespace std;typedef lon...

2018-05-21 23:24:50 245

原创 Codeforces 912E Prime Gift 分段枚举+二分

题意:给定包含n个数的素数集合a[] ,定义一个新的集合,其中除一以外的所有的数的因子必须是a集合中的,而且按顺序排放;求第k个数;思路:首先给定的a[] 长度是17不大但是没办法枚举所有的可能,我们可以想到分段枚举来降低复杂度;将a[] 分成两段,分别求出所有小于1e18的所有的数的可能,得到两个序列,然后二分答案(设为m),对于每个m遍历两个序列可以得到小于这个数的个数;ps:此做法借鉴于Q神...

2018-05-20 22:08:14 323

原创 CodeForces 977F Consecutive Subsequence 离散化+dp

题意:给定长度为n的序列a[] (n<=1e5 && a[i] <= 1e9),要求输出最长的相邻数值差一的最长上升序列;思路:如果a[i]很小的话,我们可以用dp[j]表示以j结尾的序列的最大长度,然后从左往右遍历,对于当前a[i],我们可以得到递推式:dp[a[i]] = max( dp[a[i]], dp[a[i]-1]+1 );然后想到对a[...

2018-05-20 21:29:12 264

原创 CodeForces - 977E Cyclic Components dfs

题意:找到所有的单链环的个数思路:dfs 遍历整个图,每次把一个连通块标记出来,并判读是否每个点的度数都为2(是否为单链环);#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<iostream>#include<vec...

2018-05-20 20:37:57 357

原创 蓝翔杯-翻硬币 贪心

思路:找到两个串对应不相同的位置,可以知道,要是想变成一样的,得两个不同的位置同时往中间变换得到,花费是之间的距离可以知道这样的话,相邻的两个位置得到一个花费;#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 7;char s[maxn], t[maxn];int main() { s...

2018-05-17 21:23:10 232

原创 CodeForces - 976D Degree Set 构造+建图

题意思路待更新;#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<iostream>#include<vector>using namespace std;typedef long long ll;co...

2018-05-17 11:56:26 248

原创 山东省第九届ACM省赛总结

         山东省第九届ACM省赛总结赛前:五一训练赛结束就开始感到紧张,虽然觉得我们队正常发挥金牌(6|7题)还是很有希望的,但是压力感还是很明显的。热身赛还是挺轻松的,有个题没做出来,蜜汁RE,很不好的一点是:除了题目告知的栈深度8900+,其他的都没测出来,包括一秒运行多少,数组越界,甚至a[-1]都能返回正确结果,无形之中增加了紧张感,和未知的恐惧感,现在想来,还是源于自己不...

2018-05-11 09:43:56 297

原创 Codeforces Round #480 (Div. 2) D - Perfect Groups 数论+暴力

题意:首先对于一个序列X,设一个值为ans1,ans1表示把这个序列划分成的最小组数,使得每一组中任意两个数相乘是平方数对与本题:给定原序列A,对于A的任意一个连续子序列X,都有一个ans1,问A序列所有子序列的ans1都有多少个;输出ans[i],表示ans1为i的子序列的个数;思路:首先对于每个数,如果它有 平方数因子,那可以直接除掉,因为不影响,也为了方便后面计算ans1;O(n*max(a...

2018-05-10 07:42:36 449

原创 Codeforces Round #480 (Div. 2) C - Posterized 贪心

题意:给定一个序列A,(ai:【0,255】),可以组合其中连续的一些数,这些数个数不能超过m;这些数可以以最小的数作为key问这个序列A对应的字典序最小的 key 序列是啥;思路:贪心的想法,从左到右,对于当前数a[i],如果已经合入某个组,那直接输出其key;否则:为了字典序最小:我们找到它前面(包括它)的第m个数,从这个数往后找是否有一个数还没加入某个组,或者加入的某个组能够包含a[i],那...

2018-05-10 07:32:07 187

原创 Codeforces Round #480 (Div. 2) B - Marlin 对称构造

题意:4*n (n为奇数)的矩形格子上面见商店,只能在2*(n-2)的内部建造,使得左上角到右下角和左下角到右上角的“最短路径条数相等”;思路:“最短路径条数相等”,因为只能上下左右移动,所以一个只能往右或下移动,一个只能往右或上移动;我们大致可以想到构造上下对称的局面,使得两个人所 都能经过同样的点;多推一下可以发现有几种情况:m为偶数,直接上下对称两部分m为奇数,可以“一”和“凹”两种情况;#...

2018-05-10 07:21:00 161

原创 Codeforces Round #480 (Div. 2) A - Links and Pearls 遍历字符串

题意:问能否构成两个珍珠之间链数目相等?思路:首先,珍珠数目(a)为0或1,答案都为YES,其他情况时:链的数目(b)是珍珠数目(a)的倍数也是YES,其他情况是NO;#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 7;typedef long long ll;int n, m;int a...

2018-05-10 07:12:22 145

原创 Codeforces Round #479 (Div. 3) C - Less or Equal 计数

题意:对于一段序列;给定长度n 和 一个k,找一个[1, 1e9] 的数x,使得序列中恰好k个数小于等于x思路:记录每个数,排序,对于序列寻找;;需要注意k = 0 的情况#include <bits/stdc++.h>using namespace std;const int maxn = 2e5 + 7;map<int, int> mp;int n, k;in...

2018-05-08 21:25:15 169

原创 HDU - 4960 Another OCD Patient 真实的DP

题意:给定序列a,合并多个连续的段,使得整个序列成为回文序列;下一行给定序列v,v[i]表示合并i个数需要的花费;思路:需要的是回文序列,我们可以考虑到分别从两边合并;sum[i] 表示a序列前缀和; id[i] 表示 跟sum[i]相同的后缀的位置,不存在为-1;dp[i] 表示前i个合并完并且最后到id[i]位置也合并完的最小花费;这个代码很满意比上一篇好多了;#include <ios...

2018-05-02 20:35:29 155

原创 HDU - 4960 Another OCD Patient 记忆化

题意:给定序列a,合并多个连续的段,使得整个序列成为回文序列;下一行给定序列v,v[i]表示合并i个数需要的花费;思路:可以直接记忆化往下递归,可能数据不够强,能够(900ms)卡着时间过,当然内存消耗也很大;另一种真实的dp见下篇博客; 手动滑稽#include <iostream>#include <cstdio>#include <cstring>#...

2018-05-02 20:29:31 201

空空如也

空空如也

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

TA关注的人

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