自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 prim 最小生成树

算法原理给定一个无向图,在图中选择若干条边把图的所有节点连起来。要求边长之和最小。在图论中,叫做求最小生成树。prim 算法采用的是一种贪心的策略。每次将离连通部分的最近的点和点对应的边加入的连通部分,连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小。不断迭代 用dist[j] = min(dist[j], g[t][j])更新到集合的最短距离。优化prim算法与dijikstra算法一样都可以用堆优化的方式实现对稀疏图的优化,但是稀疏图一般不用prim(Kruskal真香)与dij

2021-06-05 18:25:06 175 2

原创 Dijkstra算法模板及其优化

Dijkstra 算法原理即进行n(n为点的个数)次迭代去确定每个点到起点的最小值 最后输出的终点的即为我们要找的最短路的距离算法分析朴素版本:由于计算第n个点的时候,需要计算到前面n-1个点所组成的连通块的的最短路径长度,朴素版本利用的是对前面每一个点进行遍历的方法。堆优化版本:每次找到最小距离的点沿着边更新其他的点,若dist[j] > distance + w[i],表示可以更新dist[j],更新后再把j点和对应的距离放入小根堆中。由于点的个数是n,边的个数是m,在极限情况下(稠密

2021-06-05 17:56:17 195

原创 swpu 训练周赛(4)

A .Diverse Strings(div.3)题意:如果一个字符串是连续且不含有重复字母就输出Yes,否则输出No。思路:定义一个数组存储每一个字母出现的次数。找到ASCII码最大和最小的字母作为左右边界。从左到右遍历,如果有字母出现的次数不为1.则输出No.否则输出Yes.(好好的签到题因为看不懂题目卡了20分钟,QQ翻译有毒(我一定好好学英语.))#include<cstdio>#include<cstring>#include<algorithm&g

2021-04-16 20:42:06 152

原创 基础练习 分解质因数

基础练习 分解质因数分解质因数板子题(谢谢Y总的板子)#include <iostream>#include <algorithm>using namespace std;void divide(int x){ int flag=0; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) { int s = 0; whi

2021-04-09 18:25:16 63

原创 基础练习 Sine之舞

基础练习 Sine之舞tip: 注意求A 的时候是逆序,需要不断更新上界k。#include<iostream>using namespace std;int n;void a(int x,int k){ if(x==1) { printf("sin(%d)",k-x+1); return ; } printf("sin("); printf("%d",k-x+1); if((k-x+1)%2) printf("-"); else printf("+"); a

2021-04-09 17:52:34 56

原创 高精度阶乘

注意乘法规则,先乘再加前一位的进位.#include<iostream>using namespace std;const int N=1e6+10;int a[N],n,j,t;int main(){ cin>>n; a[0]=1; int m=1; for(int i=2;i<=n;i++) { for(j=0;;j++) { t=(a[j]*i+t); a[j]=t%10; t/=10; if(j>=m&a

2021-04-08 14:27:36 31

原创 蓝桥杯基础练习 字母图形

基础练习 字母图形看懂题目就行(#include<iostream>using namespace std;int main(){ int n,m; cin>>n>>m; for(int i=0;i<n;i++) { int j=i; int cnt=0; for(;j>0;j--) { if(cnt<m) { printf("%c",j+'A'); cn

2021-04-07 21:58:31 36

原创 洛谷 P4145 上帝造题的七分钟2 / 花神游历各国

P4145 上帝造题的七分钟2 / 花神游历各国思路用线段树维护,如果区间和小于等于区间长度,就直接pass。暴力开方不会超时(因为sqrt 下取整)sqrt 6次大概就到1了。时间复杂度ok.暴力必T(当时还想快读卡过去,还是年轻了)。线段树没学会,所以这是照着模板敲出来的(doge)。基本思路是用堆建一个二叉树。这题只用由子求父。还是简单的。(父求子给我整吐了)。code#include<iostream>#include<cstdio>#include<a

2021-04-03 22:52:42 121

原创 洛谷 P3743 kotori的设备

P3743 kotori的设备思路二分水题,思路极其简单,奈何出题人有毒,处处挖坑。给r 赋初值的时候,本想减小算法时间复杂度,用理论最长时间作为右端点,结果数据到处都是坑(一不小心就让除数等于0了,出题人有一手的)。理论最长时间为1e5,但是二分右端点必须是1e10,否则WA。明明要求输出 -1 ,结果标答是 -1.0000000 没错,7个0,比一般double都多一位(恼最离谱的是明明不会爆int,如果用Int 存sum,会出现精度问题(double不会)。我觉得出题人针对我(

2021-04-01 16:36:48 153

原创 洛谷 P2212 [USACO14MAR]Watering the Fields S

P2212 [USACO14MAR]Watering the Fields S思路最小生成树板子题(水,奈何忘了板子… ,唯一需要注意的是最短边必须大于c , 小于c无法连通。因为是稠密图,所以用堆优化也优化不了多少。(懒)code#include<cstdio>#include<iostream>using namespace std;typedef long long ll;const int N=20001,inf=2e9;ll x[N], y[N];

2021-03-31 21:49:13 105

原创 洛谷 P7441 「EZEC-7」Erinnerung

P7441 「EZEC-7」Erinnerung(抠图真香)思路分类讨论:x, y 均为0,则无论如何都无法凑出满足题意的可能。所以输出0;x, y 只有其中之一为0,如果 K%(x,y中不为0的那个)!=0.则说明仅存在一种情况使题意满足。所以输出1,反之则输出0.x, y均不为0.按照题目要求必须两两成对才可以消除。则最大可以消除量为 K/max(x,y) 。此时考虑是否这些条件均满足题意.令 min =min(x,y) ,max=max(x,y). 则 K%min一定小

2021-03-29 21:58:25 191

原创 洛谷 P5638 【CSGRound2】光骓者的荣耀

P5638 【CSGRound2】光骓者的荣耀(水题目背景题目描述小 K 打下的江山一共有n个城市,城市i和城市i+1有一条双向高速公路连接,走这条路要耗费时间ai 。小 K 为了关心人民生活,决定定期进行走访。他每一次会从1号城市到n号城市并在经过的城市进行访问。其中终点必须为城市n。不仅如此,他还有一个传送器,传送半径为k,也就是可以传送到i−k和i+k。如果目标城市编号小于1则为1,大于n则为n。但是他的传送器电量不足,只能传送一次,况且由于一些原因,他想尽量快的完成访问,于是就想问交通

2021-03-29 21:32:37 220

原创 洛谷 P1969 [NOIP2013 提高组] 积木大赛

洛谷 P1969 [NOIP2013 提高组] 积木大赛学习内容:水题(题目描述:西南石油幼儿园附属大学举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi。在搭建开始之前,没有任何积木(可以看做n块高度为0的积木)。接下来每次操作,小朋友们可以选择一段连续区间[l, r][l,r],然后将第第L块到第 R 块之间(含第L 块和第 R块)所有积木的高度分别增加1。小MM是个聪明的小朋友,她很快想出了建造大厦的最

2021-03-29 21:17:28 251

空空如也

空空如也

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

TA关注的人

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