自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 划分字母区间(main函数版)

学校里的程序设计大赛出了,当时眼前一黑,没读懂啥意思。仔细想“同一个数组最多出现在一个片段里”这句话,以第一个字符找到它最后一次在字符串里出现的位置,然后看这个区间里的其它字符最后一次出现的位置在哪,如果在后面就向后维护一个最大区间。我把找到的字符串都舍去了,数据范围小,瞎写都行,逃了逃了。#include<bits/stdc++.h>using namespace std;map<char,int> mp;int main(){ int t; cin>>

2020-11-23 19:46:52 11

原创 已知矩形体积,求解最小表面积(优化算法)

题是51nod上的 3330 Minecraft :题目地址(网站崩了就去按题号找一下)输入一个n,n<=1e9,n是小方块个数,可以相当于已知矩形体积,求解最小表面积的长宽高为整数的解。首先因为n的范围很大,不能用三重循环的做法,就是分别遍历长宽高,然后满足条件算出表面积维护最小值。最简单的优化是把三重循环变成二重循环,参考poj 2363 ,相当于用体积公式去掉一重循环,已知长宽可以由V=abc得a=V/(b*c),然后同上,满足条件算出表面积维护最小值。接下来就是能ac的思路了,第一步先

2020-11-11 00:13:51 60

原创 合并果子——记一下 优先队列

priority_queue <int,vector<int>,less<int> > p;priority_queue <int,vector<int>,greater<int> > q;{5,4,1,2}less:{5,4,2,1}greater:{1,2,4,5}less是从大到小,greater是从小到大。#include<bits/stdc++.h>using namespace std;pri

2020-10-30 19:55:05 6

原创 Sum of Consecutive Prime Numbers——素数

用了欧拉筛法,对于欧拉公式还是有很多不理解的地方,回头补几道练习。#include<iostream>#include<cstdio>#include<algorithm>#include<math.h>#include<cstring>#include<string>#include<vector>using namespace std;const int maxn=1e5+5;int vis[maxn

2020-10-20 20:24:48 21

原创 A hard puzzle——快速幂

#include<iostream>#include<cstdio>#include<algorithm>#include<math.h>#include<cstring>#include<string>#include<vector>using namespace std;typedef long long ll;const int mod=1e9;ll qpow(ll a,ll b){ ll

2020-10-20 20:22:47 10

原创 Specialized Four-Digit Numbers——进制转换

可以说是板子题,进制转换,不断取余,这道题简单在也不用输出,比如十六进制九以后的数要表示成A,B,C…像这道题就可以直接取余然后加到结果里,然后不同进制的结果进行比较。#include<iostream>#include<set>#include<queue>#include<cmath>#include<stack>#include<vector>#include<string>#include<cs

2020-10-20 20:21:07 16

原创 An Easy Task

我打表了。。然后没超时题意就是求所给年份后的第k个闰年闰年怎么求题目中告诉了#include<iostream>#include<cstdio>#include<algorithm>#include<math.h>#include<cstring>#include<string>#include<vector>using namespace std;vector<int> ve;void

2020-10-20 20:14:36 23

原创 第二题 POJ 2965

做了第一题,见上一个发布,发现是一样的方法,4x4都没变,就是多加了一个输出变换路径,我也没置零置一,直接写了个大模拟,翻转之后记录,用步数记录,妙,对递归理解又多了一点。明天再手写一次,加油。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char str[5][5];int ansx[20],ansy[20];

2020-10-14 22:27:08 6

原创 刷题计划1——poj1753

最近准备开始刷题了,不知道能坚持多久,等我有能力单挑铜牌了,路还长。第一道,枚举,之前就见到过,昨天才写ac,方法一是枚举+dfs,也是最好理解的方法。方法二是位运算+bfs,对于我这个不太会位运算的,看的有点难受。#include<iostream>#include<set>#include<queue>#include<cmath>#include<stack>#include<vector>#include<

2020-10-14 19:56:22 45

原创 Pie Cable master 两道类似的二分题

#include<iostream>#include<cstdio>#include<algorithm>#include<math.h>#include<cstring>using namespace std;#define pi acos(-1.0)double a[10010];int main(){ int t; double l,r; double mid; scanf("%d",&t); while(t

2020-10-11 16:18:23 25

原创 Find a multiple

#include<iostream>#include<cstdio>#include<algorithm>#include<math.h>#include<cstring>#include<string>#include<vector>using namespace std;typedef long long ll;const int maxn=10005;int s[maxn],a[maxn],mod[

2020-10-11 15:54:15 11

原创 桂电信科 2020 程序设计大赛 题解

