- 博客(38)
- 资源 (6)
- 收藏
- 关注
原创 Codeforces Round #666 (Div. 2)题解ABC
A. Juggling Letters题目传送门Juggling Letters题目大意给你n个字符串,让你移动任意次后判断能否让每个字符串相等思路直接统计每个字符串中出现的字符串的个数和,判断和是否为n的倍数AC Code#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;#define endl '\n'
2020-08-31 10:43:46 1640
原创 Dungeon Master(bfs)
Dungeon Master题目传送门Dungeon Master题目大意zjm被困在一个三维的空间中,现在要寻找最短路径逃生!空间由立方体单位构成。zjm每次向上下前后左右移动一个单位需要一分钟,且zjm不能对角线移动。空间的四周封闭。zjm的目标是走到空间的出口。是否存在逃出生天的可能性?如果存在,则需要多少时间?思路相当于一个三维空间的bfs,直接写就行了AC Code#include<cstdio>#include<algorithm>#inclu
2020-08-30 22:15:20 270
原创 棋盘问题(简单dfs)
棋盘问题题目传送门棋盘问题题目大意在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。思路直接开一个数组记录访问每行时,被访问过的列然后dfs每行即可,记得在最后加一个dfs(h+1),避免某行全不满足check后无法进入下一行的问题AC Code#include<cstdio>#include<algorithm>
2020-08-30 20:20:03 184
原创 P3368 【模板】树状数组 2
P3368 【模板】树状数组 2题目传送门P3368 【模板】树状数组 2题目大意给你一个长度为n的数组操作 1: 格式:1 x y k 含义:将区间 [x,y][x,y][x,y] 内每个数加上 kkk;操作 2: 格式:2 x 含义:输出第 xxx 个数的值。思路区间更新,单点查询的树状数组AC Code#include<cstdio>#include<algorithm>#include<iostream>#include<cstri
2020-08-30 17:56:17 135
原创 A Simple Problem with Integers(树状数组)
A Simple Problem with Integers题目传送门A Simple Problem with Integers题目大意给你一个长度为n的数组进行m次操作,操作包括对区间的值进行加减和对区间进行求和思路区间更新,区间查询的树状数组考虑使用更加简单的树状数组,区间更新可以使用差分维护,区间查询可以开两个数组维护int sum1[N]; //(D[1]+D[2]+...+D[n])int\ sum1[N];\ \ \ \
2020-08-30 17:41:43 776
原创 敌兵布阵(树状数组模板题)
敌兵布阵题目传送门敌兵布阵题目大意给你一个长度为n的数组,可以对其单点进行加减操作,可以对区间进行区间求和思路标准的树状数组模板,这里用线段树比较麻烦,听说暴力维护前缀和也能过AC Code#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;#define endl '\n'#define INF 0x3f
2020-08-30 17:03:08 134
原创 树状数组模板
在此只贴出模板,具体的原理参考大佬博客树状数组详解模板int n;int a[N],bit[N]; //对应原数组和树状数组int lowbit(int x){ return x&(-x);}void updata(int i,int k){ //在i位置加上k while(i <= n){ bit[i] += k; i += lowbit(i); }}int getsum(int i){ //
2020-08-30 12:55:48 68
原创 Sleepy Cow Sorting(树状数组)
Sleepy Cow Sorting题目传送门Sleepy Cow Sorting题目大意给你一个长度为n的数组,每次只能移动最前面的那个数字到任意位置求将数组按非递减排序需要的移动的最小次数和每次移动的距离思路可以将给定的数组分为两部分,分别为后半段顺序正确的部分,和前半段顺序不对的部分所以需要改变的即为前半段的部分,即为最优解每次移动的距离为在前半段乱序走过的路径和后半经过的路径,前半段可以自己求,后半段可以使用树状数组维护即将后半段正序部分建立起点权为1的树AC Code#in
2020-08-30 12:54:03 316
原创 Bessie Goes Moo(暴力)
Bessie Goes Moo题目传送门Bessie Goes Moo题目大意一共七个字符,分别为BESIGOMBESIGOMBESIGOM给你n个每个字符对应的数字,可能一个字符对应多个整数求满足(B+E+S+S+I+E)(G+O+E+S)(M+O+O)%7=0(B+E+S+S+I+E)(G+O+E+S)(M+O+O)\%7=0(B+E+S+S+I+E)(G+O+E+S)(M+O+O)%7=0的情况数思路对输入的数,可以先进行取模,即对7模数相同的可以看做一个数然后直接O(n7)O(n^
2020-08-29 21:15:17 300
原创 Educational Codeforces Round 94 (Rated for Div. 2)题解ABCD
A. String Similarity在这里插入代码片题目传送门String Similarity题目大意给你一个n和一个长度为2∗n−12*n-12∗n−1的01字符串,对于给定字符串,你需要构造一个长度为n的字符串,其与原字符串的s[1..n],s[2..n+1],s[3..n+2],...,s[n..2n−1]s[1..n] , s[2..n+1], s[3..n+2], ..., s[n..2n−1]s[1..n],s[2..n+1],s[3..n+2],...,s[n..2n−1]全部相
2020-08-26 19:26:20 381
原创 2020杭电多校第十场题解3、4、11
Mine Sweeper(构造)题目传送门Mine Sweeper思路官方题解给的清清楚楚明明白白AC Code#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;#define endl '\n'#define INF 0x3f3f3f3f#define int long long// #define
2020-08-24 17:52:29 351
原创 Slime and Stones(威佐夫博弈扩展)
Slime and Stones题目传送门Slime and Stones附上大佬博弈博客简单易懂的博弈论讲解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)题目大意给你两堆石子,每次可以单独拿一堆中的任意值,或者两堆都拿,但是两堆拿的值需满足∣x−y∣≤k|x−y|≤k∣x−y∣≤k思路显然的威佐夫博弈的扩展威佐夫博弈中如果想拿两堆的话,拿的石子必须相同,即x=yx=yx=y也就是从原来的y=x+ky=x+ky=x+k变成了y=x+d∗ky=x+d*ky=x+d∗k,所以根据
2020-08-23 19:25:13 421
原创 2020杭电多校第九场题解A、C
Tree题目传送门Tree题目大意给你一个具有n个结点的树,以1为根结点,输入n-1个数分别为父节点让你创建一条边,使得(x,y)(x,y)(x,y)对(指x能到y)尽可能的多思路显然添加的这条边必然是添加在叶结点到根结点的,这样可以使得根结点到该叶结点的所有结点的对数全变为n所有,首先dfs求出所有的点的子结点的个数,然后dfs找取叶结点连接根结点取最大值即可AC Code#include<cstdio>#include<algorithm>#include
2020-08-23 19:23:54 323
原创 Painting the Barn(二维前缀和,二维差分)
Painting the Barn(二维前缀和,二维差分)题目传送门Painting the Barn题目大意在一个二维平面上,给你n个矩阵,每个矩阵给你左下角和右上角的点,代表矩阵覆盖的面求被覆盖了k次的面积思路二维前缀和,vis[i][j]+=vis[i−1][j]+vis[i][j−1]−vis[i−1][j−1];vis[i][j]+=vis[i-1][j]+vis[i][j-1]-vis[i-1][j-1];vis[i][j]+=vis[i−1][j]+vis[i][j−1]−vi
2020-08-23 13:55:20 603
原创 Codeforces Round #665 (Div. 2)题解ABC
A. Distance and Axis题目传送门Distance and Axis题目大意给你一个点a的坐标n,求点b的坐标,使得∣OB−∣AB∣∣=K|OB-|AB||=K∣OB−∣AB∣∣=K思路先判断n和k的大小关系b在OA中每移动一个点改变的大小为2,所以判断n−kn-kn−k的奇偶性即可AC Code#include<cstdio>#include<algorithm>#include<iostream>using namespace
2020-08-22 12:20:32 1036
原创 2020杭电多校第八场题解
Clockwise or Counterclockwise题目传送门Clockwise or Counterclockwise题目大意给你三个点ABC,判断A->B->C的方向(逆时针或者顺时针)思路叉积/*A(x1,y1) B(x2,y2) C(x3,y3)向量AB=(x2-x1,y2-y1)向量AC=(x3-x1,y3-y1)若 AB x AC < 0 则 ABC 顺时针若 AB x AC > 0 则 ABC 逆时针若 AB x AC = 0 则 AB、
2020-08-20 22:05:39 334
转载 Hexagon(找规律)
思路实在不会这种,看大佬博客吧HexagonAC Code#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <queue>#include <iostream>#include <map>#include <string>#inclu
2020-08-20 22:01:22 262
原创 Codeforces Global Round 10题解ABCD
A. Omkar and Password题目传送门Omkar and Password题目大意给你一个长度为n的数组,每次可以合并两个相邻且不同的数,问最后数组最小的长度思路其实答案只有1或者n,因为全部一样肯定是n,如果有一个不一样,它可以和其他的结合到最后为1AC Code#include<cstdio>#include<algorithm>#include<iostream>using namespace std;#define endl
2020-08-20 18:49:27 221
原创 2020杭电第七场题解Increasing and Decreasing、Game、Jogging
Increasing and Decreasing题目传送门Increasing and Decreasing思路官方题解已经给的很清楚了,直接分块构造就行AC Code#include<cstdio>#include<algorithm>#include<iostream>using namespace std;#define endl '\n'#define INF 0x3f3f3f3f#define int long long// #de
2020-08-18 00:28:07 201
原创 Educational Codeforces Round 93 (Rated for Div. 2)题解A、B、C、D
A. Bad Triangle题目传送门Bad Triangle题目大意给你一个长度为n的数组,让你从中选出i,j,ki,j,ki,j,k,满足1≤i<j<k≤n1≤i<j<k≤n1≤i<j<k≤n,其中ai,aj,aka_i,a_j,a_kai,aj,ak不能构成一个三角形思路将序列排序后直接判断第一个,第二个和最后一个能不能构成三角形即可AC Code#include<cstdio>#include<algorithm>
2020-08-15 12:09:47 1904 1
原创 2020牛客暑期多校训练营(第九场)题解A、I、F、K、E
A Groundhog and 2-Power Representation题目传送门Groundhog and 2-Power Representation思路大数,python,直接在计算幂的地方替换python的幂次计算(**),然后用eval函数计算即可AC Codeprint(eval(str(input()).replace('(', '**(')))I The Crime-solving Plan of Groundhog题目传送门The Crime-solving Pla
2020-08-14 00:44:03 412
原创 Codeforces Round #664 (Div. 2)题解ABCD
A. Boboniu Likes to Color Balls题目传送门Boboniu Likes to Color Balls题目大意给你四种颜色的球,给你一种操作:选择前三种各一个,将这三个变成最后一种,你可以执行任意次该操作问,球的数量可不可以形成回文思路分情况考虑一下球的奇偶性就行,奇数有0个,1个,4个都是可以的,奇数为3个的时候就需要分别考虑了,如果其中无0的话直接将前三个转成最后一个,就是三偶一奇了,有0的话只能在d上,不然就NOAC Code#include<cstd
2020-08-13 10:15:20 1389
原创 2020牛客暑期多校训练营(第十场)A、E、D Hearthstone Battlegrounds
A Permutation题目传送门Permutation题目大意给一个质数p,求一个1~p-1的排列,满足xi+1≡2xi(p mod) or xi+1≡3xi(p mod)x_{i+1}\equiv2x_i (p\ mod)\ or\ x_{i+1}\equiv3x_i (p\ mod)xi+1≡2xi(p mod) or xi+1≡3xi(p mod)思路因为2xi(mod p)2x_i (m
2020-08-12 18:27:35 189
原创 Matrix-Tree 定理(基尔霍夫矩阵树定理)求图生成树个数
作用Matrix-Tree 定理作用:给定 n 个点 m 条边的无向图,求图的生成树个数。结论对于已经得出的基尔霍夫矩阵,去掉其随意一行一列得出的矩阵的行列式,其绝对值为生成树的个数Code其中mat为基尔霍夫矩阵,n为点的个数。(for循环也可写作2~n)ll gauss(int n, ll mat[][N]){//求矩阵K的n-1阶顺序主子式 ll res=1; for(int i=1;i<=n-1;i++){ for(int j=i+1;j<=n
2020-08-12 13:14:16 960
原创 2020杭电多校第六场Expectation
Expectation题目传送门Expectation题目大意给你一个无向图,有n个点,m条边,每个边的边权为wiw_iwi ,定义树的权为树的所有边的边权的按位与。现在我们随机选择该图的一个生成树,问其生成树的权期望是多少。思路先看一下官方题解很明显的矩阵树,因为是按位与计算,每一个位相互独立,所以对于每一位都需要建立一个其含该位的边的基尔霍夫矩阵,求得该位下可以得到的生成树的个数,按照题解中,每位对答案的贡献即为ans∗2isumans*\frac{2^i}{sum}ans∗sum2
2020-08-12 13:05:17 251
原创 2020杭电多校第六场题解Road To The 3rd Building、Little Rabbit‘s Equation、A Very Easy Graph Problem、Divisibilit
Road To The 3rd Building题目传送门Road To The 3rd Building题目大意给你n个数字,然后从中间选一个区间,区间的平均值为1j−i+1∑k=ijsk.\frac{1}{j−i+1}∑^j_{k=i}s_k.j−i+11∑k=ijsk.求区间的期望思路官方题解很容易理解不过有些人不喜欢看官方的题解(比如我)所以还是写一下1、这里区间的是未知的,所以肯定需要枚举区间的长度2、我们只需要求得每个长度下的幸福值出现的和,然后乘上区间长度的逆元即可
2020-08-11 21:40:21 123
原创 2020年杭电多校第五场题解Tetrahedron、Boring Game、Paperfolding、Set1
Tetrahedron(数学推导,逆元)题目传送门Tetrahedron思路公式的推导,显然可以得到1h2=1a2+1b2+1c2\frac{1}{h^2}=\frac{1}{a^2} + \frac{1}{b^2} + \frac{1}{c^2}h21=a21+b21+c21对于期望的计算,因为a、b、c是等价的,所以可以直接计算1a2\frac{1}{a^2}a21的期望然后乘以3而1a2\frac{1}{a^2}a21的期望:(112∗1n+122∗1n+......+1(
2020-08-07 00:20:13 225
原创 Codeforces Round #661 (Div. 3)题解A、B、C、D
A. Remove Smallest题目传送门Remove Smallest思路注意到数据范围很小(1≤ai≤1001≤ai≤1001≤ai≤100),求得输入的数组中的最小值和最大值,从最小到最大走一遍,看是不是其中的每个值都有,若无则NO,全有则YESAC Code#include<cstdio>#include<iostream>#include<cmath>#include<cstring>using namespace std;
2020-08-06 19:47:46 200
原创 F Fake Maxpooling(单调队列)
题目传送门Fake Maxpooling题目大意对于一个n∗mn*mn∗m的矩阵,每个位置的值为Aij=lcm(i,j)A_{ij}=lcm(i,j)Aij=lcm(i,j)求每个大小为k∗kk*kk∗k的子矩阵的最大值的和思路直接暴力的话复杂度会很高,所以可以采取单调队列维护区间最大值代码#include<cstdio>#include<iostream>#include<cstring>#include<queue>usi
2020-08-06 11:14:31 232
原创 2020牛客暑期多校训练营(第二场)C、D、F
C Cover the Tree题目传送门Cover the Tree题目大意给定一个无根树,求最小链数去覆盖书上所有的边。输出最小数字和其中任何一个解决方案思路很显然要去找到所有的叶结点并且将其覆盖,所以先找到一个非叶结点,从此结点出发去寻找其他的叶节点,偶数直接输出结点个数的一半即为最小链数,奇数则向上取整AC Code#include<cstdio>#include<iostream>#include<vector>using name
2020-08-05 22:27:19 164
原创 Go Running(二分图最小点覆盖 网络流)
题目传送门Go Running题目大意视跑道为轴,有若干学生在上面跑步学生的跑步起止时间和方向和起始位置均未知,速度为1m/s1m/s1m/s有n个监控,监控会给出 t 和 x,表示当时间为t 的时候,x位置上至少有一个学生求当前跑道最少有多少学生思路可以将学生视为点,每次监控到的学生可以有两种来源(x-t)或者(x+t),每个学生都可以用一条斜率为1或者-1的直线去覆盖,则问题可以转化为直线最少有多少条,可以用二分图将(x-t)和(x+t)分别放在两边,再用网络流求一下最小覆盖A
2020-08-05 18:44:31 711
原创 I Interesting Computer Game(并查集)
I Interesting Computer Game题目传送门Interesting Computer Game思路将每次输入的a和b当做点,将其连成一条边,很明显的对于形成的连通块来说,如果无环就只能取到当前连通块的顶点减一的点,如果连通块内存在至少一个环,即可将该连通块取完,所以我们只需要判断连通块有无环同时我们注意到数据的范围为1≤ai≤1091 \le a_i \le 10^91≤ai≤109 1≤bi≤1091 \le b_i \le 10^91≤bi≤109所以要采取离散化的
2020-08-04 23:54:55 198
原创 2020牛客暑期多校训练营(第八场)题解I、K、G
I Interesting Computer Game题目传送门Interesting Computer Game思路将每次输入的a和b当做点,将其连成一条边,很明显的对于形成的连通块来说,如果无环就只能取到当前连通块的顶点减一的点,如果连通块内存在至少一个环,即可将该连通块取完,所以我们只需要判断连通块有无环同时我们注意到数据的范围为1≤ai≤1091 \le a_i \le 10^91≤ai≤109 1≤bi≤1091 \le b_i \le 10^91≤bi≤109所以要采取离散化的
2020-08-04 00:44:28 427
原创 等级之题N2&N1(8.3)题解
等级之题N2(8.3)题目传送门等级之题N2(8.3)思路很明显的推公式:首先根据题目很容易就可以得出这个公式(πr12+πr22)+2S=π(r1+r2)2(πr_1^2+πr_2^2)+2S=π(r_1+r_2)^2(πr12+πr22)+2S=π(r1+r2)2然后化简为r=r1+r2=2∗(Sπ)12r=r_1+r_2=2*(\frac{S}{π})^\frac{1}{2}r=r1+r2=2∗(πS)21代码#include<cmath>#inclu
2020-08-03 20:53:32 225
原创 2020牛客暑期多校训练营(第一场)题解F、J
F Infinite String Comparision题目传送门Infinite String Comparision思路直接跑两次最长的那个字符串即可判断大小关系代码#include<cstdio>#include<iostream>#include<cmath>using namespace std;const double pi = acos(-1.0);#define INF 0x3f3f3f3f// #define TDS_ACM
2020-08-02 23:42:01 265
原创 牛客多校第七场 H Dividing
H Dividing(除法分块)题目传送门Dividing思路看一下上图,稍微推一下其实很容易就能发现规律了, 每列的公式为n∗kn∗kn∗k 或者 n∗k−(n−1)n∗k−(n−1)n∗k−(n−1),n为N的行,直接跑O(n)的话很明显T了,所以我们讲将公式换一种方式写一下:∑i=1n(n/i)+∑i=2n(n−1)/i+k−1∑^n_{i=1}(n/i)+∑^n_{i=2} (n-1)/i+k-1∑i=1n(n/i)+∑i=2n(n−1)/i+k−1很明显的除法分块(∑i=1
2020-08-02 21:57:46 199
原创 2020牛客暑期多校训练营(第七场)题解DBH
D Fake News题目传送门https://ac.nowcoder.com/acm/contest/5672/D思路提前打了一下表,发现好像就1和24可以,试了一下A了附上大佬的证明:如何证明 1²+2²+…+n² 为平方数的解只有 n=1 或 n=24?代码#include<stdio.h>int main(){ int T; scanf("%d", &T); while(T--){ int n; scan
2020-08-02 19:09:10 264
原创 2020杭电多校第四场1002、1004、1005,1011、1012、1007
2.Blow up the Enemy题目传送门Blow up the Enemy思路儿子肯定直接选价值最大的武器(即为最小次数打出100伤害),张三如果不选相同次数即可打出100伤害的武器就会输,所以我们统计武器中最快打出100伤害的武器的个数k,k/2nk/2nk/2n即为儿子输的概率,求儿子赢的概念为1−k/21-k/21−k/2代码#include<cstdio>#include<iostream>#include<algorithm>#in
2020-08-01 11:26:06 199
格斗类游戏软件——抽象工厂模式
2022-05-09
校园导游咨询(图的应用).docx
2021-03-09
哈夫曼编码/译码系统(树应用)
2021-03-09
停车场管理(栈和队列).docx
2021-03-09
单位员工通讯录管理系统.docx
2021-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人