自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 80端口和8080端口

而8080,一般用与webcahe,完全不一样的两个,比如linux服务器里apache默认跑80端口,而apache-tomcat默认跑8080端口,其实端口没有实际意义只是一个接口,主要是看服务的监听端口。80是http协议的默认端口,是在输入网站的时候其实浏览器(非IE)已经帮你输入协议了,所以你输入http://baidu.com,其实是访问http://baidu.com:80。网络端口是指TCP/IP协议中的端口,是逻辑意义上的端口。一个服务器上有不同的站点,即可以用不同的端口号来访问。

2022-09-25 16:18:14 3565 2

原创 java递归复制目录,并输出目录结构

*原题要求:**命令行参数给定一个文件夹F,以递归的方式分析任意F的目录结构,能够使用流复制该文件夹下所有子文件夹和文件到文件夹下的F(复制)下。

2022-09-25 10:47:14 479

原创 初始状态如何安装yum和dnf

使用的是centOS7系统。

2022-09-05 17:08:18 942

原创 Codeforces Round #780 (Div. 3) Problem D.Maximum Product Strikes Back

题目题意给定一个长度为n的数组a(|a[i]|

2022-06-06 09:35:37 165

原创 CodeCraft-22 and Codeforces Round #795 (Div. 2) Problem D.Max GEQ Sum

题目题意给定一个长度为n 的数组a ,问是否可以找到一段区间 [L,R] 使得 max([L,R])

2022-06-02 13:18:51 128

原创 Codeforces Round #781 (Div. 2) Problem C Tree Infection

题目题意给出一棵以1为根节点的树,每秒可以依次,进行以下两种操作Spreading,对于每个结点,如果他有儿子结点被感染,可以感染其另一个没有被感染的儿子结点.Injection任意选择一个结点将其感染求感染所有结点最少需要的时间思路我们可以二分答案mid,问题就变成了mid秒内能否感染所有结点.首先Injection一定用于优先感染兄弟结点比较多的结点,这样可以充分利用Spreading,我们可以结点按照兄弟的数量排序,然后优先感染兄弟多的结点.这样我们就知道了,第一秒被Injection

2022-06-02 10:25:19 96

原创 Codeforces Round #782 (Div. 2) Probelm C Line Empire

题目代码#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;typedef long long ll;typedef pair<int,int> PII;ll s[maxn];void solve(){ ll n,a,b; cin>>n>>a>>b; for(int i=1;i&l

2022-05-30 11:26:02 90

原创 Codeforces Round #782 (Div. 2) Problem B Bit Flipping

题目题意给定一个长度为n的二进制字符串和操作次数k,你可以进行k次这样的操作:选定字符串的任意一位,除了选定位置外,其他位置的状态都被翻转(0变1,1变0)。求进行k次操作之后,能获得的字典序最大的字符串,以及每一位的反转次数。思路对于每一位,该位上的翻转情况由总操作次数减去该位上的操作次数决定,如果差值为偶数,则对该位状态无影响,差值为奇数,则该位状态翻转。所以分为操作次数k为奇数和偶数两种情况考虑。 k为奇数,从头遍历字符串,要使字典序最大,就需要将0翻转成1,那么该位如果为0,该位的最小操作次

2022-05-30 11:24:00 62

原创 全排列(c++)

#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;int a[maxn];bool vis[maxn];int b[maxn];int n;void dfs(int step){ if(step==n+1) { for(int i=1;i<step;i++)//打印答案 cout<<a[i]<<

2022-05-26 21:02:18 1359

原创 Educational Codeforces Round 127 (Rated for Div. 2) Problem E Preorder

题目题意给定一棵完全二叉树,每个结点的值是字符 ‘A’,‘B’ 中的其中一个。你可以进行以下操作若干次:选定一个结点u ,对于左孩子l 和右孩子 r,将 u的左孩子置为 r,右孩子置为l (或者认为是交换了两棵子树,这会影响遍历顺序)。随后遍历这棵树,得到一个先序遍历序列 s。求 s 有多少种不同可能。思路首先我们有这样一个感性的认识,有以u为根的树,假设左子树的方案有x种,右子树的方案有y种,假设左右子树不同(即无论怎样交换左右子树表示的字符串都不会相同),那么方案数就是xy,假设左右子

2022-05-26 11:34:29 76

转载 Educational Codeforces Round 127 (Rated for Div. 2) Problem D Insert a Progression

题目在知乎上发现了一篇非常好的题解,特地分享一下代码#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;typedef long long ll;int n,x;int a[maxn];void solve(){ cin >> n >> x; ll ans = 0; int maxv = 0, m

2022-05-25 14:16:15 131

原创 Educational Codeforces Round 127 (Rated for Div. 2) Problem C Dolce Vita

题目题意给你一系列糖果,每个糖果有一个起始的价值 ai ,我们每天都会获得k元,不可积累,每种糖果每天只能买一个,每天,所有糖果都会涨价1元,问最多能买到多少糖果?思路一个前缀和贡献问题, 虽然只有1200分,但因为之前很少做这种题,所以对我来说还是需要消耗不少脑细胞的。首先,这题一眼贪心,把价值从小到大进行排序。每天,我们肯定都会最先尝试从便宜的糖果买起,当买了第i个糖果的时候,那么一定买了前i+1个所有糖果那么接下来问题就是判断,这个初始价值为ai的糖果你能连续买几天,(也就是能买多少个这

2022-05-25 11:11:26 79

原创 Educational Codeforces Round 128 (Rated for Div. 2)(E Moving Chips)

题目题意有一个二维平面(只有两行),上面有一些芯片,每个芯片走到另一个芯片上的时候会覆盖掉另一个芯片,求要使平面上只剩下一个芯片至少需要多少步.思路dpf[i][0/1/2]表示状态,f[i][0]表示枚举到了第i列,第二维为0,表示这一列两个格子上都没芯片,第二维为1/2表示这一列第1/2个格子上有一个芯片f表示的状态是,除了该列该格子有芯片,其他方格都没芯片代码#include<bits/stdc++.h>using namespace std;const int max

2022-05-24 20:00:25 85

原创 Educational Codeforces Round 128 (Rated for Div. 2) Problem C Binary String(二分答案+双指针)

题目题意给定一个01字符串,你可以选择在这个字符串的头部和尾部删除多个字符(包括0个),字符串具有价值,他的价值取决于max(删除的字符里1的个数,剩下的字符串里0的个数),求最小价值思路对字符串里剩余0的个数进行二分,用前缀和记录字符串0和1的个数,利用双指针处理头部,尾部,中间,这三个区间。代码#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;

2022-05-17 11:46:48 306 1

原创 Codefroces #791(Div.2) problem D Toss a Coin to Your Graph...(二分+拓扑)

题目题意一个有向图,选择一个起点,然后走k-1步,让走过的路径上的点权的最大值最小思路首先,最大值最小,一眼二分考虑在图中把小于mid的点找出一条路径长度大于k,或是有环。那么我们每次扫一遍,只在点权小于mid的部分跑拓扑排序即可。最后,一定要开long long!不开long long见祖宗代码#include<bits/stdc++.h>using namespace std;#define int long longconst int maxn=1e6+5;con

2022-05-16 16:55:10 120

原创 无向图的连通性(割点,割边,点双,边双)

原理说明的我就不再说了,网上都有,我就直接把模板打出来吧。点与边的不同在于,点不会用重点,但边会有重边。//割点void tarjan(int u,int father){ dfn[u]=low[u]=++cnt; int son=0; for(int i=head[u];i!=0;i=e[i].to) { int v=e[i].next; if(!dfn[v]) { tarjan(v,fathe

2022-05-06 13:56:39 233

原创 Parity game(poj-1733)(带权并查集+离散化)

题目前置芝士带权并查集离散化思路先求一遍前缀和 设每次询问为 l,r,ans 由前缀和的性质我们知道 ,如果 sum[l~r]=‘odd’ 说明 sum[r]和sum[l-1] 的奇偶性不同,一奇一偶,否则说明两者奇偶性相同,同为奇数或者同为偶数。这题我们考虑带权并查集设边权d[x]为0,表示x和fa[x]的奇偶性相同,如果d[x]为1,表示x和fa[x]的奇偶性不同 在进行路径压缩时,对x到树根的所有边权做异或运算,可以得到x和树根的关系对每个询问,设ans表示该问题的回答(0代表偶

2022-05-04 09:09:58 181

原创 AcWing 4415 点的赋值(染色)

题目思路要求一条边所在的两个端点权值相加为奇数,则说明一条边两个端点,一个是奇数,一个是偶数(奇+偶=奇),除去这种情况,其他情况都不符合题意,所以这个只要判断这是否是个二分图就行。一个集合放奇数,一个集合放偶数。假设放奇数的集合有x个数,放偶数的集合有y个数,因为奇数有两种选择,1和3,而偶数只有一种选择,2,所以种数就是(2^x) *(1^y ),因为奇数,偶数的个数可以倒过来,所以就是(2^x *1^y) + (2^y * 1^x) ,就是2^x + 2^y .又因为不保证图里只有一个连通块

2022-05-01 21:12:13 147

原创 4月23日天梯赛总结

就我个人而言,很烂很烂,毫不客气的讲,做的跟shit一样。我们学校本来三支队伍,最后一支审核没通过,就剩两支了,另外一支队伍是T1级别的,不出意外拿了金,我们拿了铜,事后看榜,我们一共十个人,然后最nb的那个大哥没参赛,导致我们与银牌就差了一百分刚出头。其实这一百分,随便上个人都能拿到,也就是说,如果不少人的话,我们的实力是可以拿银的。但这依旧改变不了我是个菜鸡的事实中间睡了半个小时的觉,阅读理解(实际上是发呆)了20分钟,也就是说浪费了50分钟。然后就是阅读理解,L2第一题,题干真是又臭又长,本身我

2022-04-25 20:15:53 297

原创 逛公园(洛谷P3953)

终于做出来了。。。。。。题目一位大佬的博客然后按我的个人理解来说说思路吧。首先建图,要建正向图和反向图。正向跑spfa,算出每个点到起点的最短距离,然后因为有的点可能没法在给定的条件下跑到终点,所以如果正向bfs会多做无用功,所以我们要反向bfs,从终点开始bfs。然后就是松弛,因为你可以最多多走k个单位的冤枉路,所以对每条边,都要试一试,看看能不能多走冤枉路,多走的距离就是d[v]+u,v之间的距离(也就是e.dist)-d[u]然后剩下的就是l-(d[v]+e.dist-d[u])dfs(

2022-04-22 17:09:46 154

转载 引水入城 洛谷P1514

题目一个大佬的博客代码#include<bits/stdc++.h>using namespace std;const int maxn=1e3+5;const int inf=0x3f3f3f3f;typedef long long ll;typedef pair<int,int> PII;bool vis[maxn][maxn];int a[maxn][maxn];int l[maxn],r[maxn];int n,m;int dx[4]={0,0,-1

2022-04-21 14:38:23 53

原创 Starts(POJ 2352)(前缀和+树状数组)

题目题意给出一些星星的横坐标和纵坐标,而且星星的纵坐标按非递减排列,如果纵坐标相等,则横坐标按递增排列,任意两颗星星不会重合。如果有n颗星星的横坐标比某颗星星小而且纵坐标不大于那颗星星(即有n颗星星位于那颗星星的左下角或者左边)则此星星的等级为n,最后输出等级为0至n-1的星星的数量。思路因为输入是按照按照y递增,如果y相同则x递增的顺序给出的, 所以,对于第 i 颗星星,它的ans就是之前出现过的星星中,横坐标 x 小于等于 i 星横坐标的那些星星的总数量(前面的y一定比后面的y小)。该问题本质

2022-04-14 17:24:28 60

原创 Frequent values(POJ 3368)(ST RMQ)

题目题意一个非降序序列,有若干查询,每次查询一个区间中重复次数最多的数字的个数。思路:因为是非降序的,所以可以从头遍历把每个相同的数字划为一个集合,用p[i]表示ai划分到了哪个块里面,同时还可以记录每个集合的左右边界,同时还可以获得每个集合中数字的个数。可以把这些个数处理成ST表。对于查询的区间,有三种可能(1)该区间只有一个集合那就直接右边界-左边界+1(2)该区间有两个集合找出左边界所在集合,在该区间的个数,以及右边界所在集合,在个区间的个数,比较二者大小(3)该区间有两个以上的集

2022-04-11 20:11:05 377

原创 Cheapest Palindrome(poj 3280)(区间dp)

题目题意给你长度为m的字符串,其中有n种字符,每种字符都有两个值,分别是插入这个字符的代价,删除这个字符的代价,让你求将原先给出的那串字符变成一个回文串的最小代价。思路dp[i][j]表示字符串的子区间[i,j]转化为回文的最小成本对于字符串的子区间[i,j]两端的字符s[i],s[j],分为以下两种情况(1)若s[i]==s[j],则两端的字符不需要花费成本,问题转化为求解子区间[i+1,j-1]则直接dp[i][j]=dp[i+1][j-1](2)若s[i]!=s[j],则需要比较两端的

2022-04-06 10:48:33 250

原创 AcWing 4394(最长连续子序列)

题目将近一年没做字符串的题了,属于是神志不清了#include <iostream>#include <cstring>#include <algorithm>#include<map>using namespace std;const int maxn=1e6+5;int l,r,length;int mp[maxn];int a[maxn];int cnt;int main(){ int n,k; cin>&

2022-04-03 13:34:58 365 1

原创 Ranking the Cows(POJ 3275)(传递闭包+floyd优化)

题目题意FJ想按照奶牛产奶的能力给她们排序。现在已知有N头奶牛(1 ≤ N ≤ 1,000)。FJ通过比较,已经知道了M(1 ≤ M ≤ 10,000)对相对关系。每一对关系表示为“X Y”,意指X的产奶能力强于Y。现在FJ想要知道,他至少还要调查多少对关系才能完成整个排序。思路如果排序可以确定了,潜台词就是任意两头牛之间的关系都可以确定了。N头奶牛一共有C(N, 2) = N * (N - 1) / 2对关系。由现在已知的关系如能确认K对关系,则要调查的次数就是C(N, 2) - K。这很容易理解

2022-03-30 11:26:09 88

原创 AcWing 1855.愤怒奶牛(思维+枚举+bfs)

题目打尼玛,退役了#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;typedef long long ll;typedef pair<int,int> PII;int a[maxn];bool vis[maxn];map<int,bool>ma;queue<PII>q;int main(){ io

2022-03-28 16:51:56 565

转载 洛谷P2515 软件安装(Tarjan+树上dp)

题目一篇通俗易懂的题解代码#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;typedef long long ll;struct Edge{ int from,to;};int n,m;vector<Edge>edges;vector<int>G[maxn];void add(int from,int to)

2022-03-24 15:03:05 109

转载 洛谷P3225 [HNOI2012]矿场搭建(割点+组合数学)

题目一篇简单易懂的题解代码#include<bits/stdc++.h>using namespace std;const int maxn=2e3+5;const int inf=0x3f3f3f3f;typedef long long ll;struct Edge{ int from,to;};vector<Edge>edges;vector<int>G[maxn];void add(int from,int to){ ed

2022-03-23 14:58:35 119

原创 Counting Cliques(暴搜dfs)

题目题意给定一个n个点,m条边的无向图,找出其中大小为s的完全图个数(n≤100,m≤1000,s≤10)思路暴搜。搜索的时候判断要加进来的点是否与当前集合中的每个点之间都有边。搜到集合大小为s就答案+1.注意:如果不做处理的话,每个完全图都会被搜到2^s次,其中只有一次是必要的。因此,一个很显然的常用的考虑是:搜索的时候下一个节点比当前的节点编号大,这样就肯定不会搜重复了。再稍微转化一下,在建图的时候就可以只建小点指向大点的边。代码#include <bits/stdc++.h&

2022-03-12 14:43:07 251

原创 POJ-1270(Following Orders)

题目题意给出一些变量和它们之间的先后顺序关系,求出这些变量可能的顺序,按字典序输出所有结果。思路因为要按照字典序输出,所以要对这些字母排序(我的方法是将这些字母转化为数字),因为要输出所有结果,表示答案不只有一个,就需要dfs回溯,总体来说就是拓扑排序+dfs回溯代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespac

2022-03-01 16:27:45 333

原创 Sticks(UVA307)

题目题意将n节木棒接成m个长度相等的木条,要求木条的长度尽可能的短。思路DFS没什么好说的了,说一下几个剪枝的地方。<1>首先,拼成木条的长度必须是所有木棒长度总和的约数,并且大于等于木条中的最大值。<2>将木棒从打到小排列,可以减少递归的层数。<3>当第i个木棒未选取时,如果i+ 1木棒与i木棒相同长度。跳过, 没有必要重复考虑。<4>当遍历到i个木棒时,找不到小木棒和它组成木条时, 可以终止当前判断的木条长度。代码#include&lt

2022-02-28 20:22:49 51

原创 洛谷p2294(前缀和+差分约束)

题目代码如下:#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;typedef long long ll;int n,m;struct Edge{ int from,to,dist;};vector<Edge>edges;vector<int>G[maxn];void init(){ for(int

2022-02-07 22:47:05 77

转载 洛谷P5960 差分约束算法

题目一个差分约束系统是这样的:给出 n 个变量和 m 个约束条件,形如xi-xj<=ck,你需要求出一组解,使得所有约束条件均被满足。怎么样解这个差分约束系统呢?我们将上面的不等式变形一下:xi<=xj+ck容易发现这个形式和最短路中的三角形不等式dis v<=dis u+w非常相似。因此我们就将这个问题转化为一个求最短路的问题:比如对于上面这个不等式,我们从j向i连一条权值为ck 的边接下来,我们再新建一个 0 号点,从 0 号点向其他所有点连一条权值为 0 的边。这个操

2022-02-06 15:13:07 152

原创 堆优化的prime算法

Prim和Dijkstra的贪心思想是一样的并且也可以用类似的方法实现代码如下#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;typedef long long ll;struct Edge{ int from,to,dist;};int n,m;vector<Edge>edges;vector<int>G[ma

2022-02-04 11:15:20 1081

原创 洛谷P1967 [NOIP2013 提高组] 货车运输(最大生成树+LCA)

题目思路由题可知,我们要求的是最大载重,而且这个最大载重要适用于每条边,所以毫无疑问这是个求最小的最大问题。这时候我们应该构建最大生成树。得到了这样一个树之后,我们便考虑如何求出两个节点之间最小边权的最大值(即为题中的最大载重),因为这两点之间的路径是唯一的,我们只需要找出这条路径便可以得到答案,a,b两点有且只有一条路径连通,我们可以通过LCA将a,b两点连的路都走一遍,并且每经过每条路都对限重进行比较,以保证求得最大限重。代码如下#include<bits/stdc++.h>usi

2022-02-03 23:33:13 480

原创 洛谷P2195 HXY造公园

题目题意给出一个n个点,m条边组成的森林,有q组询问:1.给出点x,求点x所在的树的直径2.给出点x,y,要求将x,y所在的树之间连一条边并构成一棵新的树,满足这个新的树的直径最小思路1.求树的直径,并存在一个数组里2.用并查集来动态合并+维护区域信息(包括同一颗树里的有着相同祖先的点的合并,不同树之间的合并)3.假设length数组:对于每棵树的根节点x,length[x]=该树的直径长度接下来对于每个询问2(如果给出的两点在同一颗树内则忽略),利用并查集找出两棵树的根节点x,y,并用并

2022-01-16 20:30:49 237

转载 洛谷 P2921 [USACO08DEC]Trick or Treat on the Farm G

题目转载(https://www.luogu.com.cn/blog/yjpiaomiao/P2921)

2021-11-23 09:42:45 124 2

原创 Purifying Machine(UVA-1663)

题目题意给定m mm个长度为n nn的0/1串,其中每个串至多有一位被挖掉,替换成了∗ ,表示这个位置可能是0/1。问最坏情况下最少要用多少个0/1串(也可以至多有一位为∗ )能表示这m个串思路一个模板可能匹配一个串或两个串,要让能匹配两个串的模板尽可能的多,建立二分图,能用一个模板匹配的串连边。答案即为实际的串数减去最大匹配数的一半(由于我们未划分二分图,所以每一组匹配会被计算两次,需要除以二)tips:位运算小技巧:x第y位置0: x|=(1<<y);x第y位置1:x&=~

2021-11-10 20:36:45 219

原创 Say Cheese(UVA 1001)

题目题意无限大的奶酪里有n(0<=n<=100)个球形的洞。你的任务是帮助小老鼠A用最短的时间到达小老鼠O所在位置。奶酪里的移动速度为10秒一个单位,但是在洞里可以瞬间移动。洞和洞可以相交。输入n个球的位置和半径,以及A和O的坐标,求最短时间。思路把起点A和终点O都看成是半径为0的球,共有n+2个球,每个球的球心看成结点。两个结点的距离就是球心的距离减去两个球的半径。如果距离为负,说明两个球是相通的,此时距离为0。用floyd算法,最后注意单位转化就行。代码#include<b

2021-11-04 20:23:14 119 2

空空如也

空空如也

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

TA关注的人

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