自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 阿里飞天八部之女娲与夸父简介

在阿里云存储飞天八部中最出名是盘古(分布式存储底座),但是盘古的稳定性和高性能特性是与其他7位密不可分的,女娲为不同业务集群提供了命名与协调服务,如分布式锁,夸父为服务之间的网络通信提供了高速、高可扩展性的网络库。一致性协同服务团队-女娲阿里云自研飞天操作系统的分布式协同基础服务,产品支持着阿里云的计算、存储、网络等几乎所有云产品,支持从单地域到全球化各个规模下的数据协同。工作内容负责基于Paxos、Raft等分布式一致性算法打造分布式协调、分布式存储、分布式锁、消息队列等基础服...

2021-08-03 11:07:12 1959

原创 腾讯九月6号红黑棋子顺序调整问题

记腾讯九月6号红黑棋子顺序调整问题。对于这样做转移的最优性质还需要继续思考。定义状态d[i][j]代表前i个黑子和前j个红子已经交换到了序列最前面且剩余棋子都按照原来顺序被交换到这i+j个棋子之后。那么d[i][j] = max(d[i+1][j] + sum(i,j,black[i+1] -1) , d[i][j+1] + sum(i,j,red[j+1] -1))sum(i,j,k)代表当前i个黑子和前j个红子已经交换到了序列最前面时,把剩余子中原来位置为K的子移动到i+j+1的位置,需

2020-09-08 11:22:41 281

原创 codeforces 985F(hash)

首先本题目的意思是给定一个母串,然后每次查询两个长度相等的子串是否同构,同构的定义如下:For two given strings s and t, say S is the set of distinct characters of s and T is the set of distinct characters of t. The strings s and t are isomorphic...

2018-05-23 10:26:47 855

原创 codeforces 982D (第二种实现方式)

改题目解析在上一篇点击打开链接这里使用了map来实现同样的过程,做上下界的查找,map内直接存的就是一个个对应的区间,对于所有的<key,value>对,map默认按key值升序排序,这样,可以将区间以<l , r>的形式存储,会以l升序排序。对于lower_bound 和 uppper_bound进行说明:     // lower_bound 第一个大于或者等于查找值的...

2018-05-21 10:43:25 313

原创 Codeforces 982D

此题从从一个特定角度想,就很好做,而直接枚举可行解,复杂度太高。 可以想到,将所有的长度从大到小排序,逐个放回原来所在位置,任何一个可行解,必然满足是比可行解大或者等于可行解的值是排序后序列的前缀,这样,逐个放回,统计剩余区间的长度和个数即可。这是自己笨拙的代码#include<cstdio>#include<iostream>#include<string&gt...

2018-05-21 09:30:15 329

原创 codeforces 983C(dp or shortest path)

一般而言规划题目侧重于思路,shortest path 也和规划一样需要建边,规划需要dag图,最短路只需要构成图即可,然后上单源最短路算法即可,实现上可能比较复杂。例如本题目而言,首先看状态设计,d[i][j][s],代表前i个已经上电梯或已经到达,当前在i层,电梯内人员情况(空位和要到达楼层)每个状态都可以往任意楼层走,然后上下乘客,但状态之间可能来回走来走去,可用dijstra算法。进一步分...

2018-05-19 09:14:09 360

原创 codeforces 979d (math , data structure)

参照给出的题解算法:         ki  |  gcd(xi ,  v) 该条件成立,即xi %ki ==0 && v %ki ==0 , 若 xi % ki != 0 则无解,当有解时,只需寻找a中的 v,使得 v % ki = 0 ,且 v + xi <= si ,同时最大化 v xor xi;首先我们考虑 v % ki = 0 ,且 v + xi <= si ...

2018-05-16 17:48:11 258

原创 Codeforces 979B(greedy)

#include<bits/stdc++.h>using namespace std;#define mp make_pairtypedef long long ll;typedef long double ld;const int maxn = 205000;char s[3][maxn];int cnt[3][60];int max_[3] , ans[3]...

2018-05-15 19:09:25 923

原创 Codeforces 963C(Math,Number Theory)

结题思路如下:记一个长方向水平方向宽度为h,竖直方向宽度为w,对n类长方形先按h排序,再按w排序,并将所有h相同的长方形放到一个容器中。可知,h不同的每个容器,代表着所拼接成的大长方形的一列或者是几列。对每个容器,如果一种w出现在一个容器中,则必然出现在其他所有容器中,且该中w的数目与该容器所有长方形数目的比值,与其他容器相应的比值相同。即任意一个容器的一类长度为w的长方形在其容器所在列所占行数与...

2018-05-14 13:35:16 333

