- 博客(4)
- 收藏
- 关注
原创 关于刷题中的取模运算
在这个题中单纯用前缀和+暴力是会超时的,只有七十分,那么在这里呢可以将前缀和对7取模,因为(a-b)%p=(a%p-b%p),(这里括号外面没有取模是因为,两个余数相减一定小于p), 前缀和brr[i]-brr[j]=j+1到i的和,(a-b)%p=0即a%p==b%p;其实就是问你一个数对另一个数取模为多少,只是这个数可能会有某些问题,比如数字过大(eg:a+b>long long but a,b
2024-04-15 08:55:04
583
1
原创 洛谷P5019 [NOIP2018 提高组] 铺设道路
这道题的算法标签是贪心和树状数组,但我不知道该如何解,这个题是几个月前写的当时没过,当时的想法是把这些道路分成一个一个的区间,然后找到最小值,然后区间的所有值减去这个最小值,然后再分为最小值的左边,右边进行下去,直达全为零。后面发现其实可以用动态规划超级简单,比如5 1 2 3这组数据 第一个坑5天,1<5,所以前二个坑是5天,2>1,那么前三个坑就是5+2-1;就是每个坑都要受到他前面坑的影响,如果小于前面的,那么时间与前一个相同,如果大于,则要加上他们之间的差值。
2024-04-12 16:09:57
245
原创 关于初学者碰到的输入输出问题
3.输出一行,不知道何时结束,每个数据之间用空格隔开,只有一行,那么我们可以以输入换行符为中止,如:给定一个集合 s(集合元素数量 ≤30≤30),求出此集合所有子集元素之和。2.每次在输入数据之前,先输入一个数n,表示有n组数据,如:第一行输入一个数据组数n ,接下来n行每行输入两个整数。while (scanf("%d",&a)==1) //这里是scanf函数的返回值为1,很显然,如果换行后没有输入数据,
2024-01-14 18:41:38
724
1
原创 c语言初学者所容易犯的错误
6.在VS上定义字符串一般都用字符数组,但在vc里面定义字符串可以是char*str="hello",这里强调的就是char str是定义的字符,char*str才是定义字符串,字符串可以用%s输入与输出。7,函数传值与传地址,指针*a是传递的地址,及可以通过函数改变主函数的值,同时,数组做参数,也是地址传递。8.开根号用sqrt函数,而其它幂运算则用pow函数,它们都包含在头文件中。2.scanf(“%,%”,&,&)//引号里面不能有中文。1.scanf函数使用时忘记加取地址符&。
2024-01-10 21:40:46
624
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人