![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
酸不溜湫的梅子
想要成为一名合格的acmer!带着队友乘风破浪,好吧,感觉更大的可能是队友带着我乘风破浪 无论如何都要努力!哪怕很慢,哪怕很笨....
展开
-
概率DP(每天一道 舒舒服服~)
hhhh#include<bits/stdc++.h>using namespace std;const int maxn=1e5+10;#define bug(x) cout<<#x<<"=="<<x<<endl;double dp[1005][1005];struct node{ double yd; double ydx; double ydy;}a[1005][1005];int main(){原创 2021-10-10 09:55:09 · 85 阅读 · 1 评论 -
P1174(dp)
先对这个矩阵进行预处理,将每一列分成n块,每一块以n为开头,这样子便于后续计算#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> P;const int INF = 0x3f3f3f3f;const int N = 210;const int MOD = 998244353;const double eps = 1e-10;#define bug原创 2021-09-08 16:16:28 · 59 阅读 · 0 评论 -
lca板子
#include<bits/stdc++.h>using namespace std;const int N=5e5+10;int head[N];int n,m,s,f[N][30],lg[N],h[N];///该结点的深度///f[i][j]为i结点向上2^j的祖先struct node{ int to,ne;}bian[N*2];int tot = 0;void add_edge(int x,int y){ tot++; bian[tot].to原创 2021-08-06 10:55:12 · 231 阅读 · 3 评论 -
牛客多校5
D题:题目大意:就是找了两个等长的子序列字符串 aa,bbaa<bb一个字符串大于另一个字符串两种情况:首字母a[1]<b[1]前面几个字母都相同:然后第i个字母a[i]<b[i]所以我们只需要比较每一个字母a[i]<b[j]的时候www为计算 a[1~i-1]和b[1-j-1]有多少相等子序列(通过dp求)ans为a[i+1 ~ a.length()]与b[j+1 ~b.length()]可以组合出多少相同长度子序列设n=a.length( )-(i+1),m=原创 2021-08-01 13:40:45 · 127 阅读 · 0 评论 -
牛客多校三
B:很容易可以分析出来就是要在每一行 列里面最大程度上挑最小的连接起来,但是一直不知道怎么实现 我和队友的愚蠢for循环只能实现行的最优或者列的最优(后续有想过都挑出最小的,但是如果行列的最小项相同就要选次小了 彻底懵圈),然后一起悲伤wa了QwQ今天大家都是爆零人 但是爆零人永不言弃!!!!用最小生成树连接即可。几个优秀的写法:①通过向量的存储,就不需要排序了。因为权值的范围是固定的!②通过n+J使行和列代表的点值分开 类似操作有好多比如10*j之类的 主要是处理后的j的映射范围不和i冲突就好啦原创 2021-07-24 20:24:43 · 135 阅读 · 2 评论 -
拓扑排序 链式前向星
链接:https://www.luogu.com.cn/problem/P4316打个板子给自己看~#include <bits/stdc++.h>using namespace std;#define ll long long#define bug(x) cout << #x << " == " << x << endl;#define INF 0x3f3f3f3f3f3f3f3f#define inf 0x3f3f3fconst原创 2021-07-24 09:11:32 · 136 阅读 · 0 评论 -
lucas定理 给自己打个板子!
定理很有用C(n,m)=C(n%mod,m%mod)*C(n/mod,m/mod);#include<iostream>#include<cstdio>using namespace std;#define ll long longconst ll int MAX_N = 1e5 + 10;#define bug(x) cout<<#x<<" == "<<x<<endl;ll mod ;ll a[MAX_N]= {0}原创 2021-07-22 15:33:24 · 86 阅读 · 0 评论 -
P2331 [SCOI2005]最大子矩阵(dp,前缀和)
注意:子矩阵可以是空!!!dp[i][j][num]代表第一排前i个,第二排前j个,取num个矩阵最大权值而m等于1的情况等价于第二排权值都是0三种情况:第num个矩阵从第一排取第num个矩阵从第二排取第num个矩阵是两排的感觉很有趣~#include<cstdio>#include<algorithm>using namespace std;const int N=110;const int M=11;int n,m,K,sum1[N]={0},sum2[原创 2021-07-18 23:05:16 · 65 阅读 · 0 评论 -
2021牛客暑期多校训练营1
A博弈(sg函数)sg函数看这一篇特别清楚->链接:https://blog.csdn.net/strangedbly/article/details/51137432题目大意就是两个人拿石头,两堆石头,每次操作必须一堆拿k个(k>=1),另一堆拿sk个(s>=0),谁先把石头拿光谁胜利Alice为先手很明显可以看出来①如果是一堆为0的情况,另一堆为k个。先手必胜②一堆是另一堆的倍数。先手必胜③先手拿石头后,状态变为后手必胜的状态,那么先手必胜e.g:一堆为i,一堆为j后手原创 2021-07-18 17:23:12 · 148 阅读 · 3 评论 -
race(数论,组合,递推)
链接:https://vjudge.net/problem/UVA-12034First:首先我们可以根据紫书上的思路来设n个人的名次可能为f(n)假设第一名有i个人,i个人是第一名的组合是C(n,i)后面的n-i个人就是f(n-i)所以f(n)=C(n,1)f(n-1)+C(n,2)f(n-2)+…+C(n,n)f(0)所以最后一项为前n个人并列第一名C(n,n)为1要提前设置为f(0)为1结果我发现这样子会爆long long 而且在计算组合数的时候我利用了公式C(n,k+1)=(n-k原创 2021-07-14 14:15:05 · 203 阅读 · 1 评论 -
Jessica‘s Reading Problem(尺取)
无他 尺取就好#include<iostream>#include<cstdio>#include<map>using namespace std;#define INF 0x3f3f3f3ftypedef long long ll;typedef unsigned long long ull;#define speed(x) ios::sync_with_stdio(false), cin.tie(x), cout.tie(x)#define bug(原创 2021-07-14 11:19:14 · 45 阅读 · 0 评论 -
D.Deleting Divisors(博弈)
题目大意:Alice和Bob玩游戏,Alice先手,每一次他们都要做操作就是将数减去它的因子(他小于自身且不为1的因子)轮到谁不能做这个操作谁就输了。所以他们会尽力给对方留下质数链接: https://codeforces.com/problemset/problem/1537/D.#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3ftypedef long long ll;typedef unsigne原创 2021-07-13 19:38:27 · 411 阅读 · 0 评论 -
一个数的约数和,约数个数问题
一个数的约数个数#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3ftypedef long long ll;typedef unsigned long long ull;#define speed(x) ios::sync_with_stdio(false), cin.tie(x), cout.tie(x)#define bug(x) cout << #x << " == " &原创 2021-07-13 18:27:03 · 86 阅读 · 0 评论 -
D. PriceFixed(贪心)
链接: https://codeforces.com/problemset/problem/1539/D.#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3ftypedef long long ll;typedef unsigned long long ull;#define speed(x) ios::sync_with_stdio(false), cin.tie(x), cout.tie(x)#def原创 2021-07-13 10:21:56 · 146 阅读 · 0 评论 -
Probability|Given (概率)
把在n个人中m个人买了东西的总概率算出来用dfs搜索每一种情况就好#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define ll long long#define speed(x) ios::sync_with_stdio(false), cin.tie(x), cout.tie(x)#define bug(x) cout << #x << " == " << x << '\n';con原创 2021-07-12 19:06:07 · 233 阅读 · 0 评论 -
Send a Table (欧拉函数)
#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define ll long long#define speed(x) ios::sync_with_stdio(false), cin.tie(x), cout.tie(x)#define bug(x) cout << #x << " == " << x << '\n';const ll int MAX_N = 3e6 + 5;using na原创 2021-07-12 16:44:00 · 137 阅读 · 0 评论 -
C. AquaMoon and Strange Sort
链接: https://codeforces.com/contest/1546/problem/C.QwQ一觉醒来fst竟是我自己很容易可以看出来操作数只和这个元素移动的距离有关如果是移动距离是偶数,交换操作数就抵消了,这样子最后方向还是right。因此我们分下标是奇偶进行讨论。分成奇数组和偶数组并排序,这样子下标是奇数的就移动到了奇数位,下标是偶数的就移动到了偶数位,最后把两个数组交替合并,最后看看满不满足数组单调不下降即可#include<bits/stdc++.h>#define原创 2021-07-12 10:13:44 · 444 阅读 · 0 评论 -
唯一分解定理
题目Bi-shoe and Phi-shoehttps://vjudge.net/problem/LightOJ-1370一个简单的欧拉筛就完事啦!#include<iostream>#include<algorithm>#include<cstdio>using namespace std;#define ll long long#define bug(x) cout << #x << " == " << x <原创 2021-07-09 13:51:57 · 52 阅读 · 0 评论 -
无题。。。
①CF1042B Vitamins:一个简单的dp加二进制状压的题目~~https://codeforces.com/problemset/problem/1042/B大意:数据有n组数,每组数有一个价值cic_ici和一个字符串S,字符串S中包含3个字母A,B,C,问集齐ABC三个字母的最小价值(一个字母可以有多个)ps:由于很简单,是可以记录数据之类的做出来的,但是要练习dp嘛,所以写了下dp的写法利用二进制表示不同的状态001 C010 B011 BC100 A101 AC110原创 2021-07-08 17:51:18 · 413 阅读 · 5 评论 -
研究dping....
想象了一个题目,一个数组中能不能选X个元素的和恰好为sum。#include <bits/stdc++.h>using namespace std;#define bug(x) cout<<#x<<" == "<<x<<'\n'#define ll long longconst int MAX_N=2e3+10;int a[MAX_N] = { 0 };int dp[100005]= {0};int32_t main(){原创 2021-07-07 20:53:11 · 123 阅读 · 0 评论 -
Number of Pairs(思维)
链接:https://codeforces.com/contest/1538/problem/C大意:查找有多少对ai与aj之和在区间[l,r];每一个a[i]查找在小于a[i]的范围中有多少个数满足这个条件即可。#include <bits/stdc++.h>using namespace std;/*#define rapido \ ios_base::sync_with_stdio(false); \ cin.tie.原创 2021-07-07 16:07:38 · 594 阅读 · 0 评论 -
食物链(带权并查集)
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1) 当前的话与前面的某些真原创 2021-07-04 21:26:56 · 154 阅读 · 0 评论 -
P2671 [NOIP2015 普及组] 求和
题目描述一条狭长的纸带被均匀划分出了nnn个格子,格子编号从111到nnn。每个格子上都染了一种颜色color_icolor_icolor_i用[1,m][1,m][1,m]当中的一个整数表示),并且写了一个数字number_inumber_inumber_i。定义一种特殊的三元组:(x,y,z)(x,y,z)(x,y,z),其中x,y,zx,y,zx,y,z都代表纸带上格子的编号,这里的三元组要求满足以下两个条件:xyz是整数,x<y<z,y−x=z−ycolor-x=color-z原创 2021-05-24 19:59:31 · 164 阅读 · 0 评论 -
P1658 购物(贪心算法)
P1658 购物提交 2.48k通过 1.16k时间限制 1.00s内存限制 125.00MB题目描述你就要去购物了,现在你手上有N种不同面值的硬币,每种硬币有无限多个。为了方便购物,你希望带尽量少的硬币,但要能组合出1到X之间的任意值。输入格式第一行两个数X、N,以下N个数,表示每种硬币的面值。【数据规模】对于30%的数据,满足N≤3,X≤20;对于100%的数据,满足N≤10,X≤1000.输出格式最少需要携带的硬币个数,如果无解输出-1.输入输出样例输入 #120 4原创 2021-05-20 17:56:24 · 523 阅读 · 0 评论 -
营救(广度优先搜索)题解
铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1标明的是陆地,用0标明是海洋。船只能从一个格子,移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。样例输入30011011001 1 3 3样例输出4#include <iostream>#include <queue>#include<std原创 2021-02-11 19:11:14 · 1677 阅读 · 3 评论 -
求逆序对
求逆序对Description给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目。Input第一行为n,表示序列长度,接下来的一行包含n个整数(A1,A2,…,An),表示序列中的n个数。N<=10^5,Ai<=10^5,Ai<= 10^5Output输出所有逆序对总数。#include<stdio.h>#include<string.h>#include<iostream&原创 2021-02-08 16:46:23 · 308 阅读 · 0 评论 -
1007: 出栈序列是否正确
1007: 出栈序列是否正确Time Limit: 1 Sec Memory Limit: 65535 MB 64bitDescription整数1…N从小到大依次入栈,期间可以出栈。判别给定的整数序列是否正确的出栈序列。Input包含多组测试数据,每组数据包含一行,每行一个整数为n(0<n<=1000),后面接n个整数(1到n的一个任意序列)。#include<stdio.h>#include<string.h>#include<iostre原创 2021-02-07 13:16:23 · 257 阅读 · 0 评论