自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 广西师范大学计算机学院第九次周赛题解

广西师范大学第九次周赛题解

2022-04-23 21:01:48 1637

原创 Educational Codeforces Round 126 (Rated for Div. 2)

Educational Codeforces Round 126 (Rated for Div. 2) (A~C)

2022-04-10 20:32:33 642 1

原创 Moamen and XOR

C. Moamen and XOR莫阿门和伊扎特在玩游戏。他们创建了一个由n个非负整数组成的数组a其中每个元素都小于2k。当a1&a2&a3&…&an≥a1⊕a2⊕a3⊕…其中&为按位与运算,⊕为按位异或运算。请计算出Moamen数组a的中奖数量。由于结果可能非常大,因此输出对1000000007取模的值(109+7)。分析: 首先肯定要对 nnn 分奇偶,奇数个数字异或起来和偶数个数字异或起来情况肯定是不一样的,当 nnn 为奇数设 a1&

2022-04-07 11:34:14 3968

原创 Codeforces训练

Codeforces 个人训练

2022-04-06 10:34:56 327 1

原创 GXNU集训队第三次训练题解

GXNU集训队第三次训练题解

2022-04-03 11:10:32 1013

原创 Codeforces Round #780 (Div. 3)(A~F1)

Codeforces Round #780 (Div. 3)(A~F1)

2022-04-01 08:26:17 395

原创 Codeforces Round #756 (Div. 3)

Codeforces Round #756 (Div. 3)(A~D)

2022-03-29 10:43:07 414

原创 Codeforces Round #746 (Div. 2)(A~C)

Codeforces Round #746 (Div. 2)

2022-03-28 16:57:26 138

原创 Codeforces Round #747 (Div. 2)(A-C)

最近越来越菜了 A,B题都写这么慢, 我是fwA. Consecutive Sum Riddle题意: 从 lll 起到 rrr 止的等差数列的和为 nnn, 请求出 lll和 rrr分析: 由等差数列求和公式 (l+r)(r−l+1)/2=n(l + r) ( r - l + 1) / 2 = n(l+r)(r−l+1)/2=n可以令 l+r==1l + r == 1l+r==1然后 l=r−1l = r - 1l=r−1, 代入得, l=1−n,r=nl = 1 - n, r = nl=1

2022-03-28 12:58:55 172

原创 二分图总结

二分图是什么?二分图 是指将所有点分成两个集合, 使得所有边只出现在集合之间, 那就是二分图二分图的性质:二分图一定能进行无矛盾的染色二分图一定不含有奇数环二分图不一定是连通图二分图的判定问题, 一般常用的方法是染色法判定二分图, 相邻的两个点用不同的颜色染色, 只要某个点染色不成功就说明整个图不是二分图, 染色不成功等价于相邻的点染了相同的颜色#include<bits/stdc++.h>using namespace std;const int N = 3e5 +

2022-03-28 09:07:05 535

原创 Codefroces Round #779(div2)A~C

A. Marin and Photoshoot题意: 看样例就可以发现就是要在 000 后面插两个 111#include<bits/stdc++.h>#define x first#define y seoncd#define int long long #define gg exit(0);#define sf1(x) scanf("%lld",&x)#define sf2(x,y) scanf("%lld%lld",&x,&y)#define pr

2022-03-28 08:31:43 133

原创 有向图的强连通分量与无向图的双连通分量总结

tarjan

2022-03-27 10:47:59 2065 3

原创 CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes)

CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!) (A-C)

2022-03-25 09:23:39 676

原创 Educational Codeforces Round 124 (Rated for Div. 2)

日常倒序C.Fault-tolerant Network 题意分析: 有两排电脑, 每一排的电脑是左右互连的,现在要求你将上下两排的电脑连接起来, 形成容错网络: 即网络保持连接,尽管其中一台计算机出现故障。换句话说,如果一台计算机坏了(不管是哪台),网络就不会分裂成两个或多个部分。连接两台计算机的费用是 ∣ai−bj∣|a_i - b_j|∣ai​−bj​∣首先形成容错网络, 连四条边 是肯定可以的, 但不一定是最优的, 也可以连两条边, 也可以连三条边#include<bits/std

2022-03-23 20:28:25 344 1

原创 Educational Codeforces Round 125 (Rated for Div. 2)

Educational Codeforces Round 125 (Rated for Div. 2)(A~E)

