自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2018南京icpc J:Prime Game

待补

2021-05-06 19:03:36 111 1

原创 2018icpc南京E - Eva and Euro coins

https://codeforces.com/gym/101981/attachments/download/7891/20182019-acmicpc-asia-nanjing-regional-contest-en.pdf题意:给你两个01串,然后连续k个0可以翻转为1,连续k个1可以翻转为0.问你这两个01串是否可以变成相同的串题解:我们假设k为4 那么10000可以变为11111 再变为00001 所以如果有连续k个相同字符的子串 可以将它移到最前面 或者直接消去 判断剩余字符串是否相等用两个

2021-05-05 23:25:11 110

原创 2019icpc徐州E题Multiply(pollard_rho)

https://nanti.jisuanke.com/t/42544pollard_rho板子#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 7;ll x, y, a[N];ll t,n;ll max_factor;struct BigIntegerFactor { const static int N = 1e6 + 7; ll prime[

2021-05-01 16:24:19 120

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

https://leetcode-cn.com/problems/median-of-two-sorted-arrays/数据范围很小 可以直接排序nlogn过 还在想为什么是hard= =On的想法就是两个指针扫 也不难logn想法也不难 就是二分 但是边界问题鲨我 调了半天 给爷调吐了因为给的是有序序列 如果要找第k个数字的话 可以每个序列取第k/2数字比较 较小的那个是没有可能成为第k个数字的 所以可以排除掉 不断排除 不断移动指针 便可以求出答案class Solution {publi

2021-04-26 00:13:55 75

原创 leetcode5. 最长回文子串

https://leetcode-cn.com/problems/longest-palindromic-substring/一个dp题 有个坑点 是从小的字符串转移到大的字符串 所以循环的时候不能直接遍历两层字符串 需要第一层为长度 才能从小到大遍历 否则会有无法更新的情况习惯用马拉车算法 竟然连dp都不会写了class Solution {public: string longestPalindrome(string s) { int dp[1050][1050];

2021-04-26 00:07:35 40

原创 树的直径

树上直径求法void dfs(int u,int fa,int s){ if(s>maxm){ maxm=s; st=u; } for(int i=head[u];i;i=e[i].nxt){ int v=e[i].to; if(v!=fa){ dfs(v,u,s+1); } }}dfs(1,0,0)之后dfs(st,0,0)dfs的中途可以维护关系...

2021-03-20 00:21:51 74 1

原创 CSU2021寒假结训比赛

已经习惯被吊打了.jpgAA题经典spfa判环 没什么说的 这数据量dfs也能做? 惊了http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1978#include<bits/stdc++.h>using namespace std;typedef long long ll;#define inf 0x3f3f3f3f#define endl '\n'int n,m;double mpa[550][550];d.

2021-03-15 15:11:44 131

原创 Codeforces Round #703 (Div. 2)D. Max Median(二分)

题目大意:给出一组序列 让求出一组子序列 其中位数的值最大 且长度不小于k 问中位数最大值为多少思路:看到最大值 首先想二分 二分中位数的值 那么如何判断是否符合呢首先我们观察中位数 假如中位数的值为a 那么可以发现大于等于a的数值的数量一定会大于小于a的数量 才会满足中位数为a 那么我们可以假定大于等于中位数的值为1 小于的为-1 用前缀和来维护最值代码:#include<bits/stdc++.h>using namespace std;typedef long long ll

2021-02-19 15:00:04 151 1

原创 interval GCD(线段树+差分)

题目大意:两个操作 一个操作是区间加上d 另一个是求区间的GCD思路:首先如果区间修改使用lazytag的话 难以维护GCD 可以用数学性质gcd(x,y,z)=gcd(x,y-x,z-y)使用差分 来将区间修改改为两个单点修改 只需要将b[l]+=d b[r+1]-=d 再维护一下gcd即可query是为了求得区间gcd queryy是为了将差分数组复原为原值 即第一个数x 再做gcd记得要用ll还有一个坑点:小心越界if(y+1<=n) change(1,y+1,-z);代码:

2021-02-18 14:36:06 294

原创 CSU_WJJJ的ACM板子(持续更新)

我的ACM板子基础算法二分// 满足ok(x)的最小xint l=1,r=n;while(l<r){ int mid=l+r>>1; if(ok(mid)){ r=mid; }else{ l=mid+1; }}// 满足ok(x)的最大xint l=1,r=n;while(l<r){ int mid=l+r+1>>1; if(ok(mid)){ l=mid;

