自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 口味王cookie

给儿写的口味王cookie

2022-12-02 11:42:00 1497 1

原创 C++写一个简单的死锁

#include <bits/stdc++.h>using namespace std;mutex m1; // 锁void A(){ m1.lock(); // 上锁发现上不去 m1.unlock();}void B(){ m1.lock(); A(); m1.unlock();}int main(){ thread t1(B); t1.join(); cout << "end" << endl;}...

2022-04-21 10:30:48 1761

原创 从1到n整数中1出现的次数

首先我们想到的是如果一个一个数字去计算, 那么对于这个n的范围是会超时的。 所以是数位dp,按位去计算。class Solution {public: int numberOf1Between1AndN_Solution(int n) { if(!n ) return 0; // 如果当前是0 直接返回0 vector<int> num; // 用来存储数字n的每一位 while(n) num.push_back(n%10), n/

2022-03-08 17:15:41 288

原创 pull别人代码之后修改想上传自己的git仓库出现的问题

我pull了y总的代码之后, 发先push 没有权限,那是因为没有修改git remote,也就是git的地址, 我直接pull下来, git地址自然和y总是一样的, 那么push地址也是y总的, 自然需要修改git remote set-url origin git@git.acwing.com:Fisven/acapp.git这句语句就是修改remote的。可以看到由变成了但是修改之后push仍然会提示错误:之后我询问了群里dl, 找到了一个新的办法(旧的不知道什么原因导致,如果明白的

2022-02-12 16:49:39 849

原创 vector创建二维数组

//创建一个[99][99]的二维数组 vector<vector<int> > f(99,vector<int>(99))f;

2021-12-20 11:06:17 1779

原创 如何获取京东Cookie

一用无痕浏览器打开网站 否则cookie会出现问题https://m.jd.com/二按F12 进入控制界面。并且点击network三点击登陆上自己的账号然后在右边控制窗口找 四找到cookie后全部复制到一个文档中,查找pt_pin pt_key 这两个分号隔开,复制即可。...

2021-12-03 11:28:57 3197

原创 Bitwise Exclusive-OR Sequence

Bitwise Exclusive-OR Sequence题意:有n个点, m个关系 每个关系 a b c 表示点a的值 异或 点b的值,为c分析首先可能是多个图, 对于每个图中的每一位, 取0 或者取1 都是可以确定图上的其他数字取0 或者取1 。 所以我们可以去枚举取0 或者取1 ,来取个min 得到结果。所以这里我们用并查集, 最大数为 2的30次, 所以我们对于每一位都做一个并查集, 就是30个并查集。 f[a] 表示当前位置取1 f[a+n] 表示当前位取0这样就可以枚举区间了。代

2021-11-22 11:24:32 1587

原创 C. Hack it(dp)

参考地址题意f[x] = 十进制下每一位的和。找l r 让 f[l] + … + f[[r] = x , x是题给的数字。数据范围特别大性质①②具体看代码代码#include <bits/stdc++.h>using namespace std;typedef unsigned long long LL;const int N = 35;LL m[N], f[N][N], sum[N], a;// 要开unsigned longlong 否则int main

2021-11-09 11:05:11 498

原创 寻找两个正序数组的中位数

分析:对于两个有序序列, 要求log(n+m) 求出, 那么就优先二分, 其次由于有单调性,所以再次确认是二分。对于两个有序序列, 如何一次能用二分来排除一部分的数, 我们就可以轻而易举 的想到 如果都取中值, 那么就可以更新二分中点, 并且删除 某个log 个数的数。class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& num

2021-10-28 20:19:42 88

原创 E. Bored Bakry

E. Bored Bakry题意:给n个数字,求最长连续的子序列,要求子序列中每个数字的相与和大于 异或和。分析:① 长度必须为偶数,才有可能与和 大于 异或和。证明①: 与为1 那么必须全为1, 当有奇数个的时候,全为一的异或也是1, 所以奇数最好的情况是相等。② 如果对序列求前缀异或,当有两个异或值相同的时候,表面这两个数之间数的异或为0(包含最后一个数字)。证明②: 异或是自己的逆运算。③ 当最高位大于的时候, 后面的值都是无所谓的。证明③: 1000 > 0999所以:

2021-10-16 15:07:04 142

原创 C. Helga Hufflepuff‘s Cup

题意给一棵树, 并且给m个颜色, 让你染色, 有一种特殊颜色k,特殊颜色最短染x个点, 问有多少种染色情况。 结果取模。分析f[ i ] [ j ] [ k] k 可以取0, 1, 2, 取0表示 当前以i为根的树用了j个特殊颜色,并且当前是特殊颜色的情况。 1表示 当前染色小于k,的所有情况, 2表示当前染色大于k的所有情况。需要新开一个数组,否则当前的情况会对后面的情况产生影响。代码#include<bits/stdc++.h>using namespace std;ty

2021-10-13 10:22:35 173

原创 2021-06-21

E. Buds Re-hanging[链接][ https://codeforces.com/contest/1566/problem/E]题意:首先定义花蕾:① 不是根节点② 有至少一个儿子③ 儿子都是叶子节点问, 给定的图 可以移动所有的花蕾, 最后让叶子节点最少,问叶子节点最少是多少?分析我们对于每一个花蕾都拆下来, 将图片拆成好多好多花蕾的情况, 然后我们把他拼接到一个花蕾上,首先拼接的顺序不会影响最后的结果, 因为每拼接一个花蕾,可以让叶子节点少1 !!! 所以我们每求出一个花蕾

2021-09-14 10:34:26 100

原创 1165. 单词环 (AcWing spfa 求负环 + 01分)

求负环模板题 + 小建图技巧。题意: 给几个给几个字符串 如果

2021-03-20 16:52:07 92

原创 序列的美观度

题意:一堆数字,若当前数字等于前一个数字,那么美观度加一,你可以删除一些数字,问给定的序列的最大美观度。题解判断是否 当前数字是第一次出现。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+6;ll n;ll a[maxn], pre[maxn], f[maxn];int main(){ cin >> n; for(int i = 1

2021-03-08 20:12:33 173 1

原创 最长公共上升子序列(dp)

题意题意如,题目所言。思考过程与闫氏dp分析f[i][j] 表示a串 前i个 b串前j个 且最后一个字母等于b[j]的 最长公共上升子序列。所以当遇到a串的第i个字母时,b串为第j个字母时如果不相等,f[i][j] = f[i-1][j]如果相等 那么寻找前一个相等的字母,实现前一个的数量+1for(int j = 1; j <= n; j ++) // 遍历b子串的字母 { f[i][j] = f[i-1][j]; // 首先当前字母不同的时候,由前一个推导

2021-03-08 19:08:42 156

原创 牛客 - 星星

题意:牛牛带着他的小伙伴跑去天上摘星星了。每一只牛都摘了一堆星星,由于他们去的区域不同,所以所摘的星星数量也不同,但是他们是相亲相爱的一家人,所以他们围成一个圈(按顺序编号11到nn,第ii只牛牛有a_iai​ 颗星星),他们想办法将星星数量均分,但是牛牛们的手很短,每次只能跟相邻的一个人进行交易, 现在问最少需要交易多少次,每个人才能获得相等的星星,题目保证有解。题解:之后由于推导就得到了答案是t序列中找个点,到t序列每个点的距离的最小值。#include<bits/stdc++.

2021-03-08 10:47:28 131

原创 GameGame

题意:有很多数字,你和对手一次拿一个,将拿到的数字与你已经有的数异或,得到新的数字,问 最后你赢还是对手赢,还是平局。题解思考:博弈论, 异或性质 1 ^ 1 = 0; 1 ^ 0 = 1;异或是自己的逆运算,所以当异或两个1 时等于没有异或。问最后的谁的值大。 那么我们可以从最高位的1的个数来入手。① 当最高位1的个数是偶数个,那么这一位是平均, 两人一定会各拿一半的1。② 如果最高位1的个数是奇数我们来分情况看:有零个1, 平局, 同①。比如有 一个1, 剩余有好多零, 那么先手胜

2021-03-06 17:24:37 301

原创 C. String Transformation 1

题意思:有字符串AA,BB,每次在AA中选取若干个相同的字母(设为xx),改成另一个字母(设为yy),需要满足x<yx<y,问将A改成B的最少操作。题解:例如第一个样例, 此时A要到B, A也要到C,B要到C。那么我们可以将A都到达B,然后搭乘B到C的车,顺便完成A到C。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+6;ll t, n;s

2021-03-06 16:19:53 245

转载 c++如何写一个测试数据生成的代码

#include <bits/stdc++.h>using namespace std;int main(){ freopen("test.in","w",stdout); // 这里的意思是生成一个以.in结尾的文件,下面是文件的内容 for(int i=0;i<1e4;i++) cout<<rand()%10000<<endl;//随机生成10000个数 return 0;}上面

2021-03-02 16:55:23 2249 1

原创 D2. Painting the Array II

题意: 尽可能让最终输出得小。思路: t1 与 t2 分别是两个数组得最后一个元素,当a[i] 与 t1 或者t2 相等时,那么一定不会使结果加一, 否则一定使结果加一。当结果必加一时分情况, 当前a[i] 如果在之前出现过, 那么当前这个值,是否可以加到之前出现得a[i] 之后呢1 如果可以: 代表之前出现的a[i] 与现在出现得数之前出现的数,一定是放到t1 或者t2 都是无关紧要得,那样就可以随便放, 让当前数与a[i] 相邻, 那么可以知道,当前t1 使a[i] , t2是a[i-1]

2021-02-08 14:28:11 502

原创 D. Cleaning

题意:给一个序列,你有一个操作且只能操作一次,就是交换两个相邻的数字,然后如果序列中可以实现无限次的相邻的数字减一,如果可以最终序列全为0则输出yes 否则no思路 : 由于如果有空的情况就是a1,0,a2。。这种的,a1与a2不相邻,所以一定是no 那么我们只有两种删除的方向,一个从开始到最后,一个从最后到开始。进一步思考 那么如果有后一个数字大于前一个数字,我们从前往后就会出现后一个为0,前一个还不为0的情况,所以一定不可能。同理从后往前删除是一样的情况a1 = suma2-a1 = s

2021-01-20 15:38:49 498 2

原创 C. Ivan the Fool and the Probability Theory

C. Ivan the Fool and the Probability Theory题意: 给n行m列,让构造黑白块,要求每个块周围最多一个和自己颜色相同的块,问最多有多少种构造方法?思考 : 首先如果第一行是这样的话,那么下面的每一行一定都确定了因为有两个相同的颜色出现,但是如果是这样黑白相间的情况的话, 那么第一行确定的话,第二行就会有两种情况,第一种是和第一行一样,第二种是和第一行完全相反。黑白相间的情况有两种,黑白黑白黑 和白黑白黑白 这两种当两种情况任意一种出现的时候,他的种类数就

2020-12-30 13:20:49 202

原创 D. Ceil Divisions

D. Ceil Divisions题意: a[i] = i 一共有n个数字, 操作最多操作n+5次,让数组a 变成一个2 和剩下全部是1题解:首先我们如果要最后单独处理n的话一定会大于n+5次的,因为只剩下一个2 与一个n, 所以我们要在处理中间的数字的时候顺便处理n, 那么我们处理几的时候,处理n用的步数最少呢, 自然是根号n+1 。具体为什么要加1 因为可以省去一些判断。。。。然后我们从后遍历,遇到根号n+1, 则用根号n+1 处理了n,然后将根号n+1 变为现在的n 找 根号下根号n+1 ,

2020-12-29 13:32:49 527

原创 2020-12-26

A - 铅氘蹄 CodeForces - 1389A题意:给l和r 求ab 并且a和b的最小公倍数也在l 到r 的区间中#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+6;ll n, m, t, l, r;ll a[maxn], b[maxn]; int main(){ cin >> t; while(t --) { cin &g

2020-12-26 11:30:45 154

转载 B. Dreamoon Likes Permutations

题意 :给一个长为n 的序列,然后要求分为两个长度大于1的序列,然后两个序列必须每个元素出现过一次,并且最大值等于序列的长度思路我自己用的特判,样例2wa到自闭,然后看大佬的, 大佬用set来存重复的数字, 当没有重复的数字的时候,判断两个set的大小和两个set 的最大值是否相等,若相等,代表成立则保存,具体看代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e

2020-12-25 16:33:54 147

原创 2020-12-24

C. p-binary题意: 给n 和p 构造多个 (2^x + p) 这样的数的和等于n 问最小多少个这样的二进制数题解:所以我们将 枚举t 即可但是枚举的时候有个坑,有可能当前的二进制值可能用多个具体看代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+6;ll n, p;int main(){ cin >> n >&gt

2020-12-24 14:13:35 116

原创 C. Peaceful Rooks

题目链接 https://codeforces.com/contest/1465/problem/C题意:给定n*n的棋盘, 然后有m个車, 每一次操作只能左右 或者上下走直线,然后如果有两个車在同一行,或者同一列,那么就失败了。问我们成功将所有車放到对角线的最小的步数理解由于初始情况不会出现同一行或者同一列,那么我们可以知道,一行最多有1个車, 那么 理想的情况下,每个车只用一步就可以到达对角线,但是不理想的情况是什么呢?这种情况的话就不可以一步到达, 那么最多就再加一步, 就可以将所有.

2020-12-21 16:30:46 766

转载 C. Buns

题意:题意:面包师Lavrenty打算用馅料做几个面包,然后把它们卖掉。Lavrenty有n克面团和m种不同的馅料。馅料种类的下标从1到m,他知道他的第i种馅料剩下ai 克,做一个第i种馅料的面包,恰恰需要bi克的i种馅料和ci克的面团,同时这种面包可以卖di块钱。他也可以做没有馅的面包。每个这样的面包需要c0克面团,可以卖d0块Tugrik。所以Lavrenty可以做任何数量的包子,用不同的馅料或者不用馅料,除非用完了面团和馅料。Lavrenty会扔掉烘培面包后剩下的所有多余材料。求出Lavrenty

2020-12-10 11:08:49 235

原创 Codeforces Round #672 (Div. 2) C

动态规划解, 具体步骤看文章代码注释#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+6;int t, n, q;ll a[maxn];int sum[maxn];ll dp[maxn][2];int main(){ scanf("%d",&t); while(t --) { scanf("%d%d",&n,&q);

2020-10-29 11:18:34 184

原创 力扣 5544.执行操作后字典序最小的字符串

让枚举最小字典序, 由于string可以直接比较字符串的字典序。① 让奇数位字符加a ,用到函数updata 具体看下面实现,加上’0’就可以转换为string类型!!!很神奇。②后移b位可以用函数substr实现,具体看代码。class Solution {public: void updata(char& s, int a) { s = '0' + (s - '0' + a)%10; } string f

2020-10-19 10:27:19 323

原创 Educational Codeforces Round 96 (Rated for Div. 2) - D

思路:遍历一次, 从前到后记录,由于目标是删除一个,然后删除前导0或者前导1, 所以如果我们遇到前导是两个或者两个以上, 我门直接删除即可,否则的话,就去遍历后面的寻找个数大于一个的数字,然后删除其中一个,如果找不到, 则直接删除即可,具体看代码注解:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+6;int t;char s[maxn];//输入的字符串in

2020-10-17 20:41:10 126

原创 完美的代价 (蓝桥杯)

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+6;int a[27];int n;char s[maxn];int main(){ scanf("%d",&n); int len = n; scanf("%s",s+1); for(int i = 1; i <= len; i ++) { a[s[i] - 'a'+1] ++;

2020-10-16 20:51:31 436

原创 codeforces 1426D(思维)

题意:学长是个1,所以他非常不喜欢0,他的目标是消灭数组中所有的0, 有一个数组a,其中不存在a_i=0,但是丧心病狂的TA觉得这还不能够满足 即使是这个数组的任意子段的和为0也是不能接受的。 他可以往数组中的任意位置插入任意大小的数,请问最少插入几个数后才能成为的理想数组(即不存在子段和为0的情况)解:用set存,由于set有count函数,可以直接统计某个数字出现的次数我们先将0 存入,再将每个数字前缀和存入,如果前缀和出现两次,代表我们必须插入一个大数字,或者0出现了一次,我们得插入一个大数字

2020-10-03 15:40:49 231

转载 POJ-1338-Ugly Numbers-丑数

POJ-1338-Ugly Numbers-丑数我们要筛选质因子只有2,3,5的数这种数字有个特点:_______________数 = 2^a × 3^b × 5^c所以我们创建一个数组准备存储这些数字,可知这些数字都可以背2或者3或者5整除, 所以我们就可以想到从最小的几个数字来乘2,3,5 来得到整个数组:_____________具体的实现看下面代码注解// An highlighted blockvar foo = 'bar';...

2020-08-09 17:54:31 185 2

原创 田忌赛马 {dp}

**田忌赛马**原题链接田忌赛马思考:int f[i][j];i场比赛用了j匹差马 此处差马的意思是从田忌后面用的马的数量状态转移方程:f[i][j] = max(f[i-1][j]+cost(i-j,i), f[i-1][j-1]+cost(n-j+1,i));说实话我也不知道怎么得出来的,但是当我看题解的时候发现他说的很有道理。。。玄学吧可能是#include<iostream>#include<cstdio>#include<algorithm&..

2020-08-03 20:24:00 279

原创 K-th Number ---newcoder【自己的理解】

题意:在给定的数组中找出所有区间的第k大的数 全部放入另一个数组中 然后求另一个数组中的第M大思路:用二分的check(mid) //这里是一个二分模板之一;思路:因为要在给定的数组中找出所有区间第k大的数,并且全部放入另一个数组之后要第M大, 我们就假设 mid 就是那个第m大的值,那么一定有m-1个值mid 大,所以我们的check(mid) 就是检查是否有m-1个值比mid大, 这里二分思想,如果有那么应该取mid - r 之间否则取l - mid 之间!具体check(mid)如何检查第

2020-07-28 15:59:53 198

转载 HDU 3038How Many Answers Are Wrong(带权查并集)

How Many Answers Are Wrong输入10 51 10 1007 10 281 3 324 6 416 6 1解释: 10个数字, 5次询问;1 10 100 意思是1到10 的和为100以此类推输出1解释: 有一句话是错误的,想法1 10 100 可以看作10比1 大100 所以1要减一如果想合并a, b,最终目的是求a,b,到其共同基准的距离.首先求出a, b的祖宗,即比较标准x, y,默认x认y为爹,(a的祖先认b的祖先为爹)所以a的祖先变成了y

2020-05-16 19:31:55 198 1

原创 Building Block (带权并查集)

G - Building Block// An highlighted blockvar foo = 'bar';6M 1 6C 1M 2 4M 2 6C 3C 4题意:六组操作,M 1 6 就是把方块1 放到 方块6上面, C1 就是查询 1 下面是有几块。

2020-05-14 19:00:18 352

原创 K-th Number(主席树)

# 主席树 自己的理解题意:7 31 5 2 6 3 7 42 5 34 4 11 7 37个数字 3次询问, 7个数字分别是 1 5 2 6 3 7 4三次询问分别:从第二个到第五个数字中间 排第三个多的数字是;以此类推// A code blockvar foo = 'bar';...

2020-05-04 15:32:30 280 3

原创 Codeforces Round #632 (Div. 2)

Codeforces Round #632 (Div. 2)-AA - Little Artem题意:有白色块W,与黑色块B, 当白色块四个方向有黑色块时,才算白色块+1, 同理黑色块相加一也是要四周有白色块。现在给n行m列, 要求白色块数量多余黑色块。分析:刚开始看不懂题 后来知道什么意思,结果陷到了一个破想法里面,我想在最后一行在改变白色黑色块,根据上一行。还要分奇数偶数。太...

2020-04-09 15:49:59 182 1

软工导论实验报告中北大学.zip

软工导论实验报告中北大学.zip

2021-06-21

操作系统中北大学总复习实验报告

操作系统中北大学总复习实验报告

2021-06-21

空空如也

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

TA关注的人

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