2022-03-23 11:25:04 958 4

原创 图论学习总结(一万字+)

有趣的图论

2022-03-22 16:07:51 4370

原创 Codeforces Round # 778(div1 + div2)

倒序开吧, 你们最想看的应该是D题的题解, 我干了两个小时才搞懂D.Potion Brewing Class题意分析: 给定 nnn 种原料, n−1n - 1n−1 个约束条件, 每种原料的比值必须要满足约束关系, 然后求原料含量最小的总和首先不妨将题意转化一下, n,n−1n, n - 1n,n−1, 不难想到是树, 知道是树后, 可以将 nnn 种原料看作 nnn 个点, n−1n - 1n−1 个约束条件可以看作 n−1n - 1n−1 条边, 然后每两个点之间,要满足点权比等于边权, 我们

2022-03-21 19:52:27 1325 2

原创 闇の連鎖问题

分析可知, 这里就是要砍两条边, 第一次看主要边, 第二次砍附加边, 主要边就是树边, 附加边就是非树边, 假设非树边连接为 点x,yx,yx,y,当删除一条 x,yx,yx,y 之间的树边后, 非树边就成为了树边, 如果当 x,yx,yx,y 之间的数量为 sss, 当 s=0s = 0s=0 时, 删去任意一条非树边即可, 当 s=1s = 1s=1 时, 必须要砍去x,y之间的非树边,当 s>1s > 1s>1,无解然后这里边的覆盖需要利用到区间的加减, 即差分,...

2022-03-21 08:56:13 78

原创 分巧克力问题

对于二分问题首先确定二分什么, 不难发现,这题是对巧克力的边长二分,//对于分巧克力问题 我们可以对巧克力最大边长进行二分 然后判断是否每个人都能分到巧克力 #include<bits/stdc++.h>using namespace std;const int N=1e5+10;int h[N], w[N];int n, k, hmax, wmax, Max;bool check(int x){ int num=0; for(int i=0;i<n;i

2022-03-20 16:07:17 821 1

原创 最佳牛栅栏

① 可能的最大值,抓住关键词,考虑是否可以用二分,假设存在某一个平均值满足题目条件,那么小于该值的平均值一定能满足题目条件,而大于该值的平均值不一定能满足题目条件,于是可得 可以用二分② 为了快速判断某一区间的值是否大于我们二分的平均值,我们可以让每个数减去平均值,这样再将它们全部加起来就可以判断当前某一区间的平均值是否大于二分的平均值。二分:首先我们的 mid=(l+r)/2mid=(l+r)/2mid=(l+r)/2,记住这里不要是 >>1>>1>>1,因为这是浮

2022-03-20 15:57:39 300 1

原创 木材加工问题

首先对于二分问题,首先要确定,我们要对什么进行二分,二分什么,不难发现我们要对 lll 进行二分,然后确定边界, 左边界为 000, 右边界为 100000001100000001100000001然后确定好边界后,要解决的问题就是 checkcheckcheck 函数要怎么写, 这里就是看每块木头能切多少段, 直接除 lll 即可最后判断是否大于等于 kkk 段,是就返回 truetruetrue, 否则返回 falsefalsefalse#include<bits/stdc++.h>

2022-03-20 15:38:13 158 1

原创 子区间和问题

这个题肯定不能直接模拟,你要是暴力枚举端点,看看数据范围。。。。50000350000^3500003 下辈子都过不去。我们只要先预处理前缀和,然后用 pre[r]−pre[l]pre[r]-pre[l]pre[r]−pre[l] 就是区间和了,这样只要再拿他  mod7 mod 7 mod7 就可以判断了,最后求最大长度就可以了!然后发现不行。。。。 n2n^2n2 的复杂度啊我们可以先直接求  modmodmod 777 意义下的前缀和,然后只要看看余数的重复就可以了。这里需要用到一个小定理:

2022-03-20 15:26:04 382

原创 珂朵莉和宇宙

1e51e51e5 的数据显然是不可暴力枚举的。 我们用 s[r]−s[l−1]s[r]-s[l-1]s[r]−s[l−1] 表示 [l,r][l,r][l,r] 的区间和,看数据范围我们知道 s[i]s[i]s[i] 最多为 10610^6106, 也就是说我们要的平方和最多不超过 10310^3103,那样的话我们就可以试着枚举n以及平方和, 然后记录值等于 s[r]−j2s[r]−j^2s[r]−j2 的前缀和的个数即可得到答案。#include <iostream>#include

