自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 POj1860(floyd+正权回路)

题目传送门题意:有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 B币。题解:我们可以用货币种类编号建图,在图上任意两点表示兑换关系并且是双向的,值得注意的是货币A没有兑换是的权值是不变的,而A兑换成B那么B的权值就是(k-Cab)*Rab,那么我们只要Floyd跑一边。然后判断是否存在一个dis[v]>dis[i]+w;代码:#inclu

2020-07-31 18:56:07 618

原创 Poj3660(floyd)

题目传送门题意:编号为1-N的奶牛参加比赛,告诉我们m场比赛结果试问有几头奶牛的排名可以确定。题解:其实就是一个传递闭包的模板题,用Floyd把所有有联系的比赛结果串在一起。Ac 代码:#include<bits/stdc++.h>using namespace std;const int maxn=1e2+5;int rp[maxn][maxn]; //rp[i][j]=1表示编号为i的奶牛战胜编号为j的奶牛;int n,m,u,v;void floyd.

2020-07-31 18:36:53 139

原创 数位dp 模板加例题

概念:所谓数位”dp“,是指对数字的”位“进行的与计数有关的DP。一个数一个位,十位,百位,千位等,数的每一位就是数位。数位DP用来解决与数字操作有关的问题。例如数位之和的问题。特定数字问题等。这些问题的特征就是给定的区间不能超级大,不用用暴力的方法逐个检查,必须接近O(log2n) 复杂度的算法。解题的思路是用DP对”数位“进行操作,记录已经算过的区间状态,用在后续计算中,快速进行大范围的筛选。实现方法:1.递推实现 2.用记忆法搜索实现。...

2020-07-29 10:20:17 175

原创 kmp&字典树 模板

kmp:const int maxn=1e5+5;char s[maxn],p[maxn];int nex[maxn];int KmpSearch(char* s, char* p){ int i = 0; int j = 0; int sLen = strlen(s); int pLen = strlen(p); while (i < sLen && j < pLen) { //①如果j = -1,或者当前字符匹配成功(即S[i] == P[j])

2020-07-27 22:17:06 99

原创 hdu 4622 (hash+“map”)

题目链接:https://vjudge.net/problem/HDU-4622题意:给定t组字符串每组m条询问——求问每条询问区间内有多少不同的子串。题解:把每个询问区间的字符串hash一下存图,这样访问的复杂度就只有O(1).至于为什么不能用map查重我也不知道,用map+hash会超时。所以我们需要手动写个map(直接套用kuangbin大佬的模板)。最后只要利用二维前缀和即可输出答案。Ac 代码:#include<iostream>#include<cstrin

2020-07-24 09:57:18 216

原创 L3-021 神坛 (叉积排序+向量积求面积)

题目链接https://pintia.cn/problem-sets/994805046380707840/problems/994805046577840128题意:给定n个点求三角形最小面积;题解:该题两个难点: 1.该怎么遍历(正常枚举会超时)。 2.用什么方法计算三角形面积。 解决方案:利用极角排序(先向量后叉积)来遍历,同时利用向量积来计算三角形面积。Ac 代码:#include<bits/stdc++.h&gt...

2020-07-23 19:58:57 238

原创 Hdu 4821 (字符串hash+map)

题目链接https://vjudge.net/problem/HDU-4821题意:给定字符串S ,询问用几个子串满足 : 1.长度为n*len 。 2. n个子串都不相同。题解:倒序hash将S第i位的字符变成ull, 然后对每一个长度为n*len的子串进行判断,这里需要用到Mp查重,先对其每个长度为lende 子串进行判断如果mp.size()==n则符合总数加一,然后再以len为单位滑动,去掉第一个长度为len的串,在末尾加上长度为len的串,判断mp...

2020-07-23 12:24:48 334 1

原创 Hznu_0j 1557

题目链接:http://acm.hznu.edu.cn/OJ/problem.php?id=1557题解:将两个数组分别升序和降序排序后,累加差的绝对值。Ac代码:#include<stdio.h>#include<math.h>int main (void){ int n,i,j,a[10000],b[10000],c,d,e=0; scanf("%d",&n); for(i=0;i<n;++i){ scanf("%d",&a[i

2020-07-08 18:38:22 1113

原创 codefoces D. Phoenix and Science

原题链接:https://codeforc.es/problemset/problem/1348/D题意:给你一个体重为一克的细菌(它可以每天进行一次二分裂即一分为二体重均分;晚上体重增加1克)求最快所有细菌体重所达到n克所需最短时间。题解:不难看出来这题要用到贪心的思想,如果每天所有细菌都进行分裂那么一天增加的体重最大,那么达到n克的天数就越少。构造一个公比是2的等比数列20,21,22,23…2x。如果sum==n那么x即为答案;如果sum<n,就需要将n-sum加入数组中,同时天数加

2020-07-03 20:14:28 229

原创 codefoces B - Phoenix and Beauty

原题链接:https://codeforc.es/problemset/problem/1348/B题意:告诉我们一个数组及其长度和k,判断是否可以构造一个新数组使得每K段长度和都相等。思路:首先需要判断原数组不同元素的个数与k的大小,如果看k小于原数组的不同元素的个数那么无法构造这样的数组;如果k大于等于那我们就可以构造出一个新数组。我们定义一个vis[101]数组作为标记数组,记录不同元素的个数,来判断是否存在这样的数组。然后我们定义一个数组b[]构造新数组的一个周期数组。最后只要输出n个这样的

2020-07-03 17:12:30 268

原创 B. Johnny and Grandmaster

原题链接:https://codeforc.es/problemset/problem/1361/B题意:给你n个k求把pk分成两组数和的最小差值对1e9+7取余。题解:运用贪心的思想取最大的数减去次大的数(先对数组按照降序排序),判断是否存在等于0的情况,如果存在那么最小差值为剩下数的和,如果不存在则答案为最大数减去其他数的和。(不存在小于0的情况)坑点:1.不能用pow求幂(会超时),需要构造快速幂函数。 2.需要开另一个mod防止出现差值为1e9+7b倍数时产生的误差...

2020-07-02 20:18:18 179

原创 CodeForces - 1360C

C. Similar Pairstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputWe call two numbersxxandyysimilarif they have the same parity (the same remainder when divided by22), or if|x−y|=...

2020-07-01 19:15:49 215

原创 Hznu_oj 2340 你敢一个人过桥吗?

Description在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。Input第一行是一个整数T(1<=T<=20)表示测试数据的组数每组测试数据的第一行是一个整数N(1<=N<=

2020-07-01 18:40:59 223

原创 Hznu_0j 1533 计算球体积(水)

题意:根据输入的半径值,计算球的体积;Input输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。Output输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。解题思路: 球体积公式:V=π*r*r*r*4/3;注意:浮点数; Ac代码 #include<stdio.h>int main(){ double r; while(~scanf("%lf",&r)){printf("%...

2020-07-01 18:08:06 593

空空如也

空空如也

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

TA关注的人

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