
Codeforces
Tuesday..
这个作者很懒,什么都没留下…
展开
-
Codeforces 628D Magic Numbers
题意:求[a,b][a,b](a,ba,b不含前导0)之间的d−magicd-magic数中mm的倍数的个数。分析:计数dp Let’s call a number d-magic if digit d appears in decimal presentation of the number on even positions and nowhere else.仔细读题并观察例子就可以明确d原创 2016-02-22 10:21:28 · 426 阅读 · 0 评论 -
Codeforces 658C Bear and Forgotten Tree 3【构造】
题目链接:http://codeforces.com/contest/658/problem/C题意:给定结点数,树的直径(两点的最长距离),树的高度(1号结点距离其他结点的最长距离),写出树边的端点,一种情况即可。如不存在,输出-1。规定根为1号结点。分析:首先可以明确h<(d+1)/2h < (d + 1) / 2的时候不能构成树。 当 h!=dh != d 时,先将h−1h - 1个点和1连原创 2016-03-29 10:16:37 · 503 阅读 · 0 评论 -
Codeforces 660E Different Subsets For All Tuples【组合数学】
看了官方题解+q神的讲解才懂。。。 智商问题。。 讲道理。。数学真的比脱单难啊。。。题目链接:http://codeforces.com/problemset/problem/660/E题意:给定数字范围,问由这些数字组成的长度为n的串的子序列有多少种?分析:方法一:枚举长度k,计算以其为子序列的原串种数。 k=0k = 0时,ans=mnans = m^n k≥1k \ge 1时,设序列元原创 2016-04-12 12:33:26 · 1829 阅读 · 2 评论 -
Codeforces 651E Table Compression【并查集】
占坑补题原创 2016-03-12 10:01:38 · 602 阅读 · 0 评论 -
Codeforces 628F Bear and Fair Set
题意:给定若干个上限uptoupto以及集合中在[1,upto][1,upto]中的元素个数,问是否存在这样的集合使得集合中的元素除以5的余数的个数相等。分析:首先可以想到区间的数与其除以5的余数和区间编号分别一一对应,这样我们就可以在他们之间建立容量为1的边,而由于规定某个区间的元素个数,所以我们在源点和对应区间编号之间建立容量为元素个数的边,这样就满足题目中的限制条件。而要求余数个数相等,即均为原创 2016-03-01 10:13:02 · 787 阅读 · 0 评论 -
HDU 5641 King's Phone【模拟】
题意:给定一串密码, 判断是否合法。长度不小于4不能重复经过任何点不能跳过中间点,除非中间点已经经过一次。分析:3*3直接记录出可能出现在两点之间的点,直接模拟就好。 注意审题,别漏了判断。代码:#include <cstdio>#include<algorithm>#include<cstring>#include<map>const int maxm = 15, mod = 1原创 2016-03-13 08:30:30 · 346 阅读 · 0 评论 -
Codeforces 631C Report【其他】
题意:给定序列,将前a个数进行逆序或正序排列,多次操作后,求最终得到的序列。分析:仔细分析可以想到j<ij<i,且rjr_j小于rir_i的操作是没有意义的,对于每个ii把类似jj的操作删去(这里可以用multiset或者直接模拟栈的操作),最后我们会获得一个严格下降的序列即ri>rjr_i > r_j && i<ji < j,并且相邻的tt不相等。 那么对于ri,ri+1r_i,r_{i+1},原创 2016-03-12 10:29:26 · 383 阅读 · 0 评论 -
Codeforces 631D Messenger【KMP】
题意:给定两个由字符串块(字符及连续出现的个数)组成的字符串,分析:KMP 这题唯一需要思考的地方就是如何处理字符串块。第一想到是把他们都展开然后进行KMP,可是展开后实在太长,所以必须按块进行处理,就必须把所有相邻的相同的块进行合并成一个大块。注意模式串开头结尾不需要严格相等,只要字符相同并且个数不小于模式串中的个数~~所以只需将模式串去掉开头和结尾进行匹配,最后再判断一下就好啦~ 既然要去掉原创 2016-03-12 10:43:36 · 689 阅读 · 0 评论 -
Codeforces 631B Print Check【模拟】
题意:按顺序给定列和行进行涂色,输出最终得到的方格颜色分布。分析:记录下涂的次序,如果某个元素的横和列都被涂过,那么就选择次序最大的颜色。代码:#include<iostream>#include<cstdio>using namespace std;const int maxn = 5005;int num[maxn][maxn];int ma[2][maxn];int ro[maxn原创 2016-03-12 10:09:00 · 641 阅读 · 0 评论 -
Codeforces 631A Interview【模拟水题】
题意:模拟模拟~~代码:#include<iostream>using namespace std;const int maxn = 1005;int a[maxn], b[maxn], fa[maxn], fb[maxn];int main (void){ int n;cin>>n; for(int i = 1; i <= n; i++){ cin>>a[原创 2016-03-12 10:04:52 · 368 阅读 · 0 评论 -
Codeforces 651D Image Preview【二分+枚举】
题意:若干张照片,从头开始可以向左右两边读,已经读过的不需要再读,有的照片需要翻转,给定读、滑动和翻转消耗的时间,求在给定时间内最多能读多少页?分析:首先明确,只横跨一次,即先一直读一边然后再一直读另一边,这样消耗的滑动时间最少。是否能在给定时间内读完页数很好判断,所以用二分+枚举,先枚举左边的所有可能情况,再二分右边求出最大页数, 再枚举右边,求出左边。取两边的最大值即可。代码:#include<原创 2016-03-12 09:58:12 · 474 阅读 · 0 评论 -
Codeforces 651C Watchmen【模拟】
题意:求欧几里得距离与曼哈顿距离相等的组数。分析:化简后得到xi=xj||yi=yjx_i=x_j||y_i=y_j,即为求x相等 + y相等 - x与y均相等。代码:#include<iostream>#include<algorithm>using namespace std;const int maxn = 1000000 + 5;typedef pair<long long , lo原创 2016-03-12 09:46:40 · 389 阅读 · 0 评论 -
Codeforces 651B Beautiful Paintings【贪心】
题意:给定序列,重新排序,使严格上升的子序列最多。求这些子序列总长度。分析:贪心,统计每个元素出现次数,每次从剩余的小的开始抽到大的,直到不再剩余元素。代码:#include<iostream>#include<algorithm>using namespace std;const int maxn = 1005;int a[maxn];int m[maxn];int main (voi原创 2016-03-12 09:33:50 · 359 阅读 · 0 评论 -
Codeforces 658B Bear and Displayed Friends【set】
题目链接:题意:给定元素编号及亲密度,每次插入一个元素,并按亲密度从大到小排序。给定若干操作,回答每次询问的元素是否排在前k个。分析:利用优先级队列,每次将元素直接插入队列中,由于k最大为6,所以遍历队列的前k个,然后看是否有查询的元素即可。代码:#include<iostream>#include<cstdio>#include<vector>#include<algorithm>#inc原创 2016-03-29 03:10:46 · 640 阅读 · 0 评论 -
Codeforces 660C Hard Process【二分 Or 尺取】
题目链接:http://codeforces.com/problemset/problem/660/C题意:给定0.1组成的数组,可以改变k个0使其为1,问最终可以得到的连续的1的最大长度。分析:很容易想到二分答案的做法, 二分长度,然后找是否存在满足题意的区间。 还可以用尺取法,这样在O(n)O(n)时间负责度内就可以完成,但是个人感觉写起来没有二分直观。。代码:二分:#include<cst原创 2016-04-11 20:30:59 · 1184 阅读 · 0 评论 -
Codeforces 660D Number of Parallelograms
题目链接:http://codeforces.com/contest/660/problem/D题意:给定若干点,判断能组成多少个平行四边形。分析:暴力枚举点,算出向量,如果两个向量相等,则可以构成一组平行四边形。然后最后不要忘记除掉重复计算。代码:#include<cstdio>#include<iostream>#include<map>#include<algorithm>using原创 2016-04-11 20:38:57 · 655 阅读 · 0 评论 -
Codeforces 665E Beautiful Subarrays【01trie树】
题目链接:http://codeforces.com/contest/665/problem/E题意:求异或值大于给定K的区间个数。分析:首先我们可以得到区间前缀的异或值。 这样我们将这个前缀M和K一起走trie树,如果该位K的值为0,那么无论走M最后的异或值都不会比K小,所以直接加上另一边的子树大小,然后继续沿着当前边走。如果该位K的值为1,那么想要大于等于K必须沿着另一边贪心的走。代码:#in原创 2016-05-09 10:58:43 · 1034 阅读 · 0 评论 -
Codeforces 622C Not Equal on a Segment 【线段树 Or DP】
题目链接:http://codeforces.com/problemset/problem/622/C题意:给定序列,若干查询,每个查询给定区间和tt,输出区间内任意一个不等于tt的元素的位置。分析:最初没看样例直接钦定输出每个不等于tt的元素位置,结果怎么想都是n2n^2复杂度的,后来看了样例才发现是输出任意一个。。 对于一个区间,如果区间最大值和最小值相等,那么该区间元素值全部相同,那么我们维原创 2016-07-06 22:49:17 · 621 阅读 · 0 评论 -
Codeforces 691E Xor-sequences【矩阵快速幂,好题】
题目链接:http://codeforces.com/problemset/problem/691/题意:给定序列,从序列中选择k(1≤k≤1e18)k(1 \le k \le 1e18)个数(可以重复选择),使得得到的排列满足xi与xi+1{x_i} 与{x_{i+1}}异或的二进制表示中11的个数是33的倍数。问长度为kk的满足条件的 序列有多少种?分析:首先每个元素自己构成一个长度为11的满足原创 2016-07-15 21:01:26 · 2078 阅读 · 0 评论 -
Codeforces 665D Simple Subset【构造】
题目链接:http://codeforces.com/problemset/problem/665/D题意:给定序列,从中找出最大的子集,使得子集中的数两两相加均为质数。分析:正确姿势貌似是最大团。可是不会,名字太难听也不是很想学。 nn只有1000,暴力一发。 我觉得整个序列找不到两两相加为质数的时候的说明不是很清楚,wa了之后才知道找不到的话直接输出任何一个数。代码:#include<cst原创 2016-05-07 20:19:05 · 635 阅读 · 0 评论 -
Codeforces 675D Tree Construction【构造,BST】
题目链接:http://codeforces.com/contest/675/problem/D题意:给定数列,依次插入二叉树,求子节点的父节点。分析:根据二叉树的性质,我们可以找到大于这个数的最小值和小于这个数的最大值,这两个数即为该数的父节点,那么如果结点对应的儿子结点为空,直接放进去即可。注意由于这两个数的性质不存在两个结点都没有空的子节点的情况。代码:/*On a hill is a tr原创 2016-05-17 17:48:16 · 735 阅读 · 0 评论 -
Codeforces 675C Money Transfers【贪心】
题目链接:http://codeforces.com/contest/675/problem/C题意:给定几个数,有正有负,每个数可以向相邻的数转移,问最少的转移次数使得最后所有数均为0。分析:我们可以将数列化为几个连续的区间,其中每个区间的和为0,且在区间长度为K的区间中,操作数为K-1,我们就是要最大化这样的区间个数。 我们可以维护一个前缀和,这样两个相同的前缀之间的区间的和即为0。代码:/*原创 2016-05-17 17:41:04 · 1099 阅读 · 0 评论 -
Codeforces 662D International Olympiad【贪心】
比赛的时候数长度在4位以内分类讨论了一下,其实他们完全是一个套路的。。并不需要讨论。 然后没有考虑前导0的情况,就wa了。。题目链接:http://codeforces.com/problemset/problem/662/D题意:用年份的后缀唯一的表示它,这个后缀不能在比他小的年份中使用过。 给定后缀,求年份。分析:长度为1的后缀可以表示10个年份。。 长度为2的后缀可以表示100个年份。。原创 2016-04-21 20:10:26 · 629 阅读 · 0 评论 -
Codeforces Round #354 (Div. 2)
比赛链接:A. Nicholas and Permutation分析:水题,找到1和n到两边距离的最大值即可。代码:/*--Codeforces 345 div2--Create by jiangyuzhu--2016/5/26*/#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#i原创 2016-05-27 22:52:11 · 503 阅读 · 0 评论 -
Codeforces 667D World Tour【最短路+枚举】
题目链接:http://codeforces.com/contest/667/problem/D题意:在有向图中找到四个点,使得这些点之间的最短距离之和最大。分析:最简单的Bellman求最短路复杂度太高。可以对每个点进行一次bfs,获得所有连通的点之间的最短距离。 点数最多3000,枚举中间两个点i,ji,j,对于点i考虑反向边的最远距离,对于点j考虑正向边的最短距离。 由于题目说点不同,所以原创 2016-05-01 23:54:56 · 518 阅读 · 0 评论 -
Codeforces 667C Reberland Linguistics【DFS】
一道卡题意的题。题目链接:http://codeforces.com/problemset/problem/667/C题意:一个串可以看成一个长度大于4的根,加上其后面的若干个相邻(in a row)不同的长度为2或3的子串组成。给定字符串,问你有多少种不同的子串。分析:很容易想到dfs的做法,注意剪枝的地方,只有在合理的情况下才标记这种情况。代码:#include<cstring>#includ原创 2016-05-01 17:13:34 · 1048 阅读 · 0 评论 -
Codeforces 635E Package Delivery【贪心】
题目链接:http://codeforces.com/contest/635/problem/E题意:从坐标为0的地方出发到坐标为dd的终点,初始油箱是满的,途中有若干加油站,坐标为xixi,每加一个单位的油收pipi元,油箱最多装n个单位,问到达目的地最少需要多少元。分析:之前在poj做过一个类贪心,是每个加油站油量有限,问最少需要经过多少加油站。 那一道贪心的原则是“直到走不到下一站,再在这个原创 2016-05-10 18:49:46 · 1251 阅读 · 0 评论 -
Codeforces 635D Factory Repairs【树状数组】
又是看了很久的题目。。。题目链接:http://codeforces.com/contest/635/problem/D题意:一家工厂生产维修之前每天生产b个,维修了k天之后每天生产a个,维修期间不生产。 若干操作: 1. 1 d aa 第d天要求aa个订单,一个订单对应一个物品,必须在这一天中完成。 2. 2 d 第d天开始维修,最终能得到多少订单。分析:树状数组分别维护维修前和维修后得到的原创 2016-05-10 13:14:00 · 949 阅读 · 0 评论 -
Codeforces635C XOR Equation【数学】
题目链接:http://codeforces.com/contest/635/problem/C题意:给定两个数的和s及异或x,求两个数的可能情况。分析:我们有公式a+b=a a + b = a & b∗2+ab * 2 + a ^ bb 这样对于与和异或的结果一位一位的来考虑即可。 注意:题目特别强调Two positive integers a and b,所以在ss与xx相等时,我们要减原创 2016-05-10 14:37:06 · 505 阅读 · 0 评论 -
Codeforces 651A Joysticks【贪心】
题意:两根操纵杆,每分钟操纵杆消耗电量2%,每分钟又可以给一个操纵杆充电1%(电量可以超过100%),当任何一个操纵杆电量降到0时,游戏停止。问最长游戏时间。分析:贪心,每次选择电量剩余最少的充电。代码:#include<iostream>#include<algorithm>using namespace std;const int maxn = 1005;int a[maxn];int原创 2016-03-12 09:25:47 · 390 阅读 · 0 评论 -
Codeforces 645D Robot Rapping Results Report【拓扑排序+二分】
Codeforces 645D Robot Rapping Results Report原创 2016-03-19 22:55:22 · 642 阅读 · 0 评论 -
Codeforces 653D Delivery Bears【二分+网络流】
题目链接:http://codeforces.com/problemset/problem/653/D题意:x个熊拿着相同重量的物品,从1号结点沿着路走到N号结点,结点之间有边相连,保证可以从1号走到N号。 The total weight that travels across a particular edge must not exceed the weight capacity of t原创 2016-03-21 18:04:47 · 580 阅读 · 0 评论 -
Codeforces 404D Minesweeper 1D
题意:给定字符串,其中’*’表示地雷,’1’表示左/右边有一个地雷相邻,’2’表示左右两边均有地雷相邻,’0’表示左右均无地雷相邻,’?’表示待定,可填入0,1,2或者地雷,有多少种表示方法使字母串满足规定。分析:不难想到用dp[i][j]dp[i][j]其中j为0,1,2,3(即四种状态),表示下标为i的元素为j状态时,前i+1个字符满足规定的种数。起初这样做,每次都还需要对前一个元素为’1’时进原创 2016-02-03 18:51:27 · 694 阅读 · 0 评论 -
Codeforces 629C Famil Door and Brackets
题意:给定长度为m的序列s,求一共有多少对p,q,使得:p+s+q长度为n,且’(‘数与’)’数相等。p+s+q的任意前缀’(‘数比’)’数多。其中s,p,q均为’(‘和’)’组成的序列。分析:设dp[i][j]dp[i][j]为长度为ii的序列中’(‘比’)’多的个数为jj的情况数,很容易想到时间和空间复杂度均为O(n∗(n−m))O(n*(n-m))的方法。但是如果p+sp+s中’(‘比’原创 2016-03-03 13:27:04 · 434 阅读 · 0 评论 -
Codeforces 621C Wet Shark and Flowers
题意:一群鲨鱼围成一圈,Wet Shark说个质数p,每个鲨鱼在一定范围内选个数,如果两个相邻的鲨鱼选的数的乘积能被p整除,则每个鲨鱼都将得到1000元,求鲨鱼们最终得到钱数的期望。分析:比赛时乱七八糟的写,一直错,重新读题才注意到题目中说的: If for any pair of neighbouring sharks i and j the product si·sj is divisibl原创 2016-02-02 08:50:28 · 475 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2)【A,B水题】
A. Far Relative’s Birthday Cake#include<iostream>using namespace std;const int maxn = 105;char a[maxn][maxn];int main (void){ int N;cin>>N; int cnt = 0, res = 0; for(int i = 0; i < N;原创 2016-03-01 09:57:30 · 331 阅读 · 0 评论 -
Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)
题意:线段树做法分析:因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化。比线段树快了12ms~代码:#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>using namespace std;//[)const int maxn = 100005, INF = 0x3fffffff;原创 2016-03-01 20:14:07 · 443 阅读 · 0 评论 -
Codeforces 629D Babaei and Birthday Cake(线段树优化dp)
题意:nn个蛋糕编号从小到大编号,jj号蛋糕可以放在ii号上面,当且仅当jj的体积严格大于ii且i<ji<j,问最终可得的最大蛋糕体积。分析:实质为求最长上升子序列问题,设dp[i]dp[i]从头开始到第i位的最长子序列长度,可以想到O(n2)O(n^2)的做法,状态转移方程:dp[i] = max(dp[j], j >= 0&& j < i && v[j] < v[i]) + v[i];但是nn可原创 2016-03-01 13:16:07 · 593 阅读 · 0 评论 -
Codeforces Round #340 (Div. 2)
A. Elephant题意:给定数x,从1.2.3.4.5中选择最少个数的数使最终和为x。分析:由于每个数字使用次数不限,所以每次都用5填充,若不能正好填满,剩下的余数再在1-4中选择。代码:#include<iostream>const int maxn=250;const int INF=0xfffffff;using namespace std;int main (void){原创 2016-01-27 11:34:58 · 471 阅读 · 1 评论 -
Codeforces Round #336 (Div. 2)
**A. Saitama Destroys Hotel** 【题意】一楼梯从最高层开始依次下降,每下一层花1s,如果该层有人,则等乘客到达后载客继续下降,乘客进电梯的时间忽略不计,给定有乘客的楼层数及乘客到达时间,求承载所有乘客下至第0层所花费的最小时间。 【代码】#include<iostream>using namespace std;int main (void){ int原创 2015-12-24 16:34:21 · 451 阅读 · 0 评论