自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2019ccpc网络赛 HDU 6704 K-th occurrence(后缀数组+RMQ+主席树)

题意:给一个长度为n的字符串s,然后有q个询问,每次询问求出l到r之间的字串在s数组第k次出现的位置; 思路:用后缀数组对所有子串进行排序,用二分和RMQ找到包含该子串的排名区间(含公共前缀的字串一定连续,二分左边界和右边界),用权值主席树查找第k次出现的子串的位置即可; #include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath>

2021-03-06 19:28:47 256

原创 Codeforces Round #698 (Div. 2) C题Nezzar and Symmetric Array

思路: 由于每个数正负成对出现,不妨设x为正,对于x与每个数对(不妨设为y,-y)的绝对值差为|x - y| + |x + y|,则-x与每个数对的绝对值差为|-x - y| + |-x + y| = |x + y| + |x - y|,故d数组中每个数都应成对出现; 对于|x + y| + |x - y| 当x > y时为2x; 当y > x时为2y; 即|x + y| + |x - y| = 2 * max(x,y); 因此di = $\sum_{j=1}^{2n} max(abs(a[i]

2021-01-29 13:59:28 226

原创 卓见杯”2020年河南省第二届CCPC 二进制与、平方和(线段树,二进制

#include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath> #include<string> #include<cstring> #include<bitset> #include<vector> #include<queue> #include<stack&...

2020-12-15 16:42:11 406 1

原创 2019河南省ccpc大小接近的点对(主席数+离散化+dfs序

#include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath> #include<string> #include<cstring> #include<bitset> #include<vector> #include<queue> #include<stack&...

2020-12-12 19:01:30 218

原创 2020CCPC河南省赛子串翻转回文串

****注意千万不要用自然溢出哈希,会被卡成**; #include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath> #include<string> #include<cstring> #include<bitset> #include<vector> #include...

2020-11-28 17:08:56 860 1

原创 2020河南省ccpc省赛太阳轰炸

#include<bits/stdc++.h> #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); using namespace std; const int maxn = 5e6+5; const int mod = 1e9 + 7; typedef long long ll; int n,m,k; ll r1,r2,r,a,h; int pm[maxn],pni[maxn]; int jc[maxn]...

2020-11-27 23:45:28 758 2

原创 蚂蚁

1,蚂蚁最终的位置顺序和起始的顺序相同 2,最终的位置的的坐标方向和起始的顺序一一对应 3,如果最终位置的一个点有两个则表示正在转向 #include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath> #include<string> #include<cstring> #include<bitset&g..

2020-07-08 22:29:44 1341

原创 Pair of Topics

直接将a,b数组相同下标做差得到新的a数组;因为i和j位置可以交换所以,下标可以忽略,将a数组排序然后双指针得到满足的对数 #include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath> #include<string> #include<cstring> #include<bitset> #in..

2020-07-08 22:17:46 236

原创 Ball

把b数组作为a数组排序后的数组。贪心的思想:a数组中的第一个颜色x,排序后会到b数组第一个颜色x(把0也当成一种颜色),因为如果a中的第一个颜色x能到b中的一个x后面的x则一定能到达第一个x。依次类推,把每一个颜色都编号对应到b数组中,记录排序后a数组每个颜色对应到b数组的位置。 #include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath&..

2020-07-06 17:40:16 239

原创 Read Time (二分

二分时间,最左边的磁盘用最左边的指针去配对,并判断该指针在经过该磁盘的同时最多跑到最右边的位置,如果需要配对的磁盘在指针左边则有两种走法,第一种先向左走到磁盘位置再一直向右走,第二种先向右走然后向左走,正好在时间用完时停在磁盘处,判断两种情况哪种走的最右。如果磁盘在指针右边则一直向右走。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<s..

2020-07-02 17:04:33 623

原创 C - Mixing Water(注意精度和数据溢出(坑爹题

官方题解: 参考题解写的代码: #include <cstdio> #include<cmath> using namespace std; int main() { int tc; scanf("%d", &tc); while(tc--){ int h, c, t; scanf("%d%d%d", &h, &c, &t); if (h + c - 2 * t >= 0) puts("2"); ..

2020-05-30 23:38:53 622

原创 Good Numbers (hard version)

该题数值较大,可以转为三进制用数组保存每个位的数。从最高位往低位遍历,遇到1和0跳过,遇到2说明该数不满足题意,要找到最小的数,应将该位置的2和比该位低的位变成0,然后往高位遍历遇到1将其变为0,直到遇到0,把0变为1即为最小的数。因为遇到2一定需要往高位进位,不然无法消去该位上的2,所以将低位全部清0,找到第一个高位的0变为1即可,因为遇到1进位会变成2依旧需要往高位进位。 参考大佬的代码 #include<iostream> #include<cstring> usi..

2020-05-28 14:25:45 257

原创 Books Exchange (hard version)(记忆搜索)

给书的过程形成一个循环,每个独立循环内的每个人的书回到自己手中的时间相同 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn = 2e5+10; int a[maxn],ans[maxn],book[maxn]; int dfs(int i,int st){ book[i] = 1; if(book[a[i]]){ ret..

2020-05-28 11:57:19 313

原创 K - s-palindrome(水坑)

坑点:p和q,b和d成镜像,小写m和i不和自身成镜像 #include<iostream> #include<cstring> using namespace std; //按ascill码表的顺序对应各自的镜像字母,不成镜像用*表示 char st[100] = "A******HI***M*O****TUVWXY********d*b**********oqp****vwx****"; char s[2005]; char s2[2005]; char zhuan...

2020-05-28 11:52:03 236

原创 D. Buying Shovels(最大因子

该题切记循环到根号n,不可循环到根号k #include<iostream> #include<algorithm> #include<cmath> using namespace std; int t,n,k; int main(){ cin >> t; while(t--){ cin >> n >> k; if( n <= k ){ cout << 1 << en...

2020-05-25 11:26:26 515

原创 C - Zero Quantity Maximization(map)

由于浮点数精度有限会出现误差,本题应采用最简分数记录 #include<iostream> #include<map> #include<cmath> #include<algorithm> using namespace std; //辗转相除法求最大公因数 int f(int x, int y) { return y ? f(y, x % y) : x; } const int maxn = 2e5 + 5; int a[maxn], ...

2020-05-17 17:11:41 279

原创 E - Magic Powder - 2(二分查找)

该题数据量较大,根据题目答案最大2*10^9,可以通过二分法查找最大做的蛋糕数,用魔法素材把每个材料补充到二分的值需要的素材数,判断总共需要的素材数和k的大小关系进行二分 #include<iostream> using namespace std; typedef long long ll;//int数据会溢出改用long long const ll maxn = 2e9+5; ll a[100005],b[100005]; ll n,k; ll search(ll l,ll r).

2020-05-16 17:13:56 375

原创 The Child and Set位运算

通过与自身相反数做与运算获得该数的最右的1; #include<iostream> #include<algorithm> using namespace std; struct node{ int num,low; };// num 记录该数,low记录最右的1; int cmp(node a, node b){ return a.low > b.low; } node s[1000000+5]; int ans[1000000+5]; int main(){.

2020-05-13 09:51:10 391

空空如也

空空如也

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

TA关注的人

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