T1:

不难想到贪心,但是怎么贪,他有两个限制条件,所以不是很好搞,所以用一个类似与wqs二分的思路我可能在口胡,因为你肯定要把最小的给删掉,所以你限定一个x或y,然后在选出另一个限制,所以要同时维护删$k$个$x$最小和$y$最小,一个排序预处理,一个用堆维护即可。注意边界问题,思考实际意义。

 #include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+;
int a[N];
priority_queue<int> qx,qy;
struct node{
int x,y;
bool friend operator < (node a,node b){
return a.x==b.x?(a.y<b.y):(a.x<b.x);
}
}p[N];
signed main(){
int T;
scanf("%lld",&T);
while(T--){
int n,m;
scanf("%lld%lld",&n,&m);
priority_queue<int,vector<int>,greater<int> >q;
for(int i=;i<=n;++i){
scanf("%lld%lld",&p[i].x,&p[i].y);
}
sort(p+,p+n+);
for(int i=m+;i<=n;++i) q.push(p[i].y);
int ans=p[m+].x*q.top();
for(int i=m;i>=;--i){
q.pop();q.push(p[i].y);
ans=max(ans,p[i].x*q.top());
}
printf("%lld\n",ans);
}
}

d

T2:

考试时啥都没想到,连那个最小联通块都没分析出来是什么。通过手玩可以发现他所说的最小联通块就是所有点的LCA到每个节点的链,然后对于每一个询问值,只要查他的前趋后继即可,思路类似于平衡树那道题,宠物收养所,然后树上每条链其实就是树上的一段区间,用主席树维护即可,具体方法为查询问的值在区间的排名$rk$(准确来说是小于等于它的数的个数),然后前趋排名为$rk$,后继为$rk+1$,在查区间第k大即可,注意特判没有前趋或后继的情况。

特别注意在线不要只把值赋给LCA,$p[1]$也要改。

调了一下午 kuku

 #include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