2021-01-28 16:47:23 413

原创 树上启发式合并学习笔记

洛谷日报例题#include<bits/stdc++.h>using namespace std;typedef long long ll;#define inf 0x3f3f3f3f#define endl '\n'struct edge{ int nxt,to;}e[200050];ll col[100050],cnt[100050],ans[100050],sum,mx;int head[100050],a[100050],ct,sz[100050],son[1

2021-01-27 22:42:05 84

原创 并查集的一些理解

从最基本的并查集之后引申到带权并查集 抽象出种类并查集 实际上都是维护一个又一个集合之间的关系并查集主要写两个函数find和mergefind函数可以写成路径压缩 或者 按秩合并 或者两个同时写(但一般单独的路径压缩就可以了)find函数需要注意的是在find函数内维护数组 需要等回溯时再维护 否则父节点还没被维护 先维护了子节点 便出现错误merge函数比较简单 就是将一个树根指向另外一个树根 也有需要注意的地方 当判断两个点之间的权值时 需要的是这两个点的值 不要写成两点的树根的值带权并查集或

2021-01-24 20:42:04 102 1

原创 acwing238 银河英雄传说(带权并查集)

https://www.acwing.com/problem/content/description/240/一个简单的带权并查集都写歪了= =我是真的菜题挺简单 大致讲下带权并查集做法主要就是修改find和merge函数 加入边权数组来维护一个坑点:int find(int x){ if(x==fa[x]) return x; int rt=find(fa[x]); d[x]+=d[fa[x]]; return fa[x]=rt;}int find(int x){

2021-01-24 15:37:36 134 1

原创 算法竞赛进阶指南学习笔记(2)