2022-03-20 15:21:17 147 1

原创 GXNU竞赛集训队第一次训练题解

2022/3/19训练题单1352B1512D1368B1542B1399D 1372C1400C1352F282C916C980B214BB. Same Parity Summands题意: 将整数 nnn 拆分成 kkk 个 奇偶性相同的数的和, 换句话来说就是将 nnn 拆分成 kkk 个奇数 或者 kkk 个偶数, 如果存在,则将这 kkk 个奇数,或者 kkk 个偶数打印出来, 不存在则输出"NO"假设拆分成奇数, 无论拆分成多大的奇数, 这些奇数是一定可以拆分.

2022-03-20 10:43:11 763 1

原创 Codeforces Round # 674 (div2)

A. Fence给定 三条边的长度 让你求能组成四边的第四条边长度其中三边不共线方法1: 利用四边形性质 三边之和大于第四边直接输出 a+b+c−1a + b + c - 1a+b+c−1 即可方法2: 构造一个特殊的四边形B. Nice Matrix给你一个 N∗MN*MN∗M 的数字矩阵要求每行每列都构成回文串可以变换任意位置的数值(变化值为1)求最小的变换次数首先我们不处理中间行,和每列中间的元素,如果判定最后 nnn 为奇数, 再处理最中间的行, 如果 mmm 为奇数, 处

2022-03-19 09:17:38 514 2

原创 <<算法竞赛进阶指南>>: 观光(单源最短路和单源次短路计数问题)

对于单源最短路计数问题,我们已经不陌生,但是对于单源次短路计数问题可能比较陌生,那么我们接下来看一道题,“您的个人假期”旅行社组织了一次比荷卢经济联盟的巴士之旅。比荷卢经济联盟有很多公交线路。每天公共汽车都会从一座城市开往另一座城市。沿途汽车可能会在一些城市(零或更多)停靠。旅行社计划旅途从 SSS 城市出发,到 FFF 城市结束。由于不同旅客的景点偏好不同,所以为了迎合更多旅客,旅行社将为客户提供多种不同线路。游客可以选择的行进路线有所限制,要么满足所选路线总路程为 SSS 到 FF

2022-03-16 20:04:48 281

原创 <<算法竞赛进阶指南>>:加成序列