struct Chairman_Tree{
int l,r,size;
}tr[N*];
int first[N],nex[N<<],to[N<<],tot,fr[N<<];
void add(int a,int b){
to[++tot]=b,nex[tot]=first[a],first[a]=tot,fr[tot]=a;
}
int fa[N][],d[N],root[N*],p[N*],a[N];
void bfs(){
queue<int> q;
q.push();
d[]=;
while(q.size()){
int x=q.front();q.pop();
for(int i=first[x];i;i=nex[i]){
int y=to[i];
if(d[y]) continue;
d[y]=d[x]+;
fa[y][]=x;
for(int j=;j<=;++j) fa[y][j]=fa[fa[y][j-]][j-];
q.push(y);
}
}
}
int LCA(int x,int y){
if(d[x]>d[y]) swap(x,y);
for(int i=;i>=;--i) if(d[fa[y][i]]>=d[x]) y=fa[y][i];
if(x==y) return x;
for(int i=;i>=;--i) if(fa[y][i]!=fa[x][i]) y=fa[y][i],x=fa[x][i];
return fa[x][];
}
int cnt;
void insert(int &x,int v,int l,int r,int pos){
x=++cnt;
tr[x]=tr[v];
tr[x].size++;
if(l==r) return ;
int mid=(l+r)>>;
if(pos<=mid) insert(tr[x].l,tr[v].l,l,mid,pos);
else insert(tr[x].r,tr[v].r,mid+,r,pos);
}
int maxn=;
void dfs(int x){//cout<<"x=="<<x<<endl;
// cout<<x<<" "<<fa[x][0]<<" "<<a[x]<<endl;
insert(root[x],root[fa[x][]],,maxn,a[x]);
for(int i=first[x];i;i=nex[i]){
int y=to[i];
if(y==fa[x][]) continue;
dfs(y);
}
}
int query(int u,int v,int l,int r,int val){
if(r<=val) return tr[v].size-tr[u].size;
int mid=(l+r)>>;
int als=tr[tr[v].l].size-tr[tr[u].l].size;
if(val<=mid) return query(tr[u].l,tr[v].l,l,mid,val);
else return als+query(tr[u].r,tr[v].r,mid+,r,val);
}
int kth(int u,int v,int l,int r,int rk){
if(l==r) return l;
int mid=(l+r)>>;
int als=tr[tr[v].l].size-tr[tr[u].l].size;
if(rk<=als) return kth(tr[u].l,tr[v].l,l,mid,rk);
else return kth(tr[u].r,tr[v].r,mid+,r,rk-als);
} int find(int x,int fa,int val){
int tmp=query(root[fa],root[x],,maxn,val);
int fr=tmp,aft=tmp+;
// cout<<"tmp=="<<tmp<<endl;
int frv=0x7fffffff,aftv=0x7fffffff;
// if(aft>d[x]-d[fa]) cout<<"HHH"<<endl;
int res=0x7fffffff;
if(fr>) frv=kth(root[fa],root[x],,maxn,fr),res=min(res,abs(frv-val));
if(aft<=tr[root[x]].size-tr[root[fa]].size) aftv=kth(root[fa],root[x],,maxn,aft),res=min(res,abs(aftv-val));
// cout<<"x=="<<x<<" fa=="<<fa<<" val=="<<val<<endl;
// cout<<"fr=="<<fr<<" aft=="<<aft<<endl;
// cout<<"frv=="<<frv<<" aftv=="<<aftv<<endl;
return res;
} int main(){
int n,q,type;
scanf("%d%d%d",&n,&q,&type);
for(int i=;i<=n;++i) {scanf("%d",&a[i]);maxn=max(maxn,a[i]);}
for(int i=;i<n;++i){
int x,y;
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
bfs();
// for(int i=1;i<=tot;++i) cout<<fr[i]<<" "<<to[i]<<endl;
dfs();
int lastans=;
for(int i=;i<=q;++i){
int rvalue,k;
scanf("%d%d",&rvalue,&k);
scanf("%d",&p[]);
int lca=p[]=(p[]-+lastans*type)%n+;
for(int j=;j<=k;++j){
scanf("%d",&p[j]);
p[j]=(p[j]-+lastans*type)%n+;
lca=LCA(lca,p[j]);
}
// cout<<"Lca=="<<lca<<endl;
int ans=0x7fffffff;
for(int j=;j<=k;++j) ans=min(ans,find(p[j],fa[lca][],rvalue));
lastans=ans;
printf("%d\n",ans);
}
}
/*
3 1 0
18 99 59
1 2
2 3
15 3 2 2 3
*/

e

T3:不会,鸽了

CSP-S模拟68 题解的更多相关文章

  1. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  2. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  3. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  4. HGOI NOIP模拟4 题解

    NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...

  5. 10.8 wtx模拟题题解

    填坑 orz w_x_c_q w_x_c_q的模拟赛(150pts,炸了) money 题目背景: 王小呆又陷入自己的梦里.(活在梦里...) 题目描述: 王小呆是一个有梦想的小菜鸡,那就是赚好多好多 ...

  6. [NOIP模拟13]题解

    A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...

  7. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  8. 【洛谷】xht模拟赛 题解

    前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...

  9. 10.9 guz模拟题题解

    感谢@guz 顾z的题题解 考试共三道题,其中 第一题help共10个测试点,时间限制为 1000ms,空间限制为 256MB. 第二题escape共20个测试点,时间限制为1000ms2000ms, ...

随机推荐

  1. 03 HttpServletRequest_HttpServletResponse

    HttpServletRequest:一次来自客户端的请求的相关信息 请求行 request.getMethod() 获取http请求方式 request.getRequestURI() 获取统一资源 ...

  2. (三)Lucene之删除更新文档以及luke的基本使用

    一.demo 本例中采用单元测试,故在pom.xml中引入junit jar包 1.1 前提: public class IndexTest { /** *数据准备 */ private String ...

  3. C语言并查集例子——图问题巧用parent[]数组

    输入:测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M:随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城 ...

  4. 让一个父级div根据子级div高度而自适应高度

    需求是点击上传的时候进行子级div高度不定,相对来说父级div高度也不能固定,把元素都设置成普通标准流,然后样式可以使用margin内边距或者padding外边距来进行调节 放上代码供参考: .opu ...

  5. S2-052

    前言 S2-052的RCE漏洞和以前的有些不同,不再是ognl表达式注入了,而是xml反序列化漏洞导致的RCE(另外还有S2-055漏洞是fastjson的反序列化漏洞).我复现的时候遇到一个坑,导致 ...

  6. linux命令安装docker

    安装: 1.Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2.更新yum包:sudo yum update 3. ...

  7. linux centos安装nginx1.7.4

    原文转自 jerryhe326:https://www.cnblogs.com/jerrypro/p/7062101.html一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装ng ...

  8. Python asyncio 模块

    Python 3.4 asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持. asyncio的编程模型就是一个消息循环.我们从asyncio模块中直接获取一个EventLo ...

  9. layer学习

    layer版本v2.1 1,layer的alert可以传标题的: layer.alert("测试layer弹窗===========", {title:"温馨提示&quo ...

  10. 0012SpringBoot访问首页

    有三种方式可以实现访问首页: 第一种: 定义一个Controller,定义请求方法和返回内容,方法内容如下: @RequestMapping({"/","/index&q ...