原创 Codeforces 963A(Math , 统计)

最讨厌数学题了, 而且还有一阵子没做过了,不过做做也好,数学面前自己就是弱渣,要好好学数学。题解如下:Let Z=k−1∑i=0sian−ibiZ=∑i=0k−1sian−ibi and q=(ba)kq=(ba)k.Let's notice that according equality is true: n∑i=0sian−ibi=(n+1)/k−1∑i=0Z⋅qi∑i=0nsian−ibi=...

2018-05-12 08:17:55 247

原创 Codeforces 963B

      对于能不能拆除一棵树,首先从根节点考虑,根节点必须等父亲先拆除,父亲的所有边若为偶则可先拆父亲,否则要先拆父亲的父亲,如此递归实现即可。     然后在递归过程建立先拆后拆的边,之后就是一个dag的点排序问题,用一个vector即可实现。#include<cstdio>#include<iostream>#include<cstring>#in...

2018-05-07 10:35:03 232

原创 Codeforces 965E 思路合并

参考  点击打开链接可归结为一个合并过程。先将字符串建成一颗trie树,然后对于每个节点我们结算 “所有在该节点子树中的字符串 的最小长度比该节点深度大的最优解集合”。如果当前节点不是某个字符串的终点,那么该节点深度记为一个新的最优值放到集合,并将原集合最大值删除,这样便,构成 所有在该节点子树中的字符串 的最小长度大于等于该节点深度的最优解集合。对于该节点时字符串终点时,只需要将之加入集合而不需...

2018-05-07 09:35:09 1060

原创 codeforces #476 div2 D(math)

题目给定四个参数n,k,M,D   1<=M<=n  D=min(n,1000);  1<=k<=n;    n<=1*10^18要求将n个糖果分配给k个人,要求每个人最多只能被分配D次(最多D次),分配方式是选定x,从第一个人开始没人拿x个,并循环拿走,直到剩下的糖果不足x个,丢弃。问第一个人最多能够拿到多少糖果。首先n,M十分大,没有办法进行直接枚举计算。但是分配...

2018-04-29 08:42:11 151

原创 PagerAdapter与viewpager的交互关系

首先我们知道要实现PagerAdapter需要实现四个具体方法:这几个方法的实现是与viewpager内部具体的实现机制相关联的,总的来看viewpager不再关注位置和view的对应关系,这个对应关系委托给adapter来负责,又由于其本身维持一定量的view充当缓存,那么就需要其adapter能够根据位置来删除view和填充view。viewpager维护的一定大小的集合,当我们滑动式

2017-05-07 11:48:01 501 2

原创 山东省第七届省赛L题

#include #include #include #include #include using namespace std;typedef long long ll;#define rep(i , n) for(int i = 0 ; i < (int)n ; i++)#define rep1(i , x, y) for(int i = (int)x; i<=(int)y;

2016-06-09 22:20:49 688

原创 HDU 5713

dp题目首先很容易想到用d[s ][ j ] 代表集合s内的点组成j和联通集合的方式数目,转移为d[ s ][ j ] = (d[ s - s1 ][ j -  1] * f[s1]) 其中s1必须包含s中编号最小的一个元素,这是做限定,不然不好转移,f[s1 ]代表结合s1构成独立联通集合的所有方法数目。下面求f[ s 1], 计cnt[ s1 ]为s1内点互相之间所有连边的数目, 那么

2016-05-31 14:54:48 757

原创 HDU 5715

看的别人的博客写的很好点击打开链接代码如下#include #include #include #include using namespace std;typedef long long ll;#define rep(i,n) for(int i = 0 ; i<(int)n;i++)#define rep1(i,x,y) for(int i=(int)x;i<=(int

2016-05-31 14:45:44 498

原创 HDU 5677

这个问题可以先处理处一个数组A来其中A[i] 代表长度为i的回文串有多少个。那么定义状态d[i][j]代表当前已经选了i个总长度为j这个状态是否可达。问题就是个多重背包。但是当时做的时候采用了另一个思路,定义d[ i ] [ j ] [ k ] 代表当前只考虑到长度为i 及以上的 回文串选择情况时,当前还剩余j个没有选,需要这k个总长度为k;那么,最普通的转移就是o(n)就

2016-05-13 11:31:15 510

原创 HDU 3758

n! 拆分因子比较好的方法。二分可行最大值。#include #include #include #include #include using namespace std;typedef long long ll;typedef pair pii;#define rep(i , n) for(int i = 0 ;i<(int)n;i++)#define rep1(i

2016-05-11 22:14:07 421

原创 HDU 3760(最短路思路)

