自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 A 进攻(牛客小白月赛)

题目链接:https://ac.nowcoder.com/acm/contest/8564/A注意判断时巧妙得操作#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int N = 1e6+10;ll a[N],d[N];int v[N];struct Node{ ll d; int v;}node[N];bool cmp1(Node n

2020-11-15 11:06:07 113

原创 J - Sum(南京预选赛周末训练赛)补题

题意:(square-free integer )无平方整数是除了1以外不被其它整数除的数.一个数n = ab,问你有多少个a,b的组合,a,b都是无平方整数,用f(n)表示,让你求思路:首先需明白欧拉筛,利用欧拉筛来求解每个的f(i)。①欧拉筛首先是确定是否为素数,如果为素数,那么f(i)肯定就只有两个((1,i),(i,1))。②然后欧拉筛就利用素数来筛去非素数,筛的每一步都是筛掉 i * primes[j], 那么这里就对 i*primes[j] 进行判断。分为以下情况Ⅰ 如果i%pr.

2020-11-08 21:21:50 104

原创 L Clock Master(2020 China Collegiate Programming Contest Weihai Site)补题

题意:给你一个数b,求ans = b1 * b2 * b3 …最大,且b = b1+b2+b3…其实就是求b1 ,b2, b3, b4 的最小公倍数的最大值。思路:任意一个数都可以质因数分解成N = p1a1 * p2a2 * p3a3…所以我们可以这样来想这个问题j将b看成是一个容量为b的背包;p1a1, p2a2,p3a3…不同的质数的不同次方看成是分成了一个组;这就是一个分组背包的问题了,从质数组中去选择,它们的和不超过b,求它们乘积的最大值。注意:①数据范围较大,需要将二维的d.

2020-11-07 18:34:09 274

原创 dp(背包问题,学习中......)

状态表示和状态计算DP优化一般是对状a态方程进行优化DP思考结构:Dp 状态表示 – 集合 ---- 条件---- 所有选法– 属性 (max,min, number)状态计算------集合的划分01背包//01背包 #include <bits/stdc++.h>using namespace std;int v[1010];int w[1010];int dp[1010][1010];int main(){ int n,V; cin>>n&gt

2020-11-06 18:06:55 91

原创 Kitchen Plates(暴力写法和学习拓扑排序)

太暴力了!!!!!!! !关于next_permutation 的用法:头文件#include https://blog.csdn.net/sgsyacm/article/details/80139089!!!#include <bits/stdc++.h>#include <algorithm>using namespace std;string q,w,e,r,t;bool b1,b2,b3,b4,b5;//string a;char a[5] = {'A'

2020-10-21 20:53:02 154

原创 Mental Rotation

#include <bits/stdc++.h>using namespace std;char tu[1010][1010];int main(){ int n,l=0,r=0; string a; cin>>n>>a; for(int i =1;i<=n;i++){ for(int j =1;j<=n;j++){ cin>>tu[i][j]; }

2020-10-21 19:10:03 242

原创 Non-Zero Segments

//前缀和#include <bits/stdc++.h>using namespace std;const int maxn = 2e5+10;typedef long long ll;ll a[maxn];ll sum;ll ans;map<ll,bool> mp;int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); sum = ans = 0; mp

2020-10-16 00:05:11 149

原创 Rock,Paper,Scissors

//前缀和#include <bits/stdc++.h>using namespace std;const int maxn = 2e5+10;typedef long long ll;ll a[maxn];ll ans1,ans2;map<ll,bool> mp;int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); ll n; ll a1,a2,a3,b

2020-10-15 23:42:13 621

原创 Increase and Copy

借鉴学习代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ int t; ll n; cin>>t; while(t--){ cin>>n; int x = sqrt(n); int ans = x-1; ll sum = x; while(su

2020-10-15 19:17:17 72

原创 2020_9_17_(Digits Are Not Just Characters)

直接一个一个比较(在边界判断的时候出错了。。。。。。)#include <bits/stdc++.h>using namespace std;string a;string b;//判断数字的函数//数字串如何解决呢bool judgeNum(int i){ if(a[i]>='0' && a[i] <= '9' && b[i]>='0' && b[i] <= '9' ){ //转换为数字

2020-09-17 09:33:04 89

原创 1005 Number Sequence(周期规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005Memory Limit Exceeded(内存超限)的代码 :错误示范,用的递归但是超时了。#include <bits/stdc++.h>using namespace std;int A,B,n;const int maxn = 1e8;int a[maxn];void fn(){ a[1] = a[2] = 1; for(int i =3;i<=maxn;i+

2020-08-28 22:54:03 160

原创 dp(数塔2084+免费馅饼1176+最长回文子串)

数塔问题题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084数塔问题是很典型的dp问题。该题大概的思路为:因为从上往下算的话只知道局部最大,但局部最大不能保证整体最大,则需要从下往上面推。具体看图:假设这时在倒数第二层,那么可以根据下一层算出这层每个放歌的最大值,接着是倒数第三层,依次往上推,就可以获得最大值。公式为:a[i][j] = max(a[i+1][j]+a[i][j],a[i+1][j+1]+a[i][j]);#includ

2020-08-28 00:40:30 110

原创 深度优先搜索(DFS)和广度优先搜索(BFS)(学习总结)

深度优先搜索:①定义:是一种枚举所有完整路径以遍历所有情况的搜索方法。②如何实现DFS:使用栈较麻烦。类比斐波那契数列,可以使用递归这种方式来实现DFS。使用递归系统会调用叫系统栈的东西存放递归中的每一层状态,本质还是栈实现。③例子(1)全排列求1 2 3或1 2 3 4全排列可以使用几个for循环解决,但当求1到n(n小于等于10)用for不能解决则利用递归。#include <iostream>using namespace std;int n;int book[20]

2020-08-26 23:46:13 4980 2

原创 大整数运算(算法笔记学习总结)

①什么是大整数:高精度整数,用基本数据类型无法存储其精度的整数,例如有1000个位数的整数。②存储:用数组,整数的高位存储在数组的高位,整数的低位存储在数组的低位。输出的时候逆序输出。(1)大整数结构体:struct bign{ int d[1000]; int len;//方便获取大整数的长度 //构造函数(函数名与结构体相同,无返回值)初始化结构体 bign(){ memset(d,0,sizeof(d)); len = 0; } }; (2)输入大整数,运用字符串,再

2020-08-26 23:45:57 1123

原创 1003航电Max Sum

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003

2020-08-26 23:45:35 131

原创 A + B Problem II(大整数运算)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002

2020-08-25 22:39:07 168

原创 Task Scheduler(十,学习总结)

题意:有n个任务,m个工作者,存在k个人不在,第i个任务需要ti个工作者,被选的概率相同,求出分配次数期望值最小的分配方法。思路:#include <bits/stdc++.h>using namespace std;int main(){ int tcase; cin>>tcase; while(tcase--){ int n,k; cin>>n>>k; vector<int> t(n),idx(n); for(i.

2020-08-24 18:11:05 199

原创 Permutation Counting(十,学习总结)

题意:有一长度为n的排列(ai)来形成另一长度为n-1的序列(bi),形成方式为现在直到b的序列,求存在多少个a满足b的条件。思路:#include <bits/stdc++.h>using namespace std;const int maxn = 5010;const int mod = 1e9+7;int b[maxn];int f[maxn][maxn],g[maxn][maxn];void add(int &x,int y){ x+=y; if(x&g.

2020-08-23 18:21:16 394

原创 Tree(九,学习总结)

题意:有一棵由n个点构成的树,只能从父节点走向子节点,在书中思路:

2020-08-22 14:43:44 171

原创 1000 A + B Problem 航电

知识点:Process to end of file.处理到文件末尾,所有这里使用while(cin)处理。#include <bits/stdc++.h>using namespace std;int main(){ int A,B; while(cin>>A>>B){ cout<<A+B<<endl; } return 0;} ...

2020-08-17 22:20:41 96

原创 Hexagon(八,学习总结)

题意:存在一个六角格,求出经过所有六角格的一个路线,每次有六个方向123456。思路:#include <bits/stdc++.h>using namespace std;const int N =2e6+5;int n,ls;char s[N];void walk(int x,int y){ assert(x>2); for(int i=1;i<=x-2;i++){ s[ls++] = '0'+(4+y-1)%6+1; s[ls++] = '0'+(..

2020-08-17 22:00:51 655

原创 Fluctuation Limit(八,学习总结)

题意:有n个区间和数k,相邻区间的上限和下限变化都不超过k,是否可以获得一组数列对应的数满足在对应的区间内,且相邻两数变化不超过k。思路:相邻区间互相限制,从左至右判断若i在 [l,r] 范围内,那么i+k应该在 [i-k,i+k] 范围内,再从右到左判断一遍,可能有多个结果,可输出最小的,也就是l[i]。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+100;int l[maxn],r[maxn];.

2020-08-16 11:37:31 125

原创 Game(七,学习总结)

题意:D和d在一个有n个点的二维平面上移动一颗石头,D先移动,规则为,当石头在点x,且上一次移动距离为d,移动到下点y,满足distance(x,y)>d,且y未访问过,直到一方不能移动则输,若D和d都使用最好的策略,那么当D赢,输出YES,否则输出NO。思路:...

2020-08-15 22:16:27 109

原创 Clockwise or Counterclockwise(八,学习总结)

题意:给三个点A,B,C,三点到原点距离相等,从A到B再经过C来形成圆,问该圆是逆时针还是顺时针形成。思路:用向量来解决,选择向量AB和AC,若AB✖C小于0,则为逆时针形成,否则为顺时针形成。#include <bits/stdc++.h>typedef long long ll;using namespace std;int main(){ int tcase; cin>>tcase; while(tcase--){ ll x1,y1,x2,y2,x3,y3.

2020-08-15 21:33:00 244

原创 Increasing and Decreasing(七,学习总结)

题意:有三个数n,x,y。按照字典顺序求长度为n,最长上升子序列为x,最长下降子序列为y的最小排列。题解:

2020-08-15 10:35:27 356

原创 Road To The 3rd Building(六,学习总结)

题意:有n个数,选择一个区间求其平均值,求平均值的数学期望。思路:

2020-08-10 22:19:10 107

原创 Little Rabbit‘s Equation(六,学习总结)

题意:以字符串的形式给出表达式,判断满足该表达式计算的最小进制。思路:

2020-08-10 22:06:50 151 1

原创 A very easy graph problem(六,学习总结)

题意:思路:

2020-08-10 21:58:45 158

原创 Paperfolding(五,学习总结)

题意:思路:

2020-08-08 21:22:29 593

原创 Tetrahedron(五,学习总结)

题意:题解:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 6e6+5;const ll mod = 998244353;int inv[N],sum[N];int main(){ std::ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); inv[0] = 1,inv[1] = 1; for(int i = 2;.

2020-08-07 22:35:21 178

原创 Boring Game(五,学习总结)

题意:n张纸叠在一起,从左到右折叠k次,然后从上到下给没个面一次编上序号1,2,3…,将纸打开,以从上到下的顺序,依次输出从左到右的数。思路:发现就是截取上半部分的数,倒转后放在左侧,进行k次得到。学习的代码:https://www.cnblogs.com/stelayuri/p/13435346.html注意:关于vector的使用;将数倒转的过程如何实现的。#include <bits/stdc++.h>using namespace std;const int maxn = .

2020-08-07 22:22:13 295

原创 Deliver the Cake(四,学习总结)

题意:有m个点和n条路,点分为M,L,R三种类型,从L到R或者R到L都会花多于的时间x,而M不会,求从点s到点t花的最少时间。思路:因为有M这种类型阻碍了直接使用Dijkstra算法,但可将M分为L和R两个点来解决,这样就构成一个新的图,利用Dijkstra算法来解决即可。www.manongjc.com/detail/18-iowrqwislapwaoq.html学习的是该链接中的代码,比起发的题解自己更容易理解些。注意:要理解Dijkstra算法和点是怎样拆分的。#include <b.

2020-08-03 17:26:24 159

原创 Equal Sentences(四,学习总结)

题意:给一句话S,包含n个单词,求与其相似的句子T的个数,包含自己。相似满足两个条件:①单词的多重集相同②一个单词在S中出现的第i个词在T中出现第i个词的索引相差不超过1。思路:令 f[i] 为前 i 个单词组成的相似字符串的个数,可知规律:如果相邻两单词相同,则交换后不改变,则f[i+1]=f[i];如果不相等,则交换,那么f[i] = f[i-1] + f[i-2];一直到f[n]时算出结果。注意:另的f[0]=f[1]=1;避免数字太大记住取模。#include <bits/stdc+.

2020-07-31 16:45:59 294

原创 Blow up the Enemy(四,学习总结)

题意:爸爸和儿子玩游戏,每个人只能从n个武器中选择一种战斗,每种武器还有两个属性,一个是伤害A,另一个是两次使用的时间间隔D,爸爸的武器随机选择,儿子想赢得比赛,替他选一种武器,求最大的获胜率。思路:如果儿子要赢,那肯定选性能最好的,在时间相同的情况下打出的伤害最先到达100,而爸爸随机选择,求出性能最强的武器的个数k,爸爸选择最强的概率为k/n,则儿子获胜概率为0.5*(k/n),当爸爸未选择最强武器,概率为(n-k)/k,儿子一定会赢,概率为(n-k)/k,两个数相加就是赢的最大概率。注意;每轮测.

2020-07-30 23:31:20 427

原创 Kindergarten Physics(四,学习总结)

题意:(看的时候没看懂题意)两个质量很小的球,作自由落体运动,求两球在t0时刻的距离。思路:(由于两球做自由落体运动,故两球距离保持不变。)显然,两个质点移动的距离与质量、时间正相关,与距离负相关。自己估算或者观察样例,发现在数据范围可能的最坏情况下 a 逽 b 逽 t 0 逽 週逰逰,d 逽 週,质点移动的距离远小于 週逰 −6 (所容许的误差值),所以对于任意数据范围内的输入,都直接输出 d 即可#include <bits/stdc++.h>using namespace s.

2020-07-30 23:01:07 263

原创 Little W and Contest(三,学习总结)

题意:n个人互不认识,经过一次介绍,两人认识,且a对b认识,b对c认识,则a对c认识,每个人都具有技能1或2,从n个人中选择三个人参加比赛,且至少有两个具有技能2,且三个人互补认识。思路:利用并查集,将认识的人分在同一个连通块中,每次从不同块中去取不满足的情况,存在四种可能,每次用前一次的减去不满足的情况个数,得到最终ans。主要是看了这个理解的:https://blog.csdn.net/njuptACMcxk/article/details/107641773在写的过程中注意防止负数的出现,还.

2020-07-30 20:03:50 220

原创 Tokitsukaze and Multiple(三,学习总结)

题意:n个数,相邻两数可经过无限次相加,求经过操作后该数列中是p的倍数的数的最多个数。思路:利用贪心算法,从左至右判断,如果一个区间之中存在操作后求模p的两个值相等,那么这个区间就一定存在加起来是p的倍数的数,,因为只有加上p的倍数才会使其求模后不变。m=n%p=(n+k*p)%p.cin与cout的使用注意加入ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);#include <bits/stdc++.h>using name.

2020-07-29 20:21:26 237

原创 Lead of Wisdom(杭州电子科技大学2020学习总结)

思路:题意是有k种类型的物品,列举了m种,每种类型只能选一个,利用公式计算DMG的最大值。需要遍历多种可能,故用dfs算法来优化,注意当某种类型不存在的情况。解析中使用了一个三维数组,方便计算。...

2020-07-27 19:46:19 210

原创 The Oculus(杭州电子科技大学2020学习总结)

思路:求出A和B和C的值,两者之差在斐波那契数列中去找缺少的那一个,最后输出即可,注意数据的取值范围。#include <bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int N=3000005;int T;ull A,B,C;ull f[N];inline ull add(int m){ ull sum=0; for(int j=1;j<=m;j++){ int...

2020-07-26 16:51:23 325

原创 1005.Fibonacci Sum(杭州电子科技大学2020学习总结)

思路:首先要知道斐波那契数列的通向公式为利用这个公式计算会简便很多,可以设D=根号五分之一,A=二分之根号五加一,B=二分之一减根号五,则Fn的K次方可利用二项式定理,得到图中的公式。发现公式在i取不同值时,有对应的等比数列,求它们的和就行了。注意当公比为1时要特殊判断。看了这篇文章才理解的,里面也讲了优化的办法https://blog.csdn.net/oampamp1/article/details/107508328代码仿造题解写得,有微小的改动。#include <bits...

2020-07-25 19:36:16 418

空空如也

空空如也

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

TA关注的人

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