满足如下条件的序列 XXX(序列中元素被标号为 1、2、3…m1、2、3…m1、2、3…m )被称为“加成序列”:X[1]=1X[1]=1X[1]=1X[m]=nX[m]=nX[m]=nX[1]<X[2]<…<X[m−1]<X[m]X[1]<X[2]<…<X[m−1]<X[m]X[1]<X[2]<…<X[m−1]<X[m]对于每个 kkk(2≤k≤m2≤k≤m2≤k≤m)都存在两个整数 iii 和 jjj (1≤

2022-03-16 10:57:34 470 1

原创 <<算法竞赛进阶指南>>:陪审团

在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定。陪审团是由法官从公民中挑选的。法官先随机挑选 NNN 个人(编号 1,2…,N1,2…,N1,2…,N)作为陪审团的候选人,然后再从这 NNN 个人中按照下列方法选出 MMM 人组成陪审团。首先,参与诉讼的控方和辩方会给所有候选人打分,分值在 000 到 202020 之间。第 iii 个人的得分分别记为 p[i]p[i]p[i] 和 d[i]d[i]d[i]。 为了公平起见,法官选出的 MMM 个人必须满足:辩方总分 DDD 和控方总分

2022-03-15 20:56:42 686 1

原创 背包问题求具体方案

有 NNN 件物品和一个容量是 VVV 的背包。每件物品只能使用一次。第 iii 件物品的体积是 viv_ivi​,价值是 wiw_iwi​。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 字典序最小的方案。这里的字典序是指:所选物品的编号所构成的序列。物品的编号范围是 1…N1…N1…N。输入格式第一行两个整数,N,VN,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有 NNN 行,每行两个整数 vi,wiv_i,w_ivi​,wi​,用空格隔开,分别

2022-03-15 13:36:27 256 1

原创 背包问题求方案数

有 NNN 件物品和一个容量是 VVV 的背包。每件物品只能使用一次。第 iii 件物品的体积是 viv_ivi​,价值是 wiw_iwi​。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+710^9+7109+7 的结果。输入格式第一行两个整数,N,VN,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有 NNN 行,每行两个整数 vi,wiv_i,w_ivi​,wi​,用空格隔开,分别表示第 ii

2022-03-14 19:10:17 691

原创 有依赖的背包问题

有 NNN 个物品和一个容量是 VVV的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品 555,则必须选择物品 111 和 222。这是因为 222 是 555 的父节点,111 是 222 的父节点。每件物品的编号是 iii,体积是 viv_ivi​,价值是 wiw_iwi​,依赖的父节点编号是 pip_ipi​。物品的下标范围是 1…N1…N1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。

2022-03-14 13:10:59 139 1

原创 分组背包问题

对于分组背包问题,要抓住最关键的一点 : 每组物品有若干个,同一组内的物品最多只能选一个。状态表示: f[i][j]f[i][j]f[i][j] : 在前 iii 组物品中选,且总体积不超过 jjj 的集合状态属性: 总价值的最大值状态转移方程:选第 iii 组中的第 kkk 个物品 和不选第 iii 组中的第 kkk 个物品f[i][j]=max(f[i][j],f[i−1][j−v[i][k]]+w[i][k]);f[i][j] = max(f[i][j], f[i - 1][j - v[i]

2022-03-14 08:53:37 174

原创 混合背包问题

混合背包问题包括了三种背包, 010101 背包,完全背包,多重背包,首先我们需要了解他们之间的关系,不难发现,我们可以将 010101 背包和多重背包一起处理, 010101 背包就是 s=0s = 0s=0 的多重背包,所以完全背包就直接套板子for(int j = m; j >= v; j -- ) f[j] = max(f[j], f[j - v] + w);然后处理01背包和多重背包 if(s == - 1) s = 1;

2022-03-14 08:35:05 641

原创 有关算法竞赛的一些小技巧和小建议

首先关于头文件的使用,个人比较喜欢用这种#include<iostream>#include<algorithm>#include<cstring>这种头文件的优点 : 编译快,在你debug的时候会很爽,一秒钟就编译好了,缺点: 需要加很多头文件,有时候你用一些函数时,忘记了它的头文件就会非常头痛,所以平时刷题时要有意识的去记一下他们的头文件,敲多了就记住了另一种#include<bits/stdc++.h>相信这种头文件大家应该见的很多

2022-03-13 10:47:42 2290 8

原创 完全背包问题

完全背包问题状态表示: f[i][j]f[i][j]f[i][j]: 从前 iii 个物品中选,总体积不超过j的集合状态属性: 总价值的最大值状态计算:第 iii 个物品选 000个 f[i][j]=max(f[i][j],f[i−1][j−0∗v[i]]);f[i][j] = max(f[i][j], f[i - 1][j - 0 * v[i]]);f[i][j]=max(f[i][j],f[i−1][j−0∗v[i]]);第i个物品选 111 个 f[i][j]=max(f[i][j],f[

2022-03-13 10:01:49 409

原创 01背包问题

010101背包问题的二维状态状态定义 f[i][j]f[i][j]f[i][j]: 在前 iii 个物品中选, 并且总体积不超过 jjj 的集合状态属性: 价值的最大值状态计算:1.选第 iii 个物品 f[i][j]=max(f[i][j],f[i−1][j−v[i]]);f[i][j] = max(f[i][j], f[i - 1][j - v[i]]);f[i][j]=max(f[i][j],f[i−1][j−v[i]]);2.不选第 iii 个物品 f[i][j]=max(f[i]

2022-03-13 09:52:32 366

原创 多重背包问题

多重背包问题状态表示: f[i][j]f[i][j]f[i][j]: 在前 iii 个数中选, 每个物品不超过 sis_isi​ 个体积总和不超过 jjj 的集合状态属性: 总价值的最大值状态计算1.第i个物品选0个f[i][j]=max(f[i][j],f[i−1][j−0∗v[i]]+0∗w[i]);f[i][j]= max(f[i][j], f[i - 1][j - 0 * v[i]] + 0 * w[i]);f[i][j]=max(f[i][j],f[i−1][j−0∗v[i]]+0∗w[

2022-03-13 09:35:56 1003 1

空空如也

空空如也

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

TA关注的人

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