先倒着从n bfs一遍求出bfs树每层的节点,然后从1贪心的走回来就行了这个贪心用两个queue即可实现。#include #include #include #include #include using namespace std;typedef long long ll;typedef pair pii;#define rep(i , n) for(int i =

2016-05-10 19:36:12 854

原创 HDU 3759(暴力映射)

这个题目就是将手里的5张牌映射成一个个不同的等级这种映射题目,很明显第一个node,然后再定义一个比较函数,然后排序即可。需要注意的是:一些预处理的值必须 , 再return之前重用一个node必须保证不相互干扰。#include #include #include #include #include #include #include #include #in

2016-05-09 21:11:04 753

原创 ZOJ 3940

一个很暴力的递归拆分过程改成priority_queue就过了,醉了#include #include #include #include #include #include #include using namespace std;typedef long long ll;typedef long long LL;const int mod = 1e9 + 7;co

2016-04-28 09:18:22 550

原创 HDU - 5673(catalan数的应用)

分析:记路径长度为nn,那么机器人最多向右走\lfloor \frac{n}{2} \rfloor⌊​2​​n​​⌋步并向左走\lfloor \frac{n}{2} \rfloor⌊​2​​n​​⌋步。Ans(n) = \sum_{i=0}^{\lfloor \frac{n}{2} \rfloor} C_n^{2i} \ Catalan(i)Ans(n)=∑​i=0

2016-04-25 16:01:10 542

原创 HDU 4876(就是暴)