0x10 基本数据结构0x11 栈对顶栈 创建两个栈 来动态维护序列中间的操作 类似对顶堆的思想单调栈 栈内元素始终单调 排除不可能的选项 时间复杂度为O(N)例题0x12 队列queue deque单调队列单调队列总不会写= =记得常练cin>>n>>k;for(int i=1;i<=n;i++){ cin>>a[i];}int head=1,tail=0;for(int i=1;i<=n;i++){ while(head&lt

2021-01-23 11:03:54 127 2

原创 HDU - 6166 Senior Pan

https://vjudge.net/problem/HDU-6166题意:给你n个点 m条有向边 之后挑出特定的k个点 问这k个点中的最小距离为多少思路:这道题思路很巧妙 将k个点分为两组 一组为源点 一组为汇点 那么应该怎么分呢 这个地方需要二进制分组(我也是第一次见) 因为每个数在二进制下一定有一位不同 例如1=0001 3=0011 所以对二进制分组可以保证任意两个点都会分配到不同的组至少一次 之后便是多源最短路有一个坑点 因为是有向图 所以v0到v1跑一次最短路 v1到v0也要跑一次dij

2021-01-22 11:08:43 55

原创 CF1474C Array Destruction

https://codeforces.com/problemset/problem/1474/C一些芝士:set/multiset可以自动排序 迭代器的下一个或上一个分别用next和prev获取如int temp=*prev(s.end());一个坑点:erase删除所有指向的元素 如果只是想删除一个可以这么写s.erase(s.find(temp));思路大概是 首先排个序 每次操作剩下数组的最大值一定是下次操作的temp 用上次操作的mx减去现在的mx 如果存在这个数 就继续操作 操作n-1次

2021-01-20 15:23:07 112

原创 算法竞赛进阶指南学习笔记(1)

0x00 基本算法0x01 位运算0xFF代表-1 0x7F代表127发生算术溢出时,32位无符号整数相当于自动对2322^{32}232取模当n为偶数时,n xor 1等于n+1 当n为奇数时,n xor 1等于n-1 这一性质经常用于图论邻接表中边集的存储,可以通过xor 1的运算获得与当前边相反的边lowbit(n)定义为非负整数n在二进制表示下“最低位1及其后边所有的0”构成的数值lowbit(n)=n&(-n)0x02 递推与递归无0x03 前缀和与差分前缀和与差分是一

2020-12-23 17:30:33 223

原创 洛谷P1119 灾后重建(floyd新的理解)

https://www.luogu.com.cn/problem/P1119for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(e[i][j]>e[i][k]+e[k][j]) e[i][j]=e[i][k]+e[k][j];//核心代码,仅仅只有5行 这段代码的基本思想就是:最开始只允许经过

2020-11-29 19:32:52 130

原创 UNCTF writeup(web/misc)

webweb一共六题= =还有一题是找dh嫖的payload 我还是太菜了.jpgeasy_ssrfpayload:?url=unctf.com/…/…/…/…/flageasy_unserialize这个题没有懂= =嫖的dh的待补payload:?1=“challengechallengechallengechallengechallengechallengechallengechallenge”;s:8:“password”;s:4:“easy”;}aaababyeval一顿乱搞 感

2020-11-14 20:03:18 287

原创 用bs4和csv爬取豆瓣电影top250

import requests# 引用requests库from bs4 import BeautifulSoupimport csv# 引用BeautifulSoup库url = 'https://movie.douban.com/top250'headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 S

2020-07-03 20:40:22 445

原创 CF1364C C. Ehab and Prefix MEXs

Question给你序列a 让你求出序列b 满足以下式子:序列b1~bi中未出现的最小非负整数为ai如:input 1 2 3output 0 1 2Solution首先考虑不存在答案的情况如果a[i-1]>a[i]的话 那么不存在但题目保证了a[i-1]<=a[i]所以可以排除那么可以确定 一定会存在答案其次考虑怎么处理出答案每对a[i-1]和a[i]可以分为两种情况:当a[i-1]==a[i]时 由于a[i-1]已经保证了前面的所有数都取过 那么a[i]应该去取接下来

2020-06-14 21:27:49 163

原创 CF1353D Constructing the Array(优先队列)

Question给你一个长度为n的全为0的序列,让你从1-n填数,填的位置为找出最长的0序列,如序列长度为奇数,则为(l+r)/2,为偶数,则为(l+r-1)/2Solution运用优先队列,将[l,mid-1],[mid,r]push进去,运用重载运算符排序Code#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <cm

2020-06-11 11:23:23 164

原创 CF1353E K-periodic Garland(贪心/dp)

Question有n盏灯,0代表暗,1代表亮,相邻两个1之间为周期k,求出最少的改变次数SolutionFirst贪心方法详见博客https://blog.csdn.net/cheng__yu_/article/details/106145027#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <cmath>#i

2020-06-11 11:22:00 153

原创 洛谷P2822 组合数问题(二维前缀和+组合数)

QuestionSolution杨辉三角 将组合数打表得出c[0][0]=1; c[1][0]=1; c[1][1]=1;for(int i=2;i<=2000;i++){ c[i][0]=1; for(int j=1;j<=i;j++){ c[i][j]=(c[i-1][j-1]+c[i-1][j])%k; }}加上二维前缀和的公式后for(int i=2;i<=2000;i++){ c[i][0]=1; for(int j=1;j<=i;j++){

2020-06-11 11:20:28 156

原创 CF1340B Nastya and Scoreboard(暴搜剪枝/dp)

Question一个n个数码位的分数板,每一个数码位都是一个七段数码管,现在给出每个数码位的显示情况,问再点亮k段数码管的话能显示的最大的数是多少,如果不能构成一串数字,就输出-1SolutionFirst暴力搜索+剪枝(貌似中间用了一些记忆化搜索的思想? 我不太懂 反正别人这么写的#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#includ

2020-06-11 11:17:28 145

原创 CF1299A Anu Has a Function(位运算+贪心)

Question有一种操作f(x,y)=(x|y)−y,给你一个序列a1,a2,…,an。让你改变一下序列a的顺序,让f(f(…f(f(a1,a2),a3),…,an−1),an)最大。Solution一些我不会的芝士:(1)int为32位 31位为绝对值 第32位为符号表正负(2)<<右移 可以取高位 &与运算 可以用&1来判断当前为是否为1,同时也可以用来判断奇偶解题:我们可以发现 如果该序列的某一位出现2次及以上的1 该位将变为0 出现0次也显然为0 那么我

2020-06-11 10:49:27 112

原创 Codeforces Round #617 (Div. 3)题解(A-E2)

A题意:可以改变数组中的一个数的值成另外一个数组中的数,问能不能使数组的和是个奇数思路:数组中有奇数有偶数 || 奇数个奇数#include <bits/stdc++.h>#define maxn 2005#pragma GCC optimize(2)using namespace std;typedef long long ll;int t;int a,b;int...

2020-02-08 15:23:14 162

空空如也

空空如也

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

TA关注的人

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