【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}\) . 浏览器 \( ...
随机推荐
- Java常用函数式接口--Supplier接口使用案例
使用案例:
- markdown语法之列表与缩进
在markdown语法中, 用*或+或-在行首表示无序列表.在这些符号之后应该空一格然后输入内容. 例如 + 无序列表 * 无序列表 - 无序列表 会被markdown语法渲染为 无序列表 列表嵌套 ...
- Markdown笔记(git提交带有emoji的commit描述)
用法:> git commit -m ' :tada: initial ' emoji来源:> { return $this->hasMany('App\Models\Users', 'role_i ...
- centos 7.6 配置VNC
一.安装 1. 以root用户运行以下命令来安装vncserver; yum install tigervnc-server 2. 同样运行以下命令来安装vncviewer; yum instal ...
- Android笔记(十四) Android中的基本组件——按钮
Android中的按钮主要包括Button和ImageButton两种,Button继承自TextView,而ImageButton继承自ImageView.Button生成的按钮上显示文字,而Ima ...
- Linux下相关性能指标数据采集
1)如何查看某个服务进程所占本机物理内存及百分比情况?可以使用Linux命令行查看,也可以使用脚本实现.如下以查看本机kube-nginx服务进程为例: [root@kevin ~]# pidof k ...
- 【PAT-一道看着很难的水题】L2-023. 图着色问题
水题!没其他想说的,还以为可以搞点高大上的搜索呢!十五分钟,暴力两重循环就OK了! 代码如下: #include<iostream> #include<stdio.h> #in ...
- Parameter 0 of method redisTemplate in org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration required a bean of type 'org.springframework.data.redis.connection.RedisConnectionFactor
Error starting ApplicationContext. To display the conditions report re-run your application with 'de ...
- 20 区分webpack中导入vue和普通网页使用script导入Vue的区别
回顾包的查找规则: 1.找项目根目录中有没有node_modules的文件夹 2.在node_modules中根据包名,找对应的vue文件夹 3.在vue文件夹中,找一个叫做package.json的 ...