自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 差分约束系统学习笔记

差分约束系统学习笔记不知不觉4个多月没写博客了,其实写博客单纯是不想打代码,划一会水。一、前置知识单源最短路算法 SPFA/Bellman_Ford二、什么是差分约束系统差分约束系统是求解关于一组变量的特殊不等式组的方法。通俗一点地说,差分约束系统就是一些不等式的组,而我们的目标是通过给定的约束不等式组求出最大值或者最小值或者差分约束系统是否有解。特点是全都是两个未知数的差小于等于某个常数(大于等于可以化为小于等于,等于可以拆分为大于等于和小于等于),这样的不等式组称作差分约束系统。这个不等

2021-08-16 22:00:39 162 1

原创 小圆前辈的暴力枚举(逆元,数学思维题)

题目分别考虑放 0到min(n,m)个棋子的情况,加起来就是答案。放一个棋子时 方案数为nm;放第二个棋子时,可放的格子数减少(n+m-1)个 放在上一个棋子的基础下进行计算,即(nm-1)(nm-1-(n+m-1)),此时有重复部分,每个方案重复了 2!次(全排列),除以棋子个数的全排列即可,除法不能直接取模,计算逆元即可(除x取模k,相当于乘x关于k的逆元)我这里用的是拓展欧几里德求逆元。#include<iostream>#include<algorithm>#

2021-04-27 21:06:01 135

原创 H.小圆前辈的博弈(字典树) 长沙学院2021校赛

题目#include<iostream>using namespace std;const int N=2002000;int cnt=0;int tire[N][27];int have[N];int ans=0;void insert(string s){ int root=0; for(int i=0;i<s.size();i++) { int x=s[i]-'a'+1; if(tire[root][x]==0) { tire[root][x

2021-04-27 20:51:47 171

原创 P3629 [APIO2010]巡逻

P3629 [APIO2010]巡逻好题#include <bits/stdc++.h>using namespace std;const int maxn = 200010;int head[maxn],to[maxn],Next[maxn],edge[maxn];int d[maxn];int cnt,n,k;void add(int x, int y, int w) { to[++cnt]=y;edge[cnt]=w; Next[cnt]=hea

2021-04-14 20:53:25 85

原创 二进制的魅力

#include<bits/stdc++.h>using namespace std;int n,m;//n个砝码,去掉m个之后,最多能称出多少中不同的重量。 int a[25];int ans=0;int Count_One(int x,int n)//计算二进制数0到n-1位中1的个数 { int cnt=0; for(int i=0;i<n;i++) { // if(x&(1<<i))cnt++;判断第i位是否为1 个人觉得下方的更好理解

2021-04-07 21:18:58 73

原创 状态压缩dp学习

状态压缩dp学习以 P1879 为例#include <bits/stdc++.h>using namespace std;const int M = 1e9;int m, n, f[13][4096], F[13], field[13][13];// max state: (11111111111)2 = (4095)10bool state[4096];int main(){ //状态压缩dp学习(代码非原创,注释都是自己写的,看了好多篇博客,感觉状压dp看代码比较好理

2021-04-06 21:46:41 79

原创 CodeForces #711(div.2) C. Planar Reflections (DP)

比较简单的dp题,关键是定义状态,看了大佬的状态之后恍然大悟。#include<iostream>#include<string.h>using namespace std;typedef long long ll;const int mod=1e9+7;const int N=1005;ll dp[N][N];//前方还有i个平面,强度为j的粒子。 //当粒子穿过i平面时,会产生一个平面数-1,强度不变的粒子。 //反弹时,会产生一个方向相反,强度-1的粒子。

2021-03-30 20:16:08 167

原创 P1040 [NOIP2003 提高组] 加分二叉树(区间dp)

今年做的第一道区间dp题,纪念一下,应该算是动态规划中的水题。题目出得真的妙啊,做完对动态规划又有了新的理解。#include<iostream>using namespace std;const int N=50;int dp[N][N];int root[N][N];//P1040 [NOIP2003 提高组] 加分二叉树//区间dp 树形dp 这里用的是区间dp //题目给了中序遍历(左 根 右)可以假设第i个位根节点,(特殊情况,缺左/右节点,默认为分数1)。 //d

