摘要:
经常有一种题是给你一个图形和二维平面上的一些点 ,问你在最多能圈住几个点 这个时候就是要用线段树+扫描线了 这个东西关键由以下内容构成 : 1.扫描序: 线段树维护的内容一般是每条x轴(或y轴上)在宽度限定范围内最多有几个点,要对点逐一扫描 扫描(updata)之前要根据扫描的顺序(从上到下或从左到 阅读全文
摘要:
码一下:https://blog.csdn.net/weixin_44584560/article/details/87115412 #include <bits/stdc++.h> using namespace std; const int N = 100000 + 5; int a[N] ,b 阅读全文
摘要:
单调栈和单调队列的定义具体看ppt了 模板: 单调队列 head =1; tail = 0; rep( i ,1 ,n ){ while( head <= tail && a[i] < dq[tail].first)tail--; while( head <= tail && dq[head].se 阅读全文
摘要:
MD ,一个我容易写的又难以发现一般要debug一个小时才找出的bug: 当数组方括号里的索引有多层时,将数组里的索引值搞混,例如: vote[ cmp[i] ] > vote[ i ] (三分候选人那道题 单调队列q存的是下标 :dp[ q[tail] ] > dp[ tail ] (今天的st算 阅读全文
摘要:
比赛时因为一些情况分心了,导致后面写的很慌,心态不好,唉 C . 模拟 链接:https://codeforces.com/contest/1191/problem/C 一个类似于栈的容器,有m个元素可删,每次可以删除最右边k个元素中可删的,其他元素随之移动,问删完m个元素要几次操作 A: 1.只要 阅读全文
摘要:
10-1 巨大的斐波那契数 Q:输入两个非负整数a、b和正整数n(0<=a,b<264,1<=n<=1000),你的任务是计算f(ab)除以n的余数,f(0) = 0, f(1) = 1,且对于所有非负整数i,f(i + 2) = f(i + 1) + f(i)。 分析:1、注意a,b的范围 ,会爆 阅读全文
摘要:
B(暴力 Q:统计两个正整数t1 、 t2 之间的所有数的约数个数和S,给出的两个数t1、t2为10000000以内的正整数。 A:暴力,在1到t2之间枚举因子r ,t2/r-t1/r 即t1~t2之间包含该因子的数的个数 ,求和即t1 、 t2 之间的所有数的约数个数和 C(贪心,中位数 Q:ht 阅读全文
摘要:
题意:给定数组c[n],及多组a,b ,求每一组的后缀和 c[a]+c[a+b]+c[a+2*b]+c[a+3*b]....... 分析: 对于每一个b值 ,都可以在o(n)的复杂度内利用dp 求出该b下不同a值对应的后缀和sum[a]: for( int j=n ;j>=1 ;j--){ if( 阅读全文
摘要:
数组前面的一个元素 大于等于 后面的一个元素就是一个逆序对; 树状数组可以快速求前缀和,利用这一特性,可以求逆序对个数,见下: 用数组c[ i ]记录数组a[ n ]中i这一元素出现的次数 ,当a[ n ]中元素较大时可以离散化处理。 将a[ n ]从a[n -1]到a[0] 依次存到树状数组中,每 阅读全文
摘要:
前几题运用了树状数组的 单点修改+区间查询,一维区间修改+单点查询(差分法),二维区间修改+单点查询(差分法) 这些都是树状数组的常规操作 树状数组还可以通过维护两个数组实现一维的区间修改+区间查询,详见:https://www.cnblogs.com/lcf-2000/p/5866170.html 阅读全文