自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 东吴2013B5

东吴2013B5

2022-12-05 17:52:19 139 1

原创 将不带表头节点的单链表按奇偶拆成两个表

将不带表头节点的单链表按奇偶拆成两个表

2022-12-03 20:55:40 220

原创 不带头节点的二叉链表删除所有值为x的节点

单链表删除x

2022-12-03 20:48:25 185

原创 Maven

Spring Maven

2022-06-10 20:59:33 88

原创 #790 div4

G#include<bits/stdc++.h>#include <ostream>using namespace std;typedef long long ll;#define endl '\n'typedef pair<int, int> PII;#define debug() cout.flush()#define for0(i, a) for (int i = 0; i < a; ++i)#define REP(i, a, b) fo

2022-05-11 19:20:00 130

原创 复杂密码生成器

import java.util.*;public class Main { private static final String []range = new String[5]; private static int[] sum = new int[10]; private static void init() { range[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; range[1] = "abcdefghijkl

2022-05-01 16:55:11 1143

原创 传递闭包模板

Tips:用于解决A<B,B<C等不等式传递问题(也可以用拓扑排序解决)#include<bits/stdc++.h>#include <ostream>using namespace std;typedef long long ll;//#define endl '\n'typedef pair<int, int> PII;#define debug() cout.flush()#define for0(i, a) for (int i =

2022-04-29 15:16:22 123

原创 洛谷P2590[ZJOI2008]树的统计(树链剖分)

题目链接:点击跳转代码如下:#include<bits/stdc++.h>#include <ostream>using namespace std;typedef long long ll;#define endl '\n'typedef pair<int, int> PII;#define debug() cout.flush()#define for0(i, a) for (int i = 0; i < a; ++i)#define RE

2022-04-13 17:33:48 187

原创 CF 1661D Progressions Covering(差分+线段树)

题目链接:点击跳转题意: 有两个长度相等的序列a,b,a序列开始全为0,b序列有题目给出,每次可以选择a中一段长度为k的序列,将该范围的数依次加上1,2,3…k,问最少多少次操作,能使对于任意i,使得ai >= bi。思路: 最后一位只能够使用k来消除,而用k消除也恰好是最快的,那么可以从后往前开始处理,但是要怎么更新序列呢,可以使用差分来给修改的每位都加上i(操作次数),用线段树来维护差分序列,求出的前缀和就是该点的值,从后往前处理一遍即可。代码如下:#include<bits/std

2022-04-12 17:27:22 459

原创 CF 1661C Water the Trees(思维)

题目链接:点击跳转题意: 公园里有N棵树,在奇数天浇水可以使树的高度+1,偶数天+2(每天只能浇一次水,可以选择不浇),问最少需要多少天,能使得所有树的高度一致。思路:如果当前树与最高的那棵树的高度差为奇数,那么就意味着该树至少要占用一次奇数天(只能多,不能少),而其他的均可通过偶数天完成。若偶数天如果大于奇数天,那么可以通过将一个偶数天拆成2个奇数天来减少时间。为保持奇数偶数尽量相等(使天数尽可能少),可以将偶数多出的天数的1/3转化为奇数天,如果存在余数,若余数为1,如果转化,则需要两个1天

2022-04-12 13:04:42 602

原创 CF 1665C Tree Infection(模拟 + 贪心)

题目链接: 点击跳转题意: 给你一棵树,每次你可以依次进行以下操作,1.对于一个节点,如果该节点有至少一个子树被涂色(可以理解为图着色,原译不是涂色)了,那么你可以任选他的子树上的另一个节点使其被传染(可以对多个节点操作,但每个节点的子树在一次操作只能传染一次),2.任选一个节点,使其被涂色(可以选1中操作过的子树中的节点),问最少几次操作能使整棵树都被涂色。思路: 开始想,从大的数量开始涂色,然后每棵更小的子树均可以对该子树提供传染的机会,但是这样子求出的值并不是最小的。错误代码:#include

2022-04-09 20:49:28 849 5

原创 CF 1656D K-good(思维)

题目链接:点击跳转题意: 给你一个数n(2 <= n <= 1e18), 问n是不是k-good数(及分成k个数,k个数的和为n,这k个数取模k的结果均不相同),如果存在多个k成立,输出任意一个即可思路:如果一个数能被拆成一个奇数和一个偶数的积(奇数不能为1),该数就是k-good数。取奇数个,如40 = 5 * 8, 取中间数为8,剩余的数可以依次改为 6 7 9 10。 取偶数个, 如102 = 6 * 17, 则中间数为 8 9,两边依次为3 4 5 6 7 10 11 12 1

2022-03-25 20:17:27 641 3

原创 CF 1654E Arithmetic Operations(枚举)

题目链接:点击跳转题意: 给出一个长度为n的序列a,问最少修改几个数字,能使得序列变成等差序列思路:枚举公差(我取了-300~300),用数组记录每个数字减去位置乘公差的值出现的次数,出现最多的次数就是在枚举范围内的最优解。但是这个枚举不能太大(完整枚举2e5 * 1e5会超时),但是只枚举小范围不能保证正确,如样例3最优解的公差为-20000,那么我们可以遍历数据,取数据中的数的差值作为公差(注意公差要为整数),同样记录,并更新最优解(注意:因为记录的差为2个数的差,但后续遍历没有加上

2022-03-21 21:26:11 605

原创 CF 1654C Alice and the Cake(模拟)

题目链接:点击跳转题意: 爱丽丝有一块蛋糕,她要把蛋糕切成n份,每一次操作,她会选择一块蛋糕(另大小为A),将其切成两半,两块大小分别为A / 2, (A + 1) / 2,及分成整数的两半,如果原大小为奇数,则一块会大1,现在给出一个序列,问有没有可能为一块蛋糕经过n - 1次操作后得到的思路: 由每一块拼回去会因为有不同的拼接操作无法判断,可以逆向思维,模拟一块完整的蛋糕切成现在的大小序列,通过维护两个最大堆,如果模拟的堆顶小于该序列,说明无法切出这个序列,输出NO,如果等于,说明序列中的一个元素已

2022-03-21 12:53:43 395

原创 Java IO

//--------------------------INPUT READER---------------------------------// static class fs { public BufferedReader br; StringTokenizer st = new StringTokenizer(""); public fs() { this(System.in); } public fs(InputStre

2022-02-26 21:24:43 209

原创 Codeforces Round #770 (Div. 2) B. Fortune Telling

题目链接:点击跳转题意: 有一个长度为n的数组a,对于数组中的每个数,有两种操作方法,1.x + a, 2. x ^ a(^为异或符),Alice开始拥有的数为x,Bob拥有的数为x+3,每个人必须从数组a的开始到结束每个数选择一种方式进行操作,问谁的数能变成y(题目保证成立)。思路: 每一个数都有两种操作可能max(n) = 1e5,那么可能性有2的1e5次,但是仔细想想发现,不管是异或或是加上,对于最后一位数的二进制的结果是相同的(1 + 1(发生进位位数变回0) = 1 ^ 1, 0 + 1 =

2022-02-07 15:00:45 613

原创 Codeforces Round #770 (Div. 2) C. OKEA

题目链接:点击跳转题意: 商店有n排货架,每排有m个位置能装货物,货物的价格从1到n*m(每个价格一个),店里有一个机器人会从货架每一行的头开始取价格,每取一个价格加上后会计算平均价格,但是这个机器人很特殊,他遇到带小数的数字时会故障,问有没有排列能使机器人不会出现故障思路: 构建等差数列,根据行数的奇偶性来排列数字(如第一行:1 3 5 7 9, 1 3含两个1 和一个2,那么是2的倍数,1 3 5,含3个1和3个2,那么是3的倍数,以此类推),那么怎么判断不成立的情况呢,可以计算我们构建数列的最大值

2022-02-07 14:40:36 591

原创 2022牛客寒假算法基础集训营3 C 智乃买瓜(another version)

题目链接:点击跳转题意::和上题的区别就是现在是已知每个重量的西瓜能有多少种取法,求该组西瓜的重量(答案不唯一)思路::从前往后处理,如果当前这个重量增加了西瓜,因为可以买半个,那么一定会影响到前面的值导致错误,所以每个重量都认为从半个西瓜得到的,每增加一个使用上一题的dp(链接:点击跳转)来记录当前西瓜所能组成的数量,然后和输入数据比较,如果不够,就继续添加。代码如下:#include<bits/stdc++.h>using namespace std;typedef long

2022-01-29 18:48:05 976

原创 2022牛客寒假算法基础集训营3 B 智乃买瓜

题目链接:点击跳转题意:有n个西瓜,每个可以买整个和买半个,问如果他想要购买西瓜的重量和分别为k=1,2,3…M时,有多少种购买西瓜的方案。思路:将每个西瓜和已经买下的使用dp进行组合,注意半个和整个要独立存入代码如下:#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll MOD = 1e9 + 7;const int N = 1e3 + 5e2;signed main() {

2022-01-29 18:39:26 711

原创 牛客练习赛95 C-Division

题目链接:点击跳转题意:给出一个长度为n的数组,每次可以取长度大于等于k的一段对里面的数除二(向下取整),问能不能将里面所有数变为1代码:def get_ans(self): # 计算该数几次操作后变为1 ans = -1 # 因为是变为1,所以要减去一次 while self: ans += 1 self >>= 1 return ansdef main(): T = int(input()) N = 10

2022-01-21 14:17:58 417

原创 牛客练习赛95 B-Non-interger Area

题目链接:点击跳转题意:题目给出n个x,y坐标都是整数的点(有重复点),问存在几种选法可以使得选取的三角形面积不是整数思路:画完图后发现,如果三角形的三个顶点都在整数坐标上,那么构成的三角形面积就相当于左下右上(左上右下一样)构成的一个矩形,减去多余的两个或者三个三角形的面积后剩下的,因为构成的三角形边长均为整数,那么减去的面积只有两种情况,整数,或者带0.5的小数。然后把所有点归纳一下,可以分为四类:x奇y奇,x奇y偶,x偶y奇,x偶y偶,算了一些数据后发现,每个同类的点至多在构成三角形中只能出现一次

2022-01-21 13:21:14 465

原创 Hdu3038 How Mang Answers Wrong

题目链接: 点击跳转题意:题目会先输入n,m,分别表示有n个节点,m个回答,每个回答会告诉你节点l到节点r之间权值的总和(包含l,r),当然,回答不一定是对的,需要我们根据输入顺序判断是否有错即可。思路:使用sum数组记录子节点到父节点的总和(l需要减一,因为l的权值也是包含在内的),构建带权并查集,合并时注意因为两根节点合并会出现一条反边,即sum[find(l)] = - sum[a] + sum[b] + v;所以这个权值是要被减去的,然后判断是否合理是看两个点在同一颗树上时,两者的差值与输

2021-11-24 20:24:49 152

转载 unordered_map的哈希模板

模板来源:HKer_YM的博客struct custom_hash { static uint64_t splitmix64(uint64_t x) { x += 0x9e3779b97f4a7c15; x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9; x = (x ^ (x >> 27)) * 0x94d049bb133111eb; return x ^ (x >&g

2021-11-17 19:55:22 72

转载 主席树模板

模板来源:HKer_YM的博客1求区间第k大#include <bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN = 2e5 + 5;const ll MOD = 100000007;ll a[MAXN], b[MAXN], n, m, q, sz;int lc[MAXN << 5], rc[MAXN << 5], rt[MAXN << 5], sum[M

2021-11-17 19:51:05 162

原创 KMP算法模板

const int MAXN = 1e5 + 5e2;int Next[MAXN];char str1[MAXN], str2[MAXN]; //这里以str1为母串,str2为子串void getNext() { Next[0] = -1; int len = strlen(str2); int j = 0; int k = -1; while (j < len) { if (k == -1 || str2[j] == str2[k]

2021-11-17 19:41:19 56

原创 网络流模板(更新中)

1.dinicconst int MAXN = 2e3 + 5;const int INF = 0x3f3f3f3f;struct Edge{ int to,val,nxt;}e[MAXN];int head[MAXN], deep[MAXN];int n, m, s, t, cnt;ll res;inline void init() { for (int i = 1; i <= n; i++) head[i] = -1; cnt = 0;}inli

2021-11-17 19:20:08 101

转载 马拉车算法模板

模板来源:HKer_YM的博客1.求最长回文长度或回文子串个数//求回文串的个数inline int Manacher(string s){ //转换字符串 memset(hw, 0, sizeof(hw)); int len = s.length(); string nowString = "$#"; for(int i = 0; i < len; i++){ nowString += s[i]; nowString +

2021-11-16 22:01:52 231

原创 并查集模板

const int MAXN = 1e5 + 5e2;int bin[MAXN];inline int find (int x) { return bin[x] == x ? x : (bin[x] = find(bin[x]); }inline void merge(int a, int b) { int fa = find(a); int fb = find(b); if (fa != fb) { bin[fa] = fb; }}

2021-11-16 21:57:48 40

转载 各种筛模板

模板来源:HKer_YM的博客1.线性筛// 复杂度: O(n)void init() { phi[1] = 1; for (int i = 2; i < MAXN; ++i) { if (!vis[i]) { phi[i] = i - 1; pri[cnt++] = i; } for (int j = 0; j < cnt; ++j) { if (1ll * i * pri[j] >= MAXN) break;

2021-11-16 19:03:33 299

原创 Hexo博客搭建

1.安装Nodejs我用的是ubuntu,所以直接apt$ sudo apt install nodejs1.2安装npmnpm是nodejs的包管理工具$ sudo apt install npm2.安装hexo这里建站是使用hexo快速生成的$ sudo npm install --unsafe-perm --verbose -g hexo2.1然后初始化$ hexo init blog$ cd blog$ hexo g$ hexo s3.安装pm2我这边是部署在服

2021-11-12 13:04:50 50

原创 2021 ICPC 江西省大学生程序设计竞赛 H Hearthstone So Easy

题目链接:点击跳转题意:每个玩家开始有n点生命值,每回合可以造成k点伤害或者恢复k点生命值(生命值不能超出上限),同时,每个玩家都进入疲劳状态,即回合开始时会受到伤害(第i个自己的回合受到i点伤害),生命值为0就输了,问谁能获胜。思路: 简单推了一下,发现第一回合无法解决掉第二个玩家,先手因为疲劳值会更高,所以都会输,即当n > k + 1时,先手必败,其他时候先手必胜(注意先手只有1点生命值的时候会在开局时失败)。代码如下:#include<bits/stdc++.h>usin

2021-11-09 20:52:47 290

原创 计蒜客 T1595 迷宫(一)

题目链接:点击跳转这题dfs和bfs都可以解决,这里就结合一下,把问题转化为网络流,用dinic算法解决。对于每个非*的点,都向四周所能到达的地方建一条流量为1的边,如果最后T点有流量能到达,则说明S能到达T点。代码如下:#include<bits/stdc++.h>using namespace std;typedef unsigned long long ll;const int MAXN = 5e3 + 5e2;const int INF = 0x3f3f3f3f;#d

2021-10-20 20:14:00 208

原创 Hdu3046 Pleasant sheep and big big wolf(最小割)

题目链接:点击跳转可以用网络流解决,难点在于如何建图。针对每一个点,他们都可以移动到四周的点上,那么对于每个点,向四周的点建一条流量为1的边,对于每一个1的点,建一条源点到这个点的边,流量为inf,对于每一个2的点,建一条这个点到汇点的边,流量为inf。这样子,这个问题就被转化为最大流问题,因为最大流=最小割,那么最后得到的就是题目要求的答案。代码如下:#include<bits/stdc++.h>using namespace std;typedef unsigned long

2021-10-20 20:01:36 50

原创 Hdu3549 Flow Problem(网络流)

链接:点击跳转网络流模板题代码如下:#include<bits/stdc++.h>using namespace std;typedef unsigned long long ll;const int MAXN = 2e3 + 5;const int INF = 0x3f3f3f3f;#define endl '\n'inline void IO_STREAM() { ios::sync_with_stdio(false); cin.tie(nullptr)

2021-10-20 18:54:35 60

原创 洛谷P3376【模板】网络最大流

链接:点击跳转在开始建边的时候同时建一条反向边,然后在减少边权的时候给反边加上边权,每一次寻找从s到t的独立路径,记录前驱和该路径所在的数组下标,更新所能到达该点的流量(为该路径的边权和前驱的流量中的较小值),直到到达t点,返回t点得到的流量,如果到达不了t点,即不存在增广路,则算法结束,如果有增广路,将流量加入结果,将该路径上每一个边都删除该流量值,反边则加上流量值#include<bits/stdc++.h>using namespace std;typedef unsigned

2021-10-19 22:26:30 97

原创 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛 D 旅行家问题2

示例1输入:31 92 14 1输出:11示例二输入:64 28 43 02 37 10 1输出:13思路:重现的时候没过,之后看了过题的代码才明白。这题首先要求所有山都要经过然后回到出发点,也就意味着所有梯子都是要被用到的,往高的山走如果梯子不够长就要做飞机,这个是额外花费。既然所有梯子都要被用到,那么就在输入的时候就可以先把花费记起来,然后用贪心的思想,如何避免额外的花费呢,那就是每次都尽量往能到的最高的山上去,但是这样不容易维护,换一种思路,把数组按高.

2021-09-11 18:29:44 140

原创 CF1118D2 Coffee and Coursework (Hard Version)(二分)

题目描述InputThe first line of the input contains two integers n and m (1≤n≤2⋅105, 1≤m≤109) — the number of cups of coffee and the number of pages in the coursework.The second line of the input contains n integers a1,a2,…,an (1≤ai≤109), where ai is the caf

2020-09-02 22:54:49 176

原创 CodeForces 1118C Palindromic Matrix

Palindromic Matrixtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputInputThe first line contains one integer n (1≤n≤20).The second line contains n2 integers a1,a2,…,an2 (1≤ai≤1000) — the numbers t

2020-09-02 22:02:57 132

原创 POJ 2777 Count Color(线段树+二进制存值)

DescriptionChosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a new problem.There is a very long board with length L centimeter, L is a positive integer, so we can evenly divide

2020-09-01 23:01:45 68

原创 Hdu多校8-1009 hdu-6863 Isomorphic Strings

题目链接:点击跳转Problem DescriptionInputOutputFor each test case, output one line containing ‘‘Yes’’ or ‘‘No’’ (without quotes).Sample Input61a2aa3aab4abba6abcbcc8aaaaaaaaSample OutputNoYesNoYesNoYes题目大意:求给出的字符串的长度的因子(大于1的),以该因子拆分原串,

2020-08-17 21:37:10 97

空空如也

空空如也

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

TA关注的人

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