2021-03-26 20:53:13 137

原创 矩阵快速幂模板

矩阵快速幂模板两矩阵相乘,朴素算法的复杂度是O(N^3)如果求一个矩阵的n次幂,就可以使用矩阵快速幂 可以降到复杂度为O(log)级别。几乎任何递推的问题都可以用矩阵快速幂完成。#include<iostream>#include<algorithm>#include<iomanip>#include<set>#include<queue>#include<stack>#include<vector>

2021-03-23 20:06:29 92

原创 中国剩余定理(模数互质 究极模板 快速乘防爆long long 附赠拓展欧几里德求逆元 )

#include<iostream>#include<algorithm>#include<iomanip>#include<set>#include<queue>#include<stack>#include<vector>#include<map>#include<string.h>#include<string>#include<math.h>#de

2021-03-18 21:50:20 129

原创 POJ1006(中国剩余定理)

POJ1006(中国剩余定理)ac代码:#include<iostream>#include<algorithm>#include<iomanip>#include<set>#include<queue>#include<stack>#include<vector>#include<map>#include<string.h>#include<string>#inc

2021-03-18 19:55:23 172

原创 从零开始的中国剩余定理学习

从零开始的中国剩余定理学习声明:本博客内容并非完全原创,内容整理自各大博客,不包含证明过程,仅有代码模板和部分作用说明,例题持续更新…大概。STEP 1:费马小定理若存在整数 a , p 且gcd(a,p)=1,即二者互为质数,则有a^(p-1)≡ 1(mod p)。STEP 2:逆元数论倒数,又称逆元求余不适用于除法(a + b) % p = (a%p + b%p) %p(a - b) % p = (a%p - b%p) %p(a * b) % p = (a%p * b%p

2021-03-17 21:14:28 196

原创 牛客2021年度训练联盟热身训练赛第一场E题

https://ac.nowcoder.com/acm/contest/12606/E知识点:单调栈ac代码:#include<iostream>#include<stack>#include<string.h>using namespace std;int a[200005];int vis[200010];int last[200005]; int s[200005];int top;int main(){ int n,k; cin&gt

2021-03-07 21:43:17 120

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

题目名称: 棋盘题干:有一个n行n列的棋盘,初始情况下棋盘上无棋子,你可以在棋盘任意位置摆放棋子。4个整数数U R D L,问该棋盘是否可以满足一下所有条件:1.最上面一行恰好有U枚棋子2.最右边一列恰好有R枚棋子3.最下面一行恰好有D枚棋子4.最左边一列恰好有L枚棋子输入:多组输入一组为5个数 n U R D L输出:YSE or NOINPUT5 2 5 3 13 0 0 0 04 4 1 4 02 1 1 1 1OUTPUTYESYESNOYES提示:

2021-03-04 20:56:27 154 1

原创 E. Number of Simple Paths

传送门:Codeforces Round #686 (Div. 3)题意分析:给定一个n顶点n条边的联通图,求图中简单路径的数量。n顶点的树加了条边,必定会出现唯一环。经查资料这是一棵基环树。如果两个顶点的路径经过环内边,那么这两个顶点之间有2条路径,否则为1条。应该是可以用树形dp求出来的,我太菜了,不会。从反面做比较方便,先假设每一个顶点都在环内,在减去不在环内点减少的路径树。首先找到环,从环内每个顶点向外拓展,计算每个顶点子树的大小,减去相应的路径数量即为图中简单路径的数量。ac代码.

2020-11-26 22:05:38 224

原创 D. Number into Sequence (DFS)

qwq

2020-11-26 19:18:41 350 2

原创 F - Xorro the Xorman UTPC Contest 10-23-20 Div. 2

https://codeforces.com/gym/102783/problem/F题意:给定两个整数A,B(在long long 范围内) 求A异或1到B任意整数的最大值。解题思路:从1一直异或到B,显然会超时。既然是异或运算,我们首先将A B都转换为二进制。结果尽量大就是说,二进制的1尽量多,尽量大。就转换为贪心问题。 理想...

2020-11-26 19:05:42 288

原创 B. Non-Substring Subsequence(思维)

B. Non-Substring Subsequence题意:给定一个n位的01串,有q次询问,每次询问L R ,问整个01串中是否存在一个序列(至少有两个元素不相邻)和L到R范围内的01串(序列)相同。刚开始我还想着O(n)遍历一遍,发现不连续这个条件不好解决,因为不知道是哪两个元素不相邻。思路:题目要求找一个不连续的相等序列,我们发现头部/尾部的元素必须发生位置的改变,并且只要改变就满足了题目的条件。所以我们只需要判断,头部前面是否有和头部元素相等的元素。尾部同理。也可以遍历两遍预处理每个元素前

2020-11-23 21:06:20 425

原创 C. Engineer Artem(思维题)

C. Engineer Artem题意:给一个二维数组a,将a中的每一个元素+1或者保持原样,使其成为好数组(所有相邻元素不相等),思路:刚开始看错题目了,以为是求变成好数组最少的次数。由于数组中相邻元素的下标和i+j奇偶性不同,我们将i+j为奇数的元素变为奇数(保持或+1),i+j为偶数的元素变成偶数。这样所有相邻的元素奇偶性不同,也就不会相等了。ac代码:#include<iostream>#include<algorithm>#include<iomanip

2020-11-15 20:57:51 295

原创 C. Boats Competition (暴力,双指针)

C. Boats Competition codeforces暴力 双指针ac代码:#include<iostream>#include<algorithm>#include<iomanip>#include<set>#include<queue>#include<stack>#include<vector>#include<map>#include<string.h>#in

2020-11-13 22:01:26 295

原创 C. Omkar and Waterslide(贪心)

Codeforces Global Round 10题意:给定一个数组a 一次操作可以使一个不下降字串整体+1,求使整个数组a成为不下降数列的最小操作数。解:这道题的关键在于找出正确的贪心策略,需要自己编数据考虑各种情况。刚开始没考虑全WA了两发。这道题不难,但是做的时候不能急,十分考虑细节。数据分析:75 1 3 1 2 7 2 //这个数据对了大概就ac了先看前4个 手动模拟一遍最佳情况5 1 3 15 2 3 15 2 3 25 2 3 35 3 3 35 4 4 45

2020-11-13 21:58:28 194

原创 C. Good Subarrays(思维+前缀和)好题啊

codeforces Educational Codeforces Round 93 (Rated for Div. 2)题意:求n长度数组中区间和和为区间长度的区间个数。思路分析:首先想到用前缀和优化,如果直接前缀和判断每一个区间,时间复杂度为O(n*n),果不其然超时了。如果我们将数组中所有元素都-1,那么问题就简单了不少,符合条件的区间和为0。问题转换为求区间和为0的区间个数,就可以开始整活了。我们首先维护一个map<int,int> M;M[sum[i]]表示目前第i个元素为止

2020-11-09 21:24:40 285

原创 D. Extreme Subtraction(思维/差分) Codeforces Round #681

Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)题意:给定一个长度为n的数组,可以使前k个或后k个元素-1,次数没有限制,问是否可以使所以元素同时为0。