题意:   给定n(n思路:  怎么想都会超时,就用最暴力的方法了,剪纸 + 减少枚举,  首先可以先将C(n,k)中可选的数的组合枚举出来,我们发现不需要枚举出所有的这k个数的排列依次判断,因为是环状 , 可以从K!降到(K -1)! 然后跟据当前获取的最大值做可行性剪枝。 #include #include #include #include using na

2016-04-15 10:35:29 413

原创 uva 1618(枚举技巧)

直接说解法:   我们只考虑1 Ns > Np > Nr 的这种情况,先枚举 p , q 的位置 , 那么先选s的位置,s的位置越靠后越好,这样会留下更大的空间选r又知道所有数不同,离散化位1 到 n ,   那么假设p , q 位置确定  ,以pos数组记录每个1 -- n 每个离散化后的数对应的数组位置, 那么 s的最佳位置为 pos数组 上Np + 1 --> Nq - 1 这个

2016-04-11 20:30:41 897

原创 uva 10884(经典序列)

先存下用规划找出个数的代码#include #include #include #include #include #include using namespace std;typedef long long ll;typedef pair pii;#define rep(i,n) for(int i =0;i<(int)n;i++)#define rep1(i,x,y)

2016-04-10 13:03:00 683

原创 hdu 5661

考虑从高位到低位贪心,对于每一位,如果x,y只有唯一的取法,那么只能这么取;否则贪心地必须使答案的这一位等于1。如果x,y都是0,1都能取,则设这是从右向左数第len位,因为x,y能取的值一定都是连续的一段,因此x,y的后len位都能取0111...1(len-1个1)和1000...0(len-1个0)(否则做不到从右向左数第len位都能取0,1)。也就是说,后len位的贡献一定能达到可能的上界

2016-04-10 09:45:24 607

原创 hdu 5662

一个很简单的问题,暴力枚举k,然后每次的复杂度位O(n/k);这样很明显的nlog(n);至于每次在数组A 上求一个L , R 使得sum(L , R) * MIN(L ,R) 最大,只需维护每个点的最大延伸区间,可以用栈边走变维护,或者直接保留成数组递推。#include #include #include #include #include using namespace s

2016-04-10 09:43:25 416

原创 (AC自动机 + 矩阵加速)

题意:    给定最多十个最长不超过10的病毒dna串,求长度为m(m 分析:   用自动机建立状态转移图,然后建立转移矩阵   定义初始状态为[1 , 0 , 0 , 0  ....]代表当前长度为0可转移到各个状态的方案数目,然后乘上m次转移矩阵即答案。#include #include #include #include #include using names

2016-04-08 09:50:00 387

原创 CodeForces 570D(dfs序 or 离线dfs)

题目意思:    给定一颗root为1的树,节点最多5e5个,每个节点有一个英文字母,要求在指定子树根节点x,和指定深度y,求该子树y深度所有节点的字母能不能组成回文串。解法1:   利用dfs序,为所有点标上进出两个标记,既可以代表一个区间(dfs序很重要的一个应用),顺便将每个深度下所有的单个字母出现的标号统计到相应的vector中后,在计算答案时进行26次二分上下界求

2016-04-06 14:24:11 473

原创 HDU 4123(RMQ(o1)模板 , 树直径)

题目的意思:给出N(n先求出每个点的最远到达距离,树直径简单求解方法。RMQ处理得到的最远距离数组,线性扫描求每个值#include#include#include#include#includeusing namespace std;typedef long long ll;#define lson l,m,rt<<1#define rson m+1,r

2016-04-05 20:51:31 321

原创 FZU 2082(树链剖分模板题)

一颗树边上的权在变动,动态求两点之间的和。#include #include #include #include #include #include #include #include #include using namespace std;#define LL long long#define pi acos(-1.0)//#pragma comment(linke

2016-04-05 20:06:27 313

原创 jsp : 网页提交验证

test.jsp  第一个页面<% String hint = (String)request.getAttribute("hint");%>please input a number : two.jsp     <% String num = request.getParameter("number"); if(num

2016-03-11 09:49:07 427

转载 费马小定理 -- 讲解

(选自《数论妙趣——数学女王的盛情款待》第六章 开门咒)数论中充斥着许多易于观察到的事实,诱使人们用普通归纳推理的办法去进行推广。对此,必须慎之又慎,以免误入陷阱。设想你偶而把2自乘7次,再减去2,得27-2=126,随后发现,126恰好能被2的幂指数7整除。接着又发现,25-2=30,30也能被2的幂指数5整除;211-2=2048,2048也能被2的幂指数11整除。从7,5,11都是奇

2016-01-03 20:41:19 1217

原创 codeforces 601A(脑筋急转弯 , 55)

题目意思,给了最多400个点的完全图,但是每条边可能是公路也可能是铁路,求1个火车和一个汽车同时都从1出发到n中间不走到重复点的最短时间.1 - n 这条边必定是铁路或公路,然后就没有然后了。下面是自己傻X用压缩了一下转移写的。直接辆车出发最短时间到n 的最小值即答案、#include using namespace std;typedef long long ll;ty

2015-11-26 10:59:42 466

原创 HDU 4906(状态压缩题目)

本题目虽然是个简单的状态压缩规划题目:但是逆向的递推式即刷表有一个很明显的优化,但是正向的话就不会有,就因为这个剪纸有没有变可以导致超时,也是醉了。很明显d[i][s] 代表用i个位置生成生成集合s中的数的所有方法。但正向的定义不一样,d[ i] [ s ] 代表用i个位置生成了集合s,还有n - i 个位置没用的可行解数目。显然第一个状态在实现时,用刷表法.复杂度都是n*n*(1

2015-11-25 11:54:19 340

原创 BNU 34990(字符串题目)

题意:给定两个串(串长都小于1e5) , 从第一个串0位置开始如果该位置开始与第二个串“匹配”(至多两个位置字母不同) , 记为一个可行点, 那么求最小可行点。分析:直接枚举位置,我们发现当前被枚举的点,有一个确定性因素,即把该点当做了起始匹配位置(这一点非常重要),那么最长会有多长哪,贪心的想法想一下,即可。#include using namespace std;typ

2015-11-17 11:16:17 331

原创 codeforces 587B(dp)

题意:这个题目的意思是给定一个长度为n(n 要求从b中选出x个数1使得这个x个数字非递减,且 下标 floor(pi) + 1 = floor( pi+1); (n*k分析:首先我们来看一下条件,数组b可以看做由很多a数组在右面拼接而成,若p1 位置为 0 -> n-1 , 那么p2 的位置为 n -> 2*n -1; 即每n个数中选一个生成新数列,且必须连续的“块”中选择

2015-11-10 16:10:09 546

原创 codeforces 587C(树上的倍增算法)

分析:同LCA相似的思路,维护st[ i ][ j ] 代表从节点i往上(不包含i)走2^j个节点前十个最小值集合,这样一直倍增着往上走秩序logn次集合合并即可。#include #define fst first#define snd second#define ALL(a) a.begin(), a.end()#define clr(a, x) memset(a, x, s

2015-11-09 22:08:23 1283

原创 codeforces 593E(矩阵类题目)

给定一个R * C不超过20的图,一开始人在(1,1)然后给出之多100000个时间序列(按时间递增给出),每个时间可能发生的事情是在某个位置出现猫(有猫的地方人不能存在),猫在某个位置消失,询问人从1,1点在1时刻出发在t时刻可以走到(x , y)的所有可行性路径数目。分析:典型的矩阵转移题目。初始时用一个人d[ i ][ j]....代表人从1,1出发走了当前步数,可以走到1的

2015-11-09 17:45:32 532

空空如也

空空如也

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

TA关注的人

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