![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
蒟蒻pzjdsg666
一个初一的中学生
展开
-
[NOI2000] 瓷片项链 题解
题目描述原始部落用一种稀有的泥土烧制直径相同的圆瓷片并串成项链,串的时候沿瓷片的直径方向顺次连接,瓷片之间没有空隙也不重叠,一条项链至少由一个瓷片构成。下图示出四片同样大小的瓷片串接所成的项链,其总长为单个瓷片直径的四倍。每个烧制的瓷片厚度是一定的,直径D和所用泥土的体积V有以下关系:其中V0为烧制每一片的损耗,单位与V相同。当用料小于等于V0时,不能烧制成瓷片。 例:V总 = 10,V0 = 1,若烧制成一片瓷片,V = V_总= 10,D = 0.9V...原创 2021-08-22 17:41:04 · 323 阅读 · 0 评论 -
图的搜索遍历(三道模板题:有向图的DFS+有向图的BFS)
【例一】有向图的DFS题目描述给定一个有向图,有N个顶点,M条边,顶点从1..N依次编号,求出字典序最小的深度优先搜索顺序。输入格式第1行:2个整数,N(1≤N≤200)和M(2≤M≤5000) 接下来M行,每行2个整数I,J,描述一条边从顶点I指向顶点J输出仅一行,一个顶点编号序列,表示字典序最小的深度优先搜索序列.顶点之间用一个空格分开样例样例输入3 31 21 32 3样例输出1 2 3模板一:有向图的DFS。AC Code:#inc原创 2021-08-16 13:22:45 · 1416 阅读 · 0 评论 -
C++多源最短路
题目描述有 $n$ 个城市,从 $1$ 到 $n$ 给他们编号,它们之间由一些单向道路(即一条道路只能从一个方向走向另一个方向,反之不行)相连,每条路还有一个花费 $c_i$,表示通过第 $i$ 条边需要花费$c_i$的时间。求任意两点间的最快路径。输入格式第一行一个整数 $n$,表示有多少个城市和多少条道路。接下来 $n$行,每行 $n$个整数第 $i+1$ 行第 $j$ 个数 $x$ 表示从i到j有一条花费为 $x$ 的边。(第 $i+1$ 行第 $i$ 个数为 $0$)输出原创 2021-08-15 23:40:17 · 782 阅读 · 1 评论 -
「NOIP2015普及组」扫雷游戏
题目描述扫雷游戏是一款十分经典的单机小游戏。在 n 行 m 列的雷区中有一些格子含有地雷 (称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时, 该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出 任何地雷格的条件下,找出所有的非地雷格。现在给出 n 行 m 列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方 向上与之直接相邻的格子。输入格式输入文件名为m.原创 2021-08-12 22:46:56 · 233 阅读 · 0 评论 -
「NOIP2007」纪念品分组
题目描述元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。输入格式输入文件包含n+2行:第1行包括一个整数w,为每组纪念品价格之和的上眼= 第2行为一个整数n,表示购来的纪念品的原创 2021-08-07 16:11:28 · 260 阅读 · 0 评论 -
C++——「NOIP2002」马拦过河卒
题目描述棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0, 0)、B点(n, m)(n, m为不超过20的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。输入格式第1行:4个数据,分别表示B点坐标和马的坐标。输出格式第1行:1个数原创 2021-08-05 14:48:57 · 235 阅读 · 0 评论 -
C++——「NOIP2005」采药
题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?(能,但是我就是不想完成)输入格式第一行有两个整数T(1 <= T原创 2021-08-04 16:09:49 · 433 阅读 · 0 评论 -
【枚举】方格填数
#include<bits/stdc++.h>using namespace std;int n,maxn;int main(){ cin>>n; for(int i=ceil(n/33.0);i>=0;i--){ if(i==ceil(n/33.0)) maxn=i*1900; else{ int k=i*1900+ceil((n-i*33)/49.0)*3300; maxn=min(maxn,k); } } c...原创 2021-07-02 22:10:56 · 426 阅读 · 0 评论 -
微信抢红包随机算法
做这东西,要讲究2个原则:平均+公平。现在,我们先来介绍一下随机算法:#include<cstdlib>#include<ctime> int main(){ srand(time(0));//产生随机数种子 for(int i=1;i<=10;i++) cout<<rand(); return 0;}运行结果:...原创 2021-06-12 15:35:02 · 208 阅读 · 0 评论 -
C++:合并果子
题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。 多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。 假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出原创 2021-07-09 22:18:48 · 436 阅读 · 5 评论 -
C. 【递推算法】放苹果
内存限制:128 MiB时间限制:1000 ms标准输入输出题目类型:传统评测方式:文本比较题目描述把n个同样的苹果放在m个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。输入格式第1行:包含二个整数n和m,以空格分开。1<=M,N<=10。输出格式第1行:输出相应的K。样例样例输入7 3样例输出8提示:打表或递归!!!AC代码:1、#include<原创 2021-07-11 22:05:10 · 194 阅读 · 0 评论 -
C++:#155. 括号配对
题目描述Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。以下是 GBE 的定义:空表达式是 GBE 如果表达式A是 GBE,则[A]与(A)都是 GBE 如果A与B都是 GBE,那么AB是 GBE下面给出一个 BE,求至少添加多少字符能使这个 BE 成为 GBE。输入格式输入仅一行,为字符串 BE。输出格式输出仅一个整数,表示增加的最少字符数。样例样例输入复制[])样例输出复制1数据范围与提示对...原创 2021-07-14 23:02:09 · 227 阅读 · 1 评论 -
C++:高精度算法
1、加法#include<bits/stdc++.h>using namespace std;int compare(string str1,string str2){ if(str1.length()>str2.length()) return 1; else if(str1.length()<str2.length()) return -1; else return str1.compare(str2);}string add(str原创 2021-06-07 22:12:47 · 95 阅读 · 0 评论 -
筛素数的方法
今天,我们来介绍三种筛素数的方法:1、暴力枚举法复杂度为O(n*sqrt(n))关键代码:int ans[Maxn],tot;bool isprime(int x){ for(int i=2;i*i<=x;i++) if(x%i==0) return 0; return 1;}for(int i=2;i<=n;i++) if(isprime(i)) ans[tot++]=i;原创 2021-07-23 20:35:36 · 169 阅读 · 0 评论