2020-11-04 21:14:11 730

原创 C. The Delivery Dilemma(思维,贪心)

Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)题意:张三今天过生日,需要准备n个菜,可是他又懒得做,每道菜有两种选择,1.点外卖(ai分钟送达)2.自己去拿(花费bi分钟)。点的所有外卖在张三第一次离开家的同时开始计算。张三一次亲自只能去拿一道菜。求张三备齐所有菜需要的最小时间。解题分析:贪心,思维题点外卖花费的时间是时间最长的外卖时间,自取花费的时间是所有自取菜品的时间和。总时间为两者的较大值。解题关键:最大外卖

2020-11-04 20:26:13 305 1

原创 B. Saving the City Codeforces Round #681

[B. Saving the CityCodeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)](https://codeforces.ml/problemset/problem/1443/B)题意:给你一栋n层的楼,某些楼层装有炸弹,炸弹爆炸后相邻楼层的炸弹也会爆炸。有两种操作:引爆某层楼的炸弹(消耗a费)在任意一层添加炸弹(消耗b费)样例输入:21 1010000105 101101110样例输出:2

2020-11-03 21:35:09 142

原创 codeforces 1437B Reverse Binary Strings

题目链接:B. Reverse Binary Strings题意:给定一个偶数长度的01串,翻转任意一个字串,使整个串中01交替排列。思路: 题目一看到就是贪心思维题(结论题),看了看样例直接输出了连续1(11)的个数(不出意料在test 2就WA了)首先要知道,翻转一个子串只会改变子串首尾连接处01的状态(下文简写为P1)。很容易想到我们需要计算11的数量但是光看1是不够的,还需要考虑到0。接着就可以开始分析样例,编数据找答案了。样例3 11101000有三个11 三个00答案为2数据

2020-11-02 22:03:23 249

原创 F - Xorro the Xorman UTPC Contest 10-23-20 Div. 2

F - Xorro the XormanUTPC Contest 10-23-20 Div. 210进制转2进制,贪心,比较简单的一道题,队友是用dfs做出来的。周赛当时没做出来,居然是因为变量没有初始化,出现了玄学死循环,浪费了大量时间,赛后几个人一起研究才发现。立个flag,出一次傻逼问题。我就说一句我是傻逼。第一次,我是傻逼。...

2020-11-02 18:58:11 343

转载 Dijkstra算法学习

Dijkstra算法学习 收藏自用原文连接:https://blog.csdn.net/lbperfect123/article/details/84281300

2020-10-28 21:39:29 65

原创 Codeforces Round #677 (Div. 3) E. Two Round Dances

题意:有n个人(偶数)围成 两个圈 一起跳舞,求不同的排列种数。(同一个环顺序不同也算一种 两个圈的位置不用考虑)思路:先将n个人分成两组, n个人中选一半人,4个人 选12,34是重复的,所以是C(n,n/2)/2。接着看单个环。易推m个人环形排列(不知道怎么证明)的种数为(m-1)!所以最终答案为:C(n,n/2)/2*(n/2-1)!*(n/2-1)!...

2020-10-26 21:22:39 53

原创 B. Ternary Sequence(贪心)

Codeforces Round #665 (Div. 2) B. Ternary Sequence题意:有两个序列,给定序列中 0 1 2 的个数,求两个序列按某种方式排列后 ci的和最大。(ci计算如上图公式,很好理解)思路:第一时间想到贪心,通过分析ci的计算公式,可以发现,除了 ai=2 bi=1; ci=2; ai=1; bi=2 ci=-2; 其余情况ci都为0。也就是说只有对应a=2 b=1时对sum有贡献。由此可以想到以下贪心策略:最大化+2的情况int t=min(a2,b1

2020-10-26 21:20:23 387 1

原创 Codeforces Round #678 (Div. 2) B. Prime Square

题意:构造一个 n*n 的矩阵 使矩阵每一个数都不是素数,每行每列的和均为素数。简单构造题,只需把矩阵中的每个数赋为1,改变对角线位置的元素(i==j)要求:本身不是素数,行/列和为素数。(水题,直接从n开始向上枚举)#include<iostream>#include<algorithm>#include<iomanip>#include<set>#include<queue>#include<stack>#inc.

2020-10-25 21:48:02 143

原创 Codeforces Round #678 (Div. 2) A. Reorder

超级水题,直接看样例解释,发现不管怎么排,sum恒等于n个数的和#include<iostream>#include<algorithm>#include<iomanip>#include<set>#include<queue>#include<stack>#include<vector>#include<map>#include<string.h>#include<str.

2020-10-25 21:39:37 102

原创 2020小米网络选拔赛I Walking Machine(逆向BFS/剪枝优化)

2020小米网络选拔赛I Walking Machine这道题一看就是bfs,然后超时了。仔细想想判断每个点是否能走出边界,调用了mn次bfs函数。接着我这个菜鸡就开始反向思维,从边缘可以走出地图的点反向bfs,求出可以到达的点的数量。最多只需要调用2(m+n-1)次bfs。#include <bits/stdc++.h>typedef long long ll;using namespace std;const int N=100005;int vis[1005][1005]

2020-10-25 21:33:58 158

空空如也

空空如也

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

TA关注的人

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