博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R574
阅读量:4639 次
发布时间:2019-06-09

本文共 2889 字,大约阅读时间需要 9 分钟。

囍狠了。备案完了。然后好像好像被我瞎改了什么现在主页啥的全都访问不了了。

F:闵可夫斯基和。有个结论是凸包的点数等于向量的种类数。

所以我们维护区间不同向量的个数就行。

#include 
#define pii pair
#define mk(a,b) make_pair(a,b)#define rep(jiantongyingwolaopo) for(int i=1;i<=jiantongyingwolaopo;i++)using namespace std;typedef long long ll;const int N = 1e6+5;int bit[N];int lowbit(int x){
return x&-x;}void upd(int pos,int x){ while (pos
head;pii a[N];int cnt=0;int x[N],y[N],nxt[N];int n,k,l[N],r[N],ans[N];set
st;int main(){// int p = __gcd(126871236,-99999999); ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++){ cin>>k; for(int j=0;j
>x[j]>>y[j]; x[k]=x[0],y[k]=y[0]; l[i]=cnt; for(int j=0;j
=1;i--){ nxt[i]=head[a[i]]; head[a[i]]=i; } for(auto x:st){ if(head[x]) { upd(head[x], 1);// cout<
<<' '; } }// cout<
>k;int a,b; for(int i=1;i<=k;i++){ cin>>a>>b; q[i].id=i;q[i].l=l[a];q[i].r=r[b]; } sort(q+1,q+1+k); int las=1; for(int i=1;i<=k;i++){ while (las<=q[i].l){ if(nxt[las]) upd(nxt[las],1); las++; } ans[q[i].id]=sum(q[i].r)-sum(q[i].l); } for(int i=1;i<=k;i++)cout<
<
View Code

E:网上一搜到处都是。。。我随便找了个改了改。。。

#include 
using namespace std;typedef long long ll;const int N = 3e3+1;struct Node{ int x,y,val;}node[N][N],mn[N][N];int n,m,a,b,x,y,z;int g[3001*3001];deque
q2;int main(){ ios::sync_with_stdio(false); cin>>n>>m>>a>>b>>g[0]>>x>>y>>z; for(int i=1;i<=n*m;i++) g[i]=(1ll*g[i-1]*x+y)%z; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ node[i][j].x=i,node[i][j].y=j; node[i][j].val=g[(i-1)*m+j-1]; } } for(int i=1;i<=n;i++){ while (!q2.empty())q2.pop_back(); for(int j=1;j<=m;j++){ while (!q2.empty()&&q2.front().y+b<=j) q2.pop_front(); while (!q2.empty()&&q2.back().val>=node[i][j].val) q2.pop_back(); q2.push_back(node[i][j]); if(j>=b) mn[i][j-b+1].x=i,mn[i][j-b+1].y=j-b+1,mn[i][j-b+1].val = q2.front().val; } } for(int j=1;j<=m;j++){ while (!q2.empty())q2.pop_back(); for(int i=1;i<=n;i++){ while (!q2.empty() && q2.front().x + a <= i) q2.pop_front(); while (!q2.empty() && q2.back().val >= mn[i][j].val) q2.pop_back(); q2.push_back(mn[i][j]); if (i >= a) node[i - a+ 1][j].x = i - a + 1, node[i - a + 1][j].y = j, node[i - a + 1][j].val = q2.front().val; } } ll ans=0; for(int i=1;i<=n-a+1;i++){ for(int j=1;j<=m-b+1;j++){ ans+=node[i][j].val; } } cout<
<
View Code

D:分长度和 数字在前面或者在后面,考虑每位会乘上10的几次方

C:什么傻逼。

B:二分,也可以直接枚举,

A:暴力。

 

转载于:https://www.cnblogs.com/MXang/p/11213759.html

你可能感兴趣的文章
USACO 1.5.4 Checker Challenge
查看>>
第二阶段站立会议7
查看>>
[18]Debian Linux Install GNU GCC Compiler and Development Environment
查看>>
JAVA多线程
查看>>
ACE(Adaptive Communication Environment)介绍
查看>>
delphi 更改DBGrid 颜色技巧
查看>>
python编码问题
查看>>
POJ 2031 Building a Space Station
查看>>
面向对象1
查看>>
编程开发之--java多线程学习总结(5)
查看>>
register_globals(全局变量注册开关)
查看>>
as3调用外部swf里的类的方法
查看>>
如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
查看>>
第五次作业
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>