![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题
@居安
未来已经到来,只是尚未流行
展开
-
静态双链表(数组模拟)
int m,e[N], l[N], r[N],idx=2;//e存储节点值,l,存储左边值,r存储右边值,idx存储存储数据的个数void insert(int k, int x) { e[idx]=x,l[idx]=k; r[idx]=r[k]; l[r[k]]=idx; r[k]=idx++;}void remove(int k) { l[r[k]]=l[k]; r[l[k]]=r[k];}...翻译 2022-03-10 15:08:39 · 60 阅读 · 0 评论 -
组合数学-卡兰特数-满足条件的01串
卡特兰数(英语:Catalan number),又称卡塔兰数、明安图数,是组合数学中一种常出现于各种计数问题中的数列。以比利时的数学家欧仁·查理·卡特兰的名字来命名。1730年左右被蒙古族数学家明安图使用于对三角函数幂级数的推导而首次发现,1774年被发表在《割圜密率捷法》。 ---...原创 2022-03-03 16:17:03 · 331 阅读 · 0 评论 -
k显性字符(思维题)
给定一个由小写字母构成的字符串s。字符c被称为字符串s的k显性字符,当且仅当字符串s的所有长度不小于k的子串都包含字符c。对于给定的字符串s,请你找到一个最小的k,使得s中至少存在一个k显性字符。...原创 2021-11-23 14:11:14 · 290 阅读 · 0 评论 -
线性同余方程
在数论中,线性同余方程是最基本的同余方程,“线性”表示方程的未知数次数是一次,即形如:ax≡b (mod n)的方程。此方程有解当且仅当 b 能够被 a 与 n 的最大公约数整除(记作 gcd(a,n) | b)。这时,如果 x0 是方程的一个解,那么所有的解可以表示为:{x0+kn/d|(k∈z)}其中 d 是a 与 n 的最大公约数。在模 n 的完全剩余系 {0,1,…,n-1} 中,恰有 d 个解。 ...原创 2021-11-05 23:39:39 · 281 阅读 · 0 评论 -
欧拉函数(数论)
我们需要将N分解质因数,我们需要将n中p1,p2,,,,pk的所有倍数,剩下的数全部与N互质,然后我们需要计算剩下数的个数这里需要使用容斥原理了,具体的请自行查询,总之最后就变成了如下:#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N =101010;int main(){ int n; ...原创 2021-10-29 23:43:08 · 177 阅读 · 0 评论 -
蒙德里安的梦想(状态压缩DP)
看美女不图啥,只是为了敲代码敲的更快点 ,嘻嘻嘻求把N×MN×M的棋盘分割成若干个1×21×2的的长方形,有多少种方案。例如当N=2,M=4N=2,M=4时,共有55种方案。当N=2,M=3N=2,M=3时,共有33种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数NN和MM。当输入用例N=0,M=0N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,...原创 2021-10-06 18:11:58 · 194 阅读 · 0 评论 -
整数分解-背包理解
老表你来啦 啦 啦!!! 一个正整数nn可以表示成若干个正整数之和,形如:n=n1+n2+…+nkn=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数n的一种划分。现在给定一个正整数n,请你求出n共有多少种不同的划分方法。输入格式共一行,包含一个整数nn。输出格式共一行,包含一个整数,表示总划分数量。由于答案可能很大,输出结果请对109+7109+7取模。数据范围...原创 2021-10-05 19:16:57 · 250 阅读 · 0 评论 -
[NOIP2004 提高组] 合唱队形
过来,我们一起学习吧!!!n位同学站成一排,音乐老师要请其中的n-kn−k位同学出列,使得剩下的kk位同学排成合唱队形。合唱队形是指这样的一种队形:设kk位同学从左到右依次编号为1,2,1,2,…,k,k,他们的身高分别为t_1,t_2,t1,t2,…,t_k,tk,则他们的身高满足t_1< \cdots <t_i>t_{i+1}>t1<⋯<ti>ti+1>…>t_k(1\le ...原创 2021-09-14 15:32:20 · 250 阅读 · 0 评论 -
[NOIP2008 提高组] 传纸条
相信你们都是进来学习来的尼,嘻嘻嘻嘻小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排坐成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1)(1,1),小轩坐在矩阵的右下角,坐标(m,n)(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。...原创 2021-09-14 15:11:26 · 284 阅读 · 0 评论 -
POJ 1014 Dividing (多重背包)
题目大意: 有六个大理石,他们的价值分别是1,2,3,4,5,6,然后分别给出六个大理石的个数,问如何平分给两个人,令两个人所得到的价值相等典型的多重背包问题,for(int i=1;i<=n;i++){//i种商品 cin>>v>>w>>s; for(int j=m;j>0;j--){//容量为j的背包 for(int k=1;k<=s&&k*v<=...原创 2021-08-26 12:59:36 · 211 阅读 · 0 评论 -
HDU 2546 饭卡(01背包)
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。传送门思路:当卡上金额大于5元的时候,我们取出最贵的商品,向金额大小为m-5的篮子里面扔东西就好了,让篮子装的东西最多,是不是花掉的钱就越多了,卡余额就最小了。用卡的总金原创 2021-08-24 23:31:31 · 121 阅读 · 0 评论 -
Big Event in HDU——动态规划之01背包
现在,我们都知道计算机学院是HDU最大的系。但是,也许你不知道2002年计算机学院曾被分为计算机学院和软件学院。分裂绝对是HDU的一件大事!同时,这也是一件麻烦事。所有设施必须减半。首先,对所有设施进行评估,如果两个设施具有相同的价值,则认为它们是相同的。假设有N(0<N<1000)种设施(不同值,不同类型)。输入:输入包含多个测试用例。每个测试用例以一个数字N开头(0<N<=50——不同设施的总数)。接下来的N行分别包含一个整数V(0<V<=50——设施的值)和一原创 2021-08-24 22:32:09 · 182 阅读 · 0 评论 -
迷宫问题 POJ - 3984
假设有如上的迷宫,我们模拟下是如何记录了最短路径的,我们从(0,0)点出发,向周围扩展只有(1,0),从(1,0)这个点再扩展到(2,0),(1,1)下次扩展只有(1,1)可以扩展,扩展到(1,2),从(1,2)就可扩展到(2,2)这时遍历完了,int x=2,y=2;while(x!=-1&&y!=-1){ cout<<"x:"<<x<<" y:"<<y<<endl;int tx=x,ty=y; x=map[..原创 2021-08-20 18:18:02 · 97 阅读 · 0 评论 -
HDU2717CatchThatCow(对bfs有加深了点理解)
#include <iostream>#include <queue>#include <algorithm>#include <cstring>using namespace std;struct node{ int x,td;};const int N = 100010;bool map[N];int n,m;bool check(int x){ if(x<0||x>N||map[x])return false;.原创 2021-08-20 14:19:31 · 52 阅读 · 0 评论 -
POJ2251 Dungeon Master(BFS)
简单的BFS ,其中只是把4个方向扩展到6个方向而已罢了,#include <iostream>#include <queue>#include <algorithm>#include <cstring>using namespace std;const int N =35;int l,r,c,sl,sr,sc;bool flag=false; struct Node{ int a,b,c;} ;int tx[6]={0,...原创 2021-08-19 12:36:23 · 56 阅读 · 0 评论 -
POJ - 1511 spfa算法
传送门要求出来每个人往返的的路程之和 ,有向图,求起点到各个点来回距离最小和,spfa正向见图,再反向建图,此处的反向建立图,邻接表反向存储就可以了,最后数值太大了,记得用Longlong#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>#include <algorithm>using .原创 2021-08-16 23:45:35 · 102 阅读 · 0 评论