【LGR-059】洛谷7月月赛题解
比赛的时候正在大巴上,笔记本没网又没电(不过就算有我估计也不会打就是了)
\(A\)
咕咕
const int N=(1<<10)+5;
int a[N][N],n;
void solve(int x,int y,int p){
if(p==1)return a[x][y]=1,void();
p>>=1;
solve(x+p,y,p),solve(x,y+p,p),solve(x+p,y+p,p);
}
int main(){
cin>>n,n=(1<<n);
solve(1,1,n);
fp(i,1,n)fp(j,1,n)printf("%d%c",a[i][j]," \n"[j==n]);
return 0;
}
\(B\)
咕咕
const int N=1e5+5;
int a[N],b[N],nxt[N],Pre[N],vis[N],n;
inline void del(R int x){Pre[nxt[x]]=Pre[x],nxt[Pre[x]]=nxt[x];}
int main(){
scanf("%d",&n);
fp(i,1,n)scanf("%d",&a[i]),b[a[i]]=i,Pre[i]=i-1,nxt[i]=i+1;
fd(i,n,1)if(!vis[i]&&nxt[b[i]]!=n+1){
printf("%d %d ",i,a[nxt[b[i]]]),vis[i]=vis[a[nxt[b[i]]]]=1;
del(b[i]),del(nxt[b[i]]);
}
return 0;
}
\(C\)
对于每一对逆序对\((i,j)\)要加上\(i\times (n-j+1)\),树状数组维护即可,注意这个会爆\(long\ long\)所以得开\(\_\_int128\)
//quming
#include<bits/stdc++.h>
#define R register
#define ll __int128
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
using namespace std;
//typedef long long ll;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){
R int res,f=1;R char ch;
while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);
for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');
return res*f;
}
inline void print(R ll x){if(x>9)print(x/10);putchar(x%10+48);}
const int N=1e6+5;
ll c[N],res;int a[N],b[N],n,m;
inline void add(R int x,R int y){for(;x<=m;x+=x&-x)c[x]+=y;}
inline ll query(R int x){R ll res=0;for(;x;x-=x&-x)res+=c[x];return res;}
int main(){
// freopen("testdata.in","r",stdin);
n=read();
fp(i,1,n)a[i]=b[i]=read();
sort(b+1,b+1+n),m=unique(b+1,b+1+n)-b-1;
fd(i,n,1){
a[i]=lower_bound(b+1,b+1+m,a[i])-b;
res+=query(a[i]-1)*i,
add(a[i],n-i+1);
}
// printf("%lld\n",res);
print(res);
return 0;
}
\(D\)
转移方程推出来之后暴力都写不对可海星……
先把所有区间按右端点排序,发现不允许存在一个位置被覆盖三次及以上,且为了不是森林每个节点必须和其他节点中的至少一个有交
设\(f_{i,j}\)表示考虑到第\(i\)个区间,且选择的上一个区间为\(j\)的方案数,边界条件为\(f_{i,0}=1\)
转移分两种情况,一种是\(r[j]\geq l[i]\)且\(l[j]<l[i]\),那么假设此时从\(f_{j,k}\)转移过来,则必须满足的条件是\(r[k]<l[i]\),即可以写成
\]
另一种情况是\(r[j]\geq l[i]\)且\(l[j]\geq l[i]\),那么就不能从\(f[j][k]\)转移而是应该从\(f[i][k]\)进行转移,且需要满足\(r[k]<l[i]\),即
\]
这两个都可以用树状数组维护
//quming
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
using namespace std;
const int P=1e9+7;
inline void upd(R int &x,R int y){(x+=y)>=P?x-=P:0;}
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
int ksm(R int x,R int y){
R int res=1;
for(;y;y>>=1,x=mul(x,x))(y&1)?res=mul(res,x):0;
return res;
}
const int N=4005;
int l[N],r[N],las[N],id[N],f[N][N],n,mx,res;
struct BIT{
int c[N];
inline void ins(R int x,R int y){for(++x;x<=mx;x+=x&-x)upd(c[x],y);}
inline int query(R int x){R int res=0;for(++x;x;x-=x&-x)upd(res,c[x]);return res;}
}bi[N];
inline bool cmp(const int &x,const int &y){return r[x]==r[y]?l[x]<l[y]:r[x]<r[y];}
int main(){
// freopen("testdata.in","r",stdin);
scanf("%d",&n);
fp(i,1,n)scanf("%d%d",&l[i],&r[i]),id[i]=i,cmax(mx,r[i]+1);
sort(id+1,id+1+n,cmp);
las[1]=1;
for(R int i=2,ql,qr,qm,ans;i<=n;++i){
ql=1,qr=i-1,ans=i;
while(ql<=qr){
qm=(ql+qr)>>1;
r[id[qm]]>=l[id[i]]?(ans=qm,qr=qm-1):ql=qm+1;
}
las[i]=ans;
}
fp(i,1,n)f[i][0]=1,bi[i].ins(0,1),++res;
fp(i,2,n)fp(j,las[i],i-1){
f[i][j]=(l[id[i]]<=l[id[j]]?bi[i].query(l[id[j]]-1):bi[j].query(l[id[i]]-1));
if(f[i][j])bi[i].ins(r[id[j]],f[i][j]),upd(res,f[i][j]);
// printf("%d %d %d\n",i,j,f[i][j]);
}
printf("%d\n",res);
return 0;
}
【LGR-059】洛谷7月月赛题解的更多相关文章
- 洛谷11月月赛题解(A-C)
心路历程 辣鸡T3卡我1.5h题意,要不是最后nlh跟我解释了一下大样例估计这次是真凉透了.. A P4994 终于结束的起点 打出暴力来发现跑的过最大数据?? 保险起见还是去oeis了一波,然后被告 ...
- 【LGR-070】洛谷 3 月月赛-官方题解
本次免费为大家提供[LGR-070]洛谷 3 月月赛的官方题解,点个赞再走呗! 代码就不上了,大家可以到别的博客上去找找!希望这篇博客能对你有所帮助!
- 【洛谷5月月赛】玩游戏(NTT,生成函数)
[洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- 「P4994」「洛谷11月月赛」 终于结束的起点(枚举
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...
- 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心
题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi,地面的高度是 h_0 = 0 ...
- 洛谷4月月赛R2
洛谷4月月赛R2 打酱油... A.koishi的数学题 线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...
- 洛谷3月月赛 R1 Step! ZERO to ONE
洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
随机推荐
- pb笔记之数据窗口设置操作
1 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录而不能修改,利用 Column 的 Protect 属性可以很方便的做到这一点,方法如下:将每一列的 Pro ...
- Docker in Docker(实际上是 Docker outside Docker): /var/run/docker.sock
在 Docker 容器里面使用 docker run/docker build? Docker 容器技术目前是微服务/持续集成/持续交付领域的第一选择.而在 DevOps 中,我们需要将各种后端/前端 ...
- WebApi 身份认 Basic基础认证
<body> <div style="text-align:center;"> <div>用户名:<input type="te ...
- 【已解决】bootstrap table 参数后台获取不到
查看请求,可以看到有部分字段是可以的. 改成以下这种即可,原因是由于字段为null,没把错误抛出来,为null的字段就不会放到请求的参数中.
- Vue中使用watch computed
watch:监听属性,来监听dta中的数据变化 或者route的变化 computed:计算属性, <!DOCTYPE html> <html lang="en" ...
- JavaIO模型--装饰者模式
JavaIO体现出装饰者的设计模式 今天在学SparkRDD之前,听了一堂复习JavaIO的课,觉得讲得不错 Java的IO一直让我觉得一层一层的很麻烦,刚接触的时候,理不太清楚 只知道要分解为输入输 ...
- SQL SERVER-Job中Operators搬迁脚本
选中operators按F7,然后选中对象,生成脚本 USE [msdb] GO /****** Object: Operator [DB_ITDESK] Script Date: 5/30/2019 ...
- Android笔记(七) Android中的布局——线性布局
我们的软件是由好多个界面组成的,而每个界面又由N多个控件组成,Android中借助布局来让各个空间有条不紊的摆放在界面上. 可以把布局看作是一个可以放置很多控件的容器,它可以按照一定的规律调整控件的位 ...
- 【视频】谷歌大佬30分钟让你入门机器学习(2019谷歌I/O资源分享)
如果你是个谷粉,就一定会知道: 谷歌向来都很大胆.当所有的科技公司都在讲产品.讲利润的时候,2019年的谷歌开发者大会的主题却是:人文关怀.要知道,这是政府操心的事,而不是一家公司的任务. 谷歌敢这样 ...
- CentOS7.X+LAMP+zabbix4.2环境下搭建Grafana6.1数据库可视化
1.GrafanaRPM包部署(yum install wget) wget https://dl.grafana.com/oss/release/grafana-6.1.4-1.x86_64.r ...