A相当于hello world,就是多了一个a控制一下个数//A#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--){ int a; cin>>a; for(int i=0;i<a-1;i++){ cout<<"AC "; } cout<<"AC"<<endl; } retur

2020-09-22 16:59:07 51

原创 c++ 快速读入

inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') w=-1; ch=getchar(); } while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar(); return s*w;}再记一下子,快速读入,数大数多的时候用。

2020-09-21 13:45:27 25

原创 牛客练习赛 68 69 C题 无向图并查集

一开始看到这道题,想到的是最短路,用dijkstra,但是n的范围太大了,直接超内存,看了题解之后发现是并查集的思路。先存点,用node存上{u,v,w},根据权值来降序,判断两点是不是一个祖先,如果不是一个祖先,答案加上两点间的权值。这就相当于先找最大权值两点相连的点,这两点直接的权值就确定下来了,接下来只是在m条边中找其它两点的权值,直到所有的边完成遍历。答案就是所有边的最大权值。#include<bits/stdc++.h>using namespace std;#define.

2020-09-13 15:03:52 35

原创 spfa 简单代码

#include<queue>#include<vector>#define M 105#define INF 0x3f3f3f3fint dis[M];//储存最短路径int vis[M];//标记该点是否在队列当中int path[M];int inque[M];//统计次数int n,m;//n个点,m条边struct edge{ int to;//当前点的下一顶点 int cost;//两点之间的权值};vector<edge&gt

2020-09-09 17:02:27 38

原创 最短路 算法总结

一、Floydint n;void floyd(){ for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(maps[i][j]>maps[i][k]+maps[k][j]){ maps[i][j]=maps[i][k]+maps[k][j]; } } } }}二、Dijkstra#define INF 0x3f3f3f3fint

2020-09-04 15:15:05 34

原创 牛客小白月1

A就是简单的数学题,唯一注意的就是精度问题exp(1)算出来的是e的准确值,exp(x)返回e的x次方,之后跟着题意写全代码就行。中途想到了一下二分快速幂,发现pow()就是浮点型的,直接拿来用了,顺变补个快速幂吧,大数的,矩阵快速幂回头再补。#include<bits/stdc++.h>using namespace std;#define e exp(1)int main(){ int t; cin>>t; double a,b,c;

2020-08-23 21:22:08 19

原创 The Settlers of Catan——(第一场 递归与回溯)

https://ac.nowcoder.com/acm/problem/106855n为点,m为边m行一行两个点开一个a[][],输入的两点x,y有a[x][y]=a[y][x]=1;表示x和y之间有一条边,置1。开始遍历二维数组中所有的点,从x开始,x和y有边的话,再去找y与其它点的边,直到搜索到0为止。然后再把走过的路径都消除,去找下一个点的连通路径是多长。#include<iostream>#include<algorithm>#include<strin

2020-07-27 16:15:23 39 1

原创 Red and Black——(第一场 递归与回溯)

https://ac.nowcoder.com/acm/problem/106576大意就是 X 不能走 . 可以走 @ 是初始位置,然后问从初始位置走完全部的 . 需要的最少步数。初始化输入很简单,考点是dfs,先找满足条件,在红黑地板范围内 和 没走过 和 可以走 同时满足,走一步,加步数,然后走下一步,走不通了就回溯到上一步可以选择的时候,看其它方向哪里还可以走。int dir[4][2]={ {1,0},{0,1},{-1,0},{0,-1}};char a[25][25];in

2020-07-27 15:36:53 19

原创 Fractal——(第一场 递归与回溯)

https://ac.nowcoder.com/acm/problem/106680分形递归进三个变量,n和横纵坐标d是图形每次变换的长度,每次坐标定位到左上角,分成左上,左下,右上,右下,中。可知,左上坐标不变,右上横坐标加两个图形长度,纵坐标不变。同理,其它位置也可以模拟出来。边界条件是n=1,只有"X"。int f(int n,int x,int y){ if(n==1){ a[x][y]='X'; return ; }else{

2020-07-27 15:28:01 26

原创 Symmetric Order——(第一场 递归与回溯)

链接:https://ac.nowcoder.com/acm/problem/106610 来源:牛客网在信天翁马戏团管理公司(是的,它是由一群小丑运行的)的工作中,你刚刚完成了一个程序,它的输出是按长度顺序排列的名称列表(这样每个名称至少与前面的名称一样长)。但是,你的老板不喜欢输出的样子,相反,希望输出看起来更对称,顶部和底部的字符串越短,中间的字符串越长。他的规则是,每对名字都属于列表的两端,而这对名字中的第一个总是在列表的顶部。在下面的第一个例子中,Bo和Pat是第一对,

2020-07-27 15:07:29 21

原创 The Settlers of Catan——(第一场 递归与回溯)

多组输入第一行两个数,n点数,m行数接下来m行,一行两个数,表示两点相连直接上代码输入,vis[i][j]用来储存(i,j)点是否走过。a[x][y]<–>a[y][x]表示在x,y相连,标1,遍历的时候提出来找出两点,第一个点i变成第二个点j,进去深搜递归,不断找下一个点,找不到为止,声明一个tt表示步数,每次更新坐标点都t++。找不到回溯,走其它,vis都无法走了(条件表示vis[][]==0&&a[][]),结束。int main(){ while(c

2020-07-26 16:10:15 31

原创 八皇后——(第一场 递归与回溯)

在一个8*8的棋盘上放置八个皇后,每个皇后在其本身行、列、对角线上不能出现其它皇后。总共有92种放置情况。用r表示行,用c[r]表示列,判断条件,因为r是不断增加的行,只会找没有皇后的行,所以无需判断行数,然后条件减少成三条:判断列、判断主对角线、判断负对角线.。1.c[r]==c[j] j在r之前循环2.c[r]-c[j]==r-j;3.c[j]-c[r]==r-j;寻找函数,到8了退出,做个边界,到了回溯。void search(int r){ if(r==8){

2020-07-26 10:54:40 19

原创 放苹果——第一场(递归与回溯)

题目链接:https://ac.nowcoder.com/acm/problem/106261来源:牛客网题目描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。输入描述:第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。输出描述:对输入的每组数据M和N,用一行输出相应的K。三种情况1.盘子数比苹果数多->f

2020-07-25 16:54:51 46

原创 小c的笔记本(栈)

问题出自https://ac.nowcoder.com/acm/problem/15975stack<string> c;int main(){ ios::sync_with_stdio(false); int q; cin>>q; string s; c.push(s); while(q--){ int t; cin>>t;

2020-06-15 23:26:49 96

原创 吐泡泡(栈)

问题链接https://ac.nowcoder.com/acm/problem/15029#include<bits/stdc++.h>using namespace std;int main(){ char p[120]; while(cin>>p){ int l=strlen(p); stack<char> a; for(int i=0;i<l;i++){ if(a.e

2020-06-14 12:08:10 58

原创 数学考试dp

来自https://ac.nowcoder.com/acm/problem/15553先是read()函数,用于快速读入,比cin快,比printf快int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-'){ f=-1; } ch=getchar(); } while(ch>=

2020-05-30 21:54:53 253

原创 紫书——蛇形填数

#include<iostream>#include<string.h>//#include<time.h>#define maxn 20using namespace std;int a[maxn][maxn];int main(){ int n,x,y,tot=0; cin>>n; memset(a,0,sizeof(a)); tot=a[x=0][y=n-1]=1; while(tot&

2020-05-17 20:49:20 34

原创 紫书——阶乘之和

const int mod=1000000; int n,s=0; cin>>n; for(int i=1;i<=n;i++){ int factorial=1; for(int j=1;j<=n;j++){ factorial=(factorial*j%mod); } s=(s+factorial)%mod; } cout<<s<

2020-05-17 19:25:13 35

原创 紫书——3n+1的问题

对于任何大于1的自然数n,如果n为奇数,n变为3n+1,如果为偶数,变为n/2,变化若干次,最后一定能得到1。请问变化了几次。n<=10^9.int count=0; int n; cin>>n; while(n!=1){ if(n%2==0){ n/=2; }else{ n=3*n+1; } count++; } cou

2020-05-17 19:01:10 95

原创 紫书——aabb问题

完全平方:能被开方方法一:#include<iostream>#include<algorithm>#include<math.h>using namespace std;int main(){ int a,b; for(a=1;a<10;a++){ for(b=0;b<10;b++){ int n=1100*a+11*b; int m

2020-05-17 17:31:49 164

原创 汉诺塔问题解决(Python)

经典的递归问题,为了给自己疏一遍原理,整理一下思路,写一下这篇文章。简单情况:输出移动步骤def hanoi(n,a,b,c): if n==1: print(a,'-->',c) else: hanoi(n-1,a,c,b)#把a柱上的n-1个盘子借助c移动到b柱 print(a,'-->',c)#把a柱上底盘移动到c柱 hanoi(n-1,b,a,c)#...

2020-02-18 23:28:51 31

数字迷宫的c实训报告

里面是c语言的实训报告,数字迷宫,用数组写的,截图都是dev-c++的界面,代码在word里分区写了,都粘贴到.cpp里可以运行。

2020-07-27

空空如也

空空如也

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

TA关注的人 TA的粉丝

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