自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 java代码对hdfs文件的基本操作

一个没有部署集群的虚拟机想要 访问集群上的hadoop时:安装hadoop 然后配置core-site.xml 将fs.defaultFS参数改为hdfs://master:9000即可直接执行对应的hadoop命令即可(可执行文件)块大小和备份这些参数是要看客户端的相关配置的,与放在哪个机器无关。package hdfs04;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import or

2020-08-05 13:37:45 25

原创 HDU3091 (2n个分成n对使得结果最小 n小于等于10 状压dp 根据题目特性减少状态)

题目转自#include<bits/stdc++.h>typedef long long ll;using namespace std;const int N=21;struct node{int x,y;double d;}p[N],st;double dis[N][N],dp[1<<N];inline double get_dis(node A,no...

2020-02-24 09:22:02 59

原创 HDU4628 Pieces(n小于等于16的串 最少分成几个回文子序列)

题目思路: 先求出所有的回文串。if(!(i&该回文串)) dp[i|回文串]=min(dp[i|回文串],dp[i]+1).#include<bits/stdc++.h>using namespace std;const int N=17;char s[N];int n;int st[1<<N],tmp[N],dp[1<<N];in...

2020-02-23 15:02:20 44

原创 HDU1074 Doing Homework(写作业的顺序改变使失分最少 基础状压dp+记录路径)

题目#include<bits/stdc++.h>#define low(x) ((x)&(-x))using namespace std;const int N=16,INF=0x3f3f3f3f;char s[N][105];int d[N],c[N],sum[1<<N];int bin[1<<N],dp[1<<N],now...

2020-02-23 12:11:25 26

原创 HDU4049 Tourism Planning(状压dp 一个状态的所有子集)

题目题意: 有n人,m个景点,每个景点有一个花费,每个人对每个景点有一个喜爱值,若去某个景点则每个人的bonus为对该景点的喜爱值减去该景点的花费,若两个人同时到某个景点则总bonus加上一个额外值,两两到同一点的额外值通过一个n*n的矩阵表示,每个人可以在中途离开,一旦离开不得再回来,现在旅行路线已经确定,求怎样计划每个人的去留使得总的bonus最大,输出最大bonus,若最大bonus小于等...

2020-02-23 11:08:00 24

原创 HDU1358 Period(字符串s的每个前缀是否为周期串 若是输出最大周期)

题目设前缀长度为len,若len%(len-该前缀子串的最长公共前后缀)==0.则证明该前缀是周期串,最大的周期为 len/(len-该前缀子串的最长公共前后缀)。 kmp中 nex数组可用来解决这个问题。证明的话 首先证明 若可以整除,则一定为周期串。再证明 若不可以整除要想为周期串的话,那么最长公共前后缀一定比nex[len]大,反之证明不整除一定不为周期串。最大周期是 len/(...

2020-02-11 20:57:55 36

原创 HDU1711 Number Sequence(kmp板子 输出t串在s串出现的第一个位置)

题目#include<bits/stdc++.h>using namespace std;const int N=1e6+5,M=1e4+5;int s1[N],s2[N],nex[N],n,m;void get_nex(){ int i=0,k=-1;nex[0]=-1; while(i<m){ if(k==-1||s2[i]==s2...

2020-02-11 20:11:50 23

原创 cf1263E(可修改判断括号是否为合法序列以及最大嵌套深度 线段树维护最大/小前缀和)

题目题意给你一段序列,其中L代表左移,R代表右移,小写字母代表在当前位置放置对应字母,),(代表在当前位置放置左右括号,当括号可以匹配时输出括号的最大层数,否则输出-1题解题解: sum==0&&mi[1]=0 为合法括号序列,mx[1]为括号嵌套最大深度。线段树维护最大前缀和 最小前缀和 详情见代码中update函数。#include<bits/stdc++.h&...

2020-01-28 12:09:35 115

原创 cf1168A. Increasing by Modulo(每次选择若干数进行(ai+1)%m,问使数组非递增的最小操作次数 二分+贪心 哭)

题目啊啊啊啊啊啊啊啊啊啊啊啊啊学习链接:https://www.cnblogs.com/Carered/p/10937082.html题意: 给一个数组,数组中元素范围为0~n,每次你可以选择若干元素进行(ai+1)%m的操作,问使数组呈非递增的最小操作次数。思路:因为每次都可以选若干个元素,用贪心思想,假设要操作x次,第一个元素加上x若能超过m,则对m取模最小值为0,令其等于0就好了,...

2020-01-20 22:44:38 45

原创 cf1168B. Good Triple(挺好的一道题!!思维灵活的不像尺取sl=smid=sr)

题目按正常的尺取就不会做。哭了。对于右端点取r找到一个l。 符合要求以r为右端点的点对有l个。对于右端点r+1。l 应该从之前的l+1开始遍历。假如以r为右端点的时候没有s[l]==s[r]==s[(l+r)/2]的点对,那么符合要求以r为右端点的点对个数为之前的p。这是最靠右的p.代码很好懂。#include<bits/stdc++.h>using namespace ...

2020-01-20 20:52:56 42

原创 cf1172B. Nauuo and Circle(全排列在圆上画边不相交的生成树 的种数)

题目#include<bits/stdc++.h>using namespace std;const int N=2e5+5,mod=998244353;typedef long long ll;int deg[N];int main(){ int n;scanf("%d",&n); ll ans=1; for(int i=1,x,y;i...

2020-01-20 18:19:40 42

原创 cf1175D. Array Splitting(将数组分成k部分 所有数的值*他所在的第几个部分 和最大 拆式子)

题目我就是个弱智。哭了。唉。怎么就是想不到拆开式子呢? 拆开之后很简单。sum=s[r1]*1+(s[r2]-s[r1])*2+(s[r3]-s[r2])*3+....+(s[rk-1]-s[rk-2])*(k-1)+(s[n]-s[rk-1])*k;把括号打开sum=k*s[n]-s[r1]-s[r2]-...s[rk-1];为了使sum尽可能大就选前k-1个前缀和即可 那么就对前...

2020-01-20 17:36:15 47

原创 cf1176D. Recover it!(给个2n序列打乱顺序找到长为n的原序列)

题目答案难道不是唯一的吗? 我觉着是唯一的代码第20行: 先从大到小,合数不能由合数变成,假如可以变成的话这个合数就不会剩余,遍历到比他大的那个可变成他的合数的时候–vis[它]了。代码第21行: 经过上一行的处理,剩下的数都是质数了。#include<bits/stdc++.h>#define m(a,b) memset(a,b,sizeof a)using nam...

2020-01-20 15:27:39 46

原创 cf1176E. Cover it!(将连通图选出不超过一半的点 使剩点与已选某或多个相邻 生成树奇偶层)

题目题意: 给你一张n个点m条边的连通图,无自环和重边。输出k和k个点的编号。 k<=[n/2]。使得没被选的点一定会和这k个点里至少一个有边相连。思路: 直接将图生成一棵树,第一种涂色方法是将奇数层全涂色,若这种方法涂色节点数大于⌊n/2⌋,那么将偶数层全涂色肯定可行。#include<bits/stdc++.h>#define m(a,b) memset(a,b,s...

2020-01-20 13:08:23 53

原创 cf1189A. Keanu Reeves(一个01串最少分割成多少串 使得每个串01数量不同)

题目题意: 一个01串最少分割成多少串 使得每个串01数量不同。思路: 要么不分割,要么分割成两个串。。#include<bits/stdc++.h>using namespace std;const int N=100+5;char s[N];int main(){ int n;scanf("%d%s",&n,s+1); int num0=...

2020-01-19 21:39:01 58

原创 cf1202B. You Are Given a Decimal String...(求出所有的x-y型 对于s串需要添加多少字符可被该计算器打印 巧妙地最短路暴力)

题目#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=10+5,M=2e6+5,INF=2e7;int dis[N][N];char s[M];int len;inline ll cal(int x,int y){ for(int i=0;i<10;++...

2020-01-19 16:55:52 36

原创 cf1204C. Anna, Svyatoslav and Maps(给一段邻间皆连边的路径,可删多少点使得最短路径不变)

题目题意: 给一段abcdefab…路径,保证相邻的两个点一定有直接边相连。问你可以最多删掉多少点,使得 给定路径也可以作为 要想经过删后的所有点的最短路径。思路: abcde 假如dis(a,b)+dis(b,c)=dis(a,c)。d这个点一定要删掉。因为此时ac之间经过d也是最短的。假如dis(a,c)+dis(c,d)>dis(a,d). c这个点一定要删掉。。显而易见。哦对刚...

2020-01-19 16:01:08 79

原创 cf1196D2. RGB Substring (至少修改多少字符才有一个长为k的RGB循环串 简单地推但我不会)

题目题意: 给你一个长度为n的只有R G B的字符串和k。问最少修改多少次,可以得到一个长度为k的RGB循环串。RGB循环串是RGBRGBRGB任意摘取的子串。思路:dp[i][0]分别表示从1-i为RGBRGBRGBR。。。这样的循环。dp[i][1]分别表示从1-i为GBRGBRGBRG。。。这样的循环。dp[i][0]分别表示从1-i为BRGBRGBRGB。。。这样的循环。那么...

2020-01-18 22:20:59 39

原创 codeforces1184C2. Heidi and the Turing Test (Medium) (坐标系旋转+固定长宽的矩阵最多覆盖多少点)

题目题意: 给n个点和半径r,请问半径为r的图形最多覆盖多少点。这里是指欧几里得距离。#include<bits/stdc++.h>using namespace std;const int N=6e5+5;struct node{int x,y1,y2,o;}a[N];inline int cmp(node A,node B){return (A.x==B.x)?(A...

2020-01-18 17:01:47 43

原创 HDU5091 Beam Cannon(给定长宽的矩阵最多覆盖几个点 模板)

题目题意:有N个点,有一个W*H的矩形,这个矩形和x,y轴平行,问你怎么放置这个矩形,能让矩形里的点最多。思路: 把每个原点(x,y)对应再来个映点(x+w,y),这样就有2N个点。这N个原点每次在区间【y,y+h】加1,而N个映点在区间【y,y+h】减1。就保证当前线段树里的所有的点都是横坐标位于最早的那个x往右w之内,代表这个矩阵的左下角的纵坐标是[y,y+h]此时可另当前点合法。解释不清...

2020-01-18 15:57:54 44

原创 poj3678 Katu Puzzle(2-sat 裸题 tarjan判断是否可行)

题目题意: 给你n个数和m组关系。 u v d XOR 意思是u^v=d。问是否可行。主要就是 u uu必须选u的时候应该 add(uu,u).#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=1e4+5,M=3e6+5;str...

2019-11-12 14:08:30 25

原创 poj3683 Priest John's Busiest Day(2-sat裸题 tarjan+topo输出方案板子)

题目题意: n个活动 属性为x y d.每个活动可以选择在[x,x+d]处举行,也可以选择在[y-d,d]处举行。判断n个活动是否可以不冲突的举行并输出任意一种方案。思路: 判2*n个决策是否相交。具体见make_graph()函数。#include<cstdio>#include<queue>#include<cstring>#include&l...

2019-11-12 09:40:55 20

原创 poj3207 Ikki's Story IV - Panda's Trick(2-sat 裸题 tarjan判断是否可行)

题目题意: 圆环上n个点编号为0,1,2,3…n-1,连接m组点,连线要么在圆内要么在圆外,判断这m条线是否有互不相交的情况。思路: 第 i 条线 和第 j 条线在圆内相交,在圆外也一定相交。设第 i 条线 在园内相连 是 i 否则是 ii ,第 j 条线 在园内相连 是 j 否则是 jj.如果 i 和 j 相交 则 i->jj jj->i ii->j j->...

2019-11-11 22:58:50 25

原创 gym102411E. Equidistant(是否找到树上一点到给定的树上k个点的距离相等并输出 多源bfs)

题目#include<bits/stdc++.h>using namespace std;const int N=2e5+5;struct Edge{int to,nex;}edge[N<<1];int head[N],tot;inline void add(int from,int to){ edge[++tot]=(Edge){to,head[fro...

2019-11-08 19:53:20 120

原创 cf701E. Connecting Universities(树上2*k个点分成k对 路径长度和的最大值)

题目题目给你一个n个顶点的树和2*k个点,可以组成k对,问k对的道路和最大是多少。思路考虑每条边的贡献的最大值,每条边都贡献最大也一定可以构造出这样的对,猜的。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;struct Edge{int to,nex;...

2019-11-07 14:33:09 32

原创 cf701D. As Fast As Possible(小学数学推导)

题目题意已知n个人,一段路程为 l,走路v1,坐车v2,每车最多坐k人(每人最多做一次车),求所有人到终点的最小时间。上下车不需要时间,车转弯不需要时间,但是只有一辆车,车回去需要时间。思路所有人到达终点的时间是一样的。所以每个人坐车行走的距离都是一样的.第一组上车的人在0处上车,设在坐车行走距离 l1 然后下车。第二组此时走到了l1/v2*v1, 人和车此时相距(l1-l1/v2*v...

2019-11-07 11:19:42 29

原创 Codeforces Round #362 (Div. 2)

比赛链接文章目录cf697B. Barnicle(科学计数法转正常小数 模拟)题意代码cf697C. Lorenzo Von Matterhorn(超大线段树两点间的LCA)题意代码cf697D. Puzzles(树上dfs序遍历每个点编号的期望)题意:思路代码cf697E. PLEASE(简单概率+基础数论知识)题意思路代码cf697B. Barnicle(科学计数法转正常小数 模拟)cf...

2019-11-06 11:01:53 38

原创 cf697E. PLEASE(简单概率+基础数论知识)

题目题意有三个杯子都倒放在桌面上,中间的杯子里有筛子,每一次都把中间的杯子与左右两边的杯子等概论交换,问交换n后,筛子还在中间的杯子里的概率,对该式子约分之后 分母分子分别%1e9+7 输出分子分母。n非常大,给你k个数,n就是这k个数的乘积。#include<bits/stdc++.h>using namespace std;const int mod=1e9+7,p...

2019-11-06 10:45:22 26

原创 cf697D. Puzzles(树上dfs序遍历每个点编号的期望)

题目题意: 每个点访问他的儿子没有顺序。有好多dfs序。问树上每个点的dfs序标号的期望值。思路: 这个节点要么排在兄弟节点之前要么之后就是:dp[y]=dp[x]+0.5*1+0.5 * (sz[x]-sz[y]-1 +1).#include<bits/stdc++.h>using namespace std;const int N=1e5+5;struct Edge...

2019-11-05 23:46:11 45

原创 cf697B. Barnicle(科学计数法转正常小数 模拟)

题目题意: 科学计数法转化为正常的小数,a.deb输入保证d没有前导0(但d可以是0) a是0的话 b一定是0.#include<bits/stdc++.h>using namespace std;const int N=200+10;char s[N];int x[N],y[N],z[N];int main(){ scanf("%s",s+1);int n=st...

2019-11-05 22:50:20 38

原创 cf697C. Lorenzo Von Matterhorn(超大线段树两点间的LCA)

题目题意: 在一棵树中有操作 1 u v w :将u v路径上的边权值加w询问 2 u v :u v路径上的权值和。这棵树是线段树的构造。q次询问(q<=1000 但是 点<=1e18)。#include<bits/stdc++.h>using namespace std;typedef long long ll;map<ll,ll>mp;...

2019-11-05 22:04:18 40

原创 hdu1028(整数多少种划分方式 基础完全背包)

题目#include<bits/stdc++.h>using namespace std;const int N=120+5;int dp[N];int main(){ dp[0]=1; for(int i=1;i<=120;++i) for(int j=i;j<=120;++j) dp[j]+=dp[j-i]; int n; while(~scan...

2019-10-28 23:34:52 26

原创 cf598E. Chocolate Bar(将n*m的巧克力块切成k小块的最小花费 每切的费用是切长的平方 dp)

题目#include<bits/stdc++.h>using namespace std;const int N=50+5,INF=0x3f3f3f3f; int dp[N][N][N];int main(){// dp[i][j][k]=min(dp[i][j][k],dp[i][j0][k0]+i*i) (j0>=1&&j0<j,0<...

2019-10-28 16:08:17 48

原创 hdu5586 Sum(修改一段区间使得ai都变成f(ai) 也可不修改问 n个数的最大和 炒鸡基础dp)

题目也可以记录A数组 f(a[i])-ai 求A数组的最大子段和再加原来的sum就是答案。#include<bits/stdc++.h>#define m(a,b) memset(a,b,sizeof a)using namespace std;typedef long long ll;const int N=1e5+5,mod=1e4+7;ll dp[N][3];/...

2019-10-27 23:31:54 153

原创 poj2823(输出n-k次滑动窗口(长为k)所在位置的最大/小值)

题目题意: 给你长度为n的序列,有一个长度为k的滑动窗口,输出n-k个值滑动窗口移动时的最小值 和n-k个移动时的最大值。思路: 对于第一中来说 位置靠前但值还大的应该被淘汰。#include<cstdio>using namespace std;const int N=1e6+5;int a[N],q[N],n,k;void workmin(){ int hea...

2019-10-26 10:41:45 38

原创 bzoj1483 梦幻布丁(区间启发式合并)

n个数,m个操作,操作:将1-n中颜色为x的改成颜色y.询问:当前一共有多少段颜色. n,m<=1e6下面的swap(f[x],f[y])其实就是颜色x在哪个vector y在哪个vector就是比如颜色x变成y 颜色x的人很多 直接改成y所在的vector是f[x] 然后把x所在的vector 颜色改为y(本来就是y)#include<bits/stdc++.h>us...

2019-10-17 19:50:49 20

原创 cf600E(每个节点子树中出现次数最多的颜色编号和 树上启发式合并/线段树)

题目1.启发式合并sum[num[col[x]]]=col[x],num[col[x]]+=val,sum[num[col[x]]]+=col[x];2.线段树合并#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;struct Edge{int to,ne...

2019-10-17 10:40:30 46

原创 CF622(C. Not Equal on a Segment 简单思维)

题目题意: 给一个长度为n的序列。m个询问。询问:[l,r] x。输出[l,r]中不等于x的下标(任意输出一个即可)。思路: 我现在笨的已经不行了。#include<bits/stdc++.h>using namespace std;const int N=2e5+5;int a[N],pre[N];int main(){ int n,m;scanf("%d%d...

2019-10-16 12:47:15 36

原创 bzoj4552(排序 二分答案+01序列)

题目二分答案。那么只用判断这个数是否合法即可。设这个数为x。个序列中>x记为1,<x记为-1,=x记为0.最后只用判断q位置上的数是不是0即可.用线段树处理。区间覆盖。和区间-1,0,1的数字个数。#include<bits/stdc++.h>using namespace std;const int N=1e5+5;int a[N],refl[N],su...

2019-10-16 12:21:41 23

原创 HDU6231(二分答案+转化01)

题目题意:给一个长度为n的序列,和K,M。问这个序列所有长度不小于K的子区间的第K大,这么多数里面的第M大。思路: 我根本想不到怎么去做。二分答案这个数是mid什么。 然后检验 所有合法区间的第K大>mid的有几个(假设为A),所有合法区间第K大>=mid的有几个(假设为B)。假如A+1<=M<=B。说明mid就是答案。假如M>B,说明mid偏大。否则mid...

2019-10-16 09:02:17 30

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