study
erci_fc2336
我今天一定努力੭ ᐕ)੭*⁾⁾
展开
-
C++关于精准计时
最近在做数据抓取的时候遇到这个问题,对文件中特定数据进行提取的时候,要求每25ms更新一次容器内容,主线程则是25ms读取一次容器内的数据。原创 2022-10-12 17:29:05 · 623 阅读 · 1 评论 -
CRC校验原理及步骤
原博主写的太赞了!转载一波版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/D_leo/article/details/73572373转载 2022-03-14 16:58:08 · 69694 阅读 · 8 评论 -
关于iostream.h与iostream的区别
iostream.h与iostream的区别:iostream.h里面定义的所有类以及对象都是在全局空间里,所以可以直接用cout 。但在iostream里面,它所定义的东西都在名字空间std里面,所以必须加上 using namespace std;才能使用cout。(C++中一个带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者改进很多之外,还有一点就是后者很多东西都定义在“std”名字空间中。)iostream要使用更新的编译原创 2022-03-12 09:47:55 · 5436 阅读 · 0 评论 -
P2430 严酷的训练
传送门思路:求最大奖励值就可以转换成费用为 p[ i ].a,价值为 p[ i ].b ,求最大价值的问题。这道题就转化成了在一定大小的背包内(即规定时间内)可以装下的最大价值的物品, 变成一道01背包的问题。 WKY花费时间的倍数×老王做题时间 = WKY做题用时。accode:#include <bits/stdc++.h>using namespace std;#define max(a,b) (a)>(b) ? (a) : (b);typedef long lon原创 2022-03-12 09:00:05 · 232 阅读 · 0 评论 -
P3370 字符串哈希
传送门accode:#include <bits/stdc++.h>using namespace std;typedef unsigned long long ull;const ull seed = 13131313131;const int maxn = 1e6 + 10;ull a[maxn];char s[maxn];int n, ans = 1;int prime = 2333317;ull mod = 212370440130137957ll;ull ha原创 2022-03-12 08:44:16 · 141 阅读 · 0 评论 -
最小堆法求top(k)问题
最小堆法 这是一种局部淘汰法,先读取前 K 个数,建立一个最小堆,然后将剩余所有数字依次与最小堆的堆顶进行比较,如果小于或等于堆顶数据,就继续比较下一个;否则,删除堆顶元素,并将新数据插入堆中,重新调整最小堆。当遍历完全部数据后,最小堆的数据即为最大的K个数。代码模拟(带注解,len和k值取得较小,仅做思路学习使用,问题里是无限流输入,可以使用STL的优先队列构建堆去维护,符合Leetcode 703. 数据流中的第K大元素的代码放在“算法与数据结构”的整理里):#include<bits/st原创 2022-03-11 08:18:42 · 393 阅读 · 0 评论 -
洛谷P3383 线性筛素数
学习线性筛素数模板#include <bits/stdc++.h>using namespace std;int n, q, check[100000010], cnt = 0;int prime[1000010];//用0表示素数int main(){ scanf("%d %d",&n,&q); check[1] = 1; for(int i = 2;i <= n; i++) { if(!check[i]) prim原创 2022-03-11 08:19:09 · 234 阅读 · 0 评论 -
hdu4 1001 Calculus
题意:判断所给函数是否收敛思路:判断字符串里系数是否为0accode:#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <math.h>#include <map>using namespace std;typedef long long ll;int main(){ int T, l原创 2022-03-10 08:55:25 · 88 阅读 · 0 评论 -
hdu6 1001 Yes, Prime Minister
思路:素数筛+二分Accode:#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <math.h>#include <map>using namespace std;typedef long long ll;const int maxn = 1e8 + 10;bool vis[maxn];int原创 2022-03-10 08:53:59 · 113 阅读 · 0 评论 -
hdu6 1005 Median
accode:#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <math.h>#include <map>using namespace std;typedef long long ll;int main(){ ios::sync_with_stdio(false), cin.tie(.原创 2022-03-10 08:51:35 · 115 阅读 · 0 评论 -
hdu8 1006 GCD Game
题意:爱丽丝和鲍勃正在玩游戏。 他们轮流操作。有n个数字,a1,a2,…,an。每次,玩家分3 步进行游戏。1.任意选择一个数字ai。2.任意选择另一个数x(1≤x<ai)。3. 用 gcd(ai,x) 替换数字 ai。这里,gcd(u,v) 指的是 u 和 v 的最大公约数。 当玩家不能移动时,他/她就输掉了游戏。爱丽丝先走,她让你告诉她,如果两个玩家都有最佳策略,谁将赢得比赛。思路:每次的操作都分为三步,要将其转化为自己的一个因数,那么对于某一个数字而言,它最多可操作的次数就取决于自己有原创 2022-03-10 08:48:06 · 4208 阅读 · 0 评论 -
hdu9 1002 Just another board game
题意:一棋子初始位于(1,1),A先手,A可以横移棋子,B可以竖移棋子,或者,到某人行动的时候可以立刻终止游戏。游戏执行k轮后会结束。最终棋子停留的底下的值为最终得分,A目标是最大化,B目标是最小化。求最终答案。思路:accode:#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <math.h>#include原创 2022-03-10 08:45:49 · 4202 阅读 · 0 评论 -
多校训练1 A Alice and Bob 博弈
比赛时推了个假规律……但大体就是先求必败态全集,然后所有属于这个集合里的输入都是先手必败,其余情况先手胜。首先发现{ 3 , 2 } 先手必败,{ 2 , 3 } 也是,(现在省略对称部分),那么,所有可以一步推导为{3, 2 } 的就是先手必胜。能一步推导为{ 3 , 2 } 的状态{ x , y } 有一个规律:( x − 2 ) ∣ ( y − 3 ) 或( x − 3 ) ∣ ( y − 2 ) (a ∣ b 代表a可以整除b, b = ka)通过{ 3 , 2 } 这个状态.原创 2022-03-10 08:37:35 · 949 阅读 · 0 评论 -
多校训练1 B BaDropping ...
利用两对相似三角形分别求出未知数x, y, z;所求的高度为r + x,将其输出accode:#include <bits/stdc++.h>using namespace std;#define endl "\n"int main(){ std::ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); double r, a, b, h; cin>>r>>a>>原创 2022-03-10 08:34:39 · 78 阅读 · 0 评论 -
多校训练1 D Determine the Photo Position ...
思路:找出每行中每个连续0字符段,然后计算可以摆放的方案数,每一个连续段可以摆放的条件是cnt >= m,可摆放的个数 = cnt - m +1。注意判断一下是否结算完毕(切换到下一行之前要结算这一行最后一个连续串)accode:#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <bits/stdc++.h>原创 2022-03-10 08:33:19 · 91 阅读 · 0 评论 -
多校训练1 F Find 3-friendly Integers 找规律
分析:易发现100以内有76个数,而大于100之后总能找到条件让其成为 3-friendly Integers,所以大于100 的每个数都是3-friendly Integers。10内有3、6、9、10;10 < i<= 100里 以3,6,9开头的一组10个,10个都属于 3-friendly Integers,其余一组有7个,加起来刚好76个数(4 + 42 + 30) 。用for循环将1-100内1-i对应的 3-friendly Integers个数保存。accode:#inc原创 2022-03-09 17:54:17 · 125 阅读 · 0 评论 -
多校训练1 H Hash Function 快速傅立叶变换
题目大意:对于给出的数组 S,要求找一个最小的模使得所有的s[ i ] % mod != s[ j ] % mod;(0 <= i < j < n)题目转换为判断任意 |s[ i ] - s[ j ] | % mod != 0数组长度为n,易得mod取值应大于 n,否则取模后一定会出现相同值。而当 mod 大于 s[ i ] 时,此时 mod 再增大,s[ i ] mod 后的值也是一样的,不会变,所以我们找 mod 的范围就确定在 n 和 S 数组最大值范围之间,然后暴力寻找。(原创 2022-03-09 17:53:09 · 107 阅读 · 0 评论 -
多校训练1 G Game of Swapping Numbers 贪心+数论
思路:题目要求∑1≤i≤n∣Ai−Bi∣\sum_{\mathclap{1\le i\le n}} |A_{i}-B_{i}|1≤i≤n∑∣Ai−Bi∣对换k次b数组元素后,形成的A, B数组会形成n对被减数与减数,最终要求的结果就等于这 n 对的相减之和。进行被减数与减数的判断:a、b 两个数组内的 2n 个数存入 arr 数组中,以从小到大形式排列,以中间值 arr[cnt / 2] 进行划分,将 a 数组所有的被减数(大于arr[cnt / 2] 的元素)以原来的形式存入 c 数组中,充当减原创 2022-03-09 17:51:08 · 83 阅读 · 0 评论 -
多校训练1 K Knowledge Test about Match ...
题目大意:给了两个序列a、b,a序列是1 - n,b序列为随机序列(bi范围:1 - n)可以任意交换b序列,使得以下loss函数值最小。但题目不要求精准答案,只要满足:所以我们可以直接贪心,先double一个s数组,让s[ i ] = sqrt( i );然后去遍历几遍,当s[ abs(i - b[ i ]) ] + s[ abs ( j - b[ j ]) ] > s[ abs(i - b[ j ]) ] + s[ abs( j - b[ i ]) ]时交换b[ i ] 、b[ j ]原创 2022-03-09 17:48:18 · 131 阅读 · 0 评论 -
多校训练2 K Stack 模拟
题目分析题目大意:将1-n元素以某个排序方式入栈,若栈顶元素大于要入栈的元素,则将栈顶元素弹出,有一个数组b[ ],在每次入栈完成后都会有b[ i ] 记录当前栈的元素个数,题目给出元素个数 n 和部分 b[ i ]试构造满足条件的入栈顺序并输出(注意:不止一种可能de入栈顺序,可自行构造)。思路:①对于b[ ]数组我们可以确定在最右出现的 b[ i ] = 1处 元素1入栈,同理次右或最右b[ i ] = 2处元素2入栈。且易得出合法的b[ ] 数组,它一定满足b[ i ] - b[ i - .原创 2022-03-09 17:44:33 · 81 阅读 · 0 评论 -
多校训练3 E Math 数论
打表的时候发现了大部分是呈三次方关系,但是没发现剩余部分的规律……补题补题打表输出x、y:多数呈y=x3y = x^3y=x3然后将不规律的部分单独拿出来观察:发现 8 - > 30 -> 112 -> 418 -> 1560 -> 582227 -> 240 -> 213364 -> 1020125 -> 3120216 -> 7770……可以发现:每一个序列都以之前的 y(三次方)开头,且ai+1=ai(y)×(x2)−a原创 2022-03-09 17:44:22 · 133 阅读 · 0 评论 -
多校训练2 I Penguins BFS
找最短路径,采用bfs要求输出最小字典序,则对路径搜索的方向顺序进行固定,保证D<L<R<U在设置无效操作和四个方向时,要特别注意企鹅 1 和 2 的镜像性。且注意题目的x, y(行、列)建立是x向上递减, y向左递减,x, y与四个操作的关系,D(1, 0), L(0,-1),R(0, 1),U(-1, 0)。其余分析在代码注释中accode:#include <bits/stdc++.h>using namespace std;#define endl "原创 2022-03-09 17:44:12 · 96 阅读 · 0 评论 -
多校训练2 C Draw Grids 找规律/枚举
这道题就是找满足题目条件且能连接的最多连线数目,且题目保证1<= n, m <= 4。最多连线数目就等于 n * m - 1,当最多连线数为奇数时输出YES,否则输出NO。wa了一发是觉得n = 1, m = 1时就一个点不存在能连成线的条件所以没考虑,当n = 1 && m = 1时要输出NO。以后尽量多考虑到这些个别情况。accode:#include <bits/stdc++.h>using namespace std;typedef long原创 2022-03-09 17:43:59 · 146 阅读 · 0 评论 -
多校训练1 I Increasing Subsequence 期望dp
题意:有一个1 - n 的全排列 P,Alice 和 Bob 按顺序依次选数,刚开始可以选任意一个数,要求之后选的数的值和在序列中位置要大于之前所选的所有数,问可能的期望回合数是多少,并按A × B ^ (mod-2) % mod 输出。答案应该是 每一种可能的总回合数 / 可能的总数 (sum[ i ] / cnt)期望dp,用dp[ i ][ j ] 表示上一轮对手选了 i,这一轮我选 j 的期望轮次。A/B → A × B ^ (mod-2) % mod,用逆元表示这里的B ^.原创 2022-03-09 17:43:45 · 123 阅读 · 0 评论 -
多校训练3 J Counting Triangles (同色三角形)
题意:一个有n个顶点的无向完全图,图形的每一条边都涂成黑色或白色,求同色三角形个数。题目提供的代码中的边数组存储图形中边的颜色。边[i][j]=1表示从i到j的边为黑色,否则为白色。确保有一种不依赖于数据生成方式的方法。思路:求同色三角形的个数,可以通过用 三角形总个数 - 异色三角形个数 得到。三角形总个数 = n *(n - 1) * (n - 2) / 6;异色三角形个数:判断一个顶点是否连出去异色的边,如果一个顶点连出异色的边,那么对于该点异色三角形个数就是黑边数 * 白边数 / 2;(.原创 2022-03-09 17:44:48 · 251 阅读 · 0 评论 -
codeforces 1421 Putting Bricks in the Wall
B Putting Bricks in the Wallhttps://codeforces.com/contest/1421/problem/B题意:平克·弗洛伊德跟罗杰·沃特斯开玩笑,他们知道沃特斯不喜欢墙壁,他希望能够自由行走,所以他们阻止他离开他的房间,这个房间可以看作是一个 n×n 的正方形网格,他希望从左上角(1,1)到右下角(n,n)遍历网格。只要沃特斯还在网格中,他就可以从一个正方形移动到另一个相邻的正方形。除单元格(1,1)和(n,n)外,每个单元格都有一个值 0或1。在开始遍原创 2022-03-06 19:34:03 · 140 阅读 · 0 评论 -
多校训练4 F Just a joke ...
题意:在一个有 n 个点的无向图G上,有 m 条边,然后 Alice 和 Bob 先后操作选其一:①任意删边②删去不成环的连通分量,当有一方操作不了则比赛结束,输出获胜方名字,A先手。发现任意情况下,都是在n + m 为偶数时 Bob 赢,为奇数时 Alice 赢。accode:#include <stdio.h>#include <iostream>using namespace std;int main(){ int n, m, a, b; .原创 2022-03-06 19:32:11 · 116 阅读 · 0 评论 -
hdu1 1001 Mod, Or and Everything 找规律
打表,i从小到大表达二次方,发现输入的n<2in < 2^in<2i时,输出结果为2^(i-1) -1accode:#include <stdio.h>#include <string.h>#include <iostream>#include <vector>#include <algorithm> using namespace std;typedef long long ll;const ll maxn原创 2022-03-06 10:12:47 · 81 阅读 · 0 评论 -
hdu1 1005 Minimum spanning tree 线性筛+前缀和
题意:给定n-1个点,编号从2到n,两点a和b之间的边权重为lcm(a,b)。请找出它们形成的最小生成树。 (2<=n<=10000000)思路:要让lcm最小,容易想到一种是包含关系,即lcm(a, b)==a, 让每个数向其约数连边。对于没有约数的质数,将其与2相连是最优的,因为在> 不能包含的情况下,最小的倍数就是2倍。总的边权和为(质数的和×2+合数的和),可以用线性筛法预处理出前缀和,复杂度O(n)。accode:#include <stdio.h&g.原创 2022-03-06 10:11:57 · 73 阅读 · 0 评论 -
多校训练2 F Girlfriend 数论(球冠)
思路:题目所求的相交体积就是以ZYT和ZFeT位置为球心的两个球体的重合部分体积。利用公式推导出ZYT和ZFeT所处位置,即球心,求出半径。两球相交求体积:精度不够,加上取的变量名相似,出错不易检查,wa了两发…accode:#include <bits/stdc++.h>using namespace std;const double pi = acos(-1.0);int T;double x[4], y[4], z[4];double k1, k2;i.原创 2022-03-06 10:11:42 · 171 阅读 · 0 评论 -
多校训练9 H Happy Number 找规律
题意:设定一个数字,如果它只由2、3、6构成,则称它为happy数,题目要求从升序的1-n排列里,找到指定的第n个happy数,输出它的值。分析:每个范围内的happy数个数是可以划分确定下来的,一位数范围内有3个,两位数范围内3+9个,三位数范围内3+9+27个……以此类推。2-6,22-66,222-666,2222-6666,每次都以n位2开始,以n位6结束,求第n个happy数的位置,我们可以先算出前面满层的层次个数 ans = pow(3, len) - 3 / 2,可以推出第n个happ.原创 2022-03-06 10:11:31 · 148 阅读 · 0 评论 -
多校训练8 K Yet Another Problem About Pi 思维/贪心
题意题意:有一段 π km 长的行驶距离,在行驶图中用经纬线将地区划分成一个个区域,行驶的路线要求连续,可以是折线、曲线甚至闭合,问最多能通过多少个区域。思路思路:从题目易得,最少也可以经过四个区域,从一个点出发,我们可以移动微小的距离(小到不影响精度范围内,而且因为 π 是无理数,可以理解为其极后的一个数位发生了变动,可以不计)来直接访问周围的 4 个区域,显然,这是最优的。之后的路线我们可以选择沿 fi = min(w, d)到达一个新点,触发两个新区域,或者沿斜对角线 fj = sqrt(原创 2022-03-06 10:11:18 · 82 阅读 · 0 评论 -
多校训练6 I Intervals on the Ring 找规律
题意:有一个数字环,首尾相连,Yukikaze有m个区间(l, r),保证这m个区间互不相交,要求构造一组区间,使其交集是m个区间的并集。注:(l, r)(if l <= r ) 表示 l, l + 1, l + 2, ………r(if l > r ) 表示 r, ……, n, 1, 2 ,……l思路:画出数字环,试着构造这组区间。当m个区间只有一个数时,输出为这个数,格式为 i i当m个区间并集为多个数时,将并集内的数排序,这里用到set去重且自动从小到大排序的特点,将并.原创 2022-03-06 10:11:04 · 79 阅读 · 0 评论 -
多校训练6 H Hopping Rabbit 矩形取模+扫描线
补题ing 参考资料:扫描线问题转化关于扫描线部分的学习放在散题里。题意:给出平面上的n个矩形,一只兔子从(x0+0.5,y0+0.5)(x_0+0.5,y_0+0.5)(x0+0.5,y0+0.5)出发,每一次可以平行于x轴或y轴跳跃 d 的距离,求出一个初始位置使得它不管怎么跳都不会跳入到陷阱中。注意只有着陆点在陷阱里才算落入陷阱,在空中越过陷阱不算。数据范围 n, d <= 1e5,平面坐标在-1e9 到 1e9当中。分析:在d × d的正方形,有没有一个点没有被移动过的原创 2022-03-06 10:10:48 · 87 阅读 · 0 评论 -
多校训练5 H Holding Two ...
构造一个 n × m 的01矩阵,要求在矩阵里不同的三个元素 (|i1-i2| = |i2-i3| <= 1,|j1-j2| = |j2-j3| <= 1)没有一组满足试着构造,发现上下规律为010101,对角线规律为11001100,做出来完整的矩阵就为0011001111001100001100111100110000110011110011000011001111001100按照这个样子构造即可accode:#include <bits/stdc++.h.原创 2022-03-06 10:10:12 · 101 阅读 · 0 评论 -
多校训练6 F Hamburger Steak 贪心+构造
题意:给定 n 个牛排,m 个锅,每个牛排需要煎ai分钟,一个牛排可以一次煎,也可以分成两次煎,要求煎的总时间最小,构造一组方案,需要输出每个牛排,在几个锅(最多两个)里煎,要输出,在哪个锅煎,煎的开始时间,结束时间,同时满足时间总和最小。思路:先确定所用的最少总时间:所用的最少总时间(每口锅烹饪的肉饼最长时间maxx)为:max(肉饼中的最长烹饪时间,每个锅的平均时间)= max(maxai, sum/m)然后开始构造,从第一个锅开始,当前锅所用时间设为t,初始为0,当 t + a[ i ] &.原创 2022-03-05 10:22:16 · 134 阅读 · 0 评论 -
多校训练6 C Delete Edges 组合问题
题意:有一个n个点的完全图,要求若是三个点之间的边可以组成三角形就删去此边,直到边的总数小于点的总数即完成操作,输出操作次数和每次选择的三个顶点。思路:将问题转换成三个数的组合问题,保证每次组合的三个数两两之间仅出现一次即成立。accode:#include <iostream>#include <stdio.h>using namespace std;typedef long long ll;int main(){ int n, a.原创 2022-03-05 10:22:00 · 73 阅读 · 0 评论 -
多校训练5 K King of Range 单调队列
King of Range分析双指针+单调队列双端队列分析题意:在有n个数的序列里,有m组询问,每次询问给出一个常数k,求有多少(l, r)区间满足极差大于k,输出这样的区间个数。思路:用两个单调队列分别维护最大值和最小值,每次固定左边界,只需要寻找满足条件的最小的右边界,后面的都满足,加上差值即可。(n - r +1)accode:双指针+单调队列#include <bits/stdc++.h>using namespace std;typedef long long原创 2022-03-05 10:21:44 · 92 阅读 · 0 评论 -
多校训练4 J Average 二分
题意:有一个 n * m 的矩阵W,两个序列a、b(长度分别为n、m),每一个 Wi,j=ai+bjW_i,_j = a_i+b_jWi,j=ai+bj。要求出满足行长度不小于x,列长度不小于y的子矩阵,使其平均值最大,输出这个平均值。思路:观察可以发现这就是求两个序列a、b分别的最大平均值,且要满足 a 取的长度不小于x,b 取的长度不小于y,然后将求出来的两个平均值相加即是所求的结果。将问题转化为求序列的最大平均值:采用二分。代码里我是用 a、c 数组存两个序列核心代码:.原创 2022-03-05 10:21:22 · 92 阅读 · 0 评论 -
多校训练5 B Boxes 概率期望/数学
题意:有 n 个盒子,里面有一个白球或黑球,是白球的概率是1/2,开每个盒子的代价是wi,可以选择用 c 的代价问 Gromah盒子里的黑球总数。问:可以确定所有盒子里的球的颜色的最小代价是多少并输出,结果要求误差小于10^-6。两种方案:一种是不问Gromah,开所有的盒子即确定所有盒子里的球的颜色。另一种是最开始就问Gromah何求的总个数,然后将w序列从小到大排列,求最小的代价的期望。从前往后开,只需要开到sum_i为止的条件是,从i到n(之后)的盒子球全是同色的。概率为 1.0/pow(2.原创 2022-03-05 10:20:24 · 112 阅读 · 0 评论