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. QT聊天室--重大bug

    发送qqqqqqqqqqqqqqqqqqqqqqq: 发送test

  2. (十三)Activitivi5之流程控制网关:并行

    一.概念 所谓排他网关 顾名思义 执行到该网关,会有多条线路同时并行执行,当都执行完才继续执行后面的: 二. 案例 此时当“学生请假”任务节点完成之后,如下图此时有两个任务,必须等到两个任务都完成才会 ...

  3. (五)sturts2+spring整合

    一.Spring与Struts的整合 1.1:加入Spring的jar包.1.2:加入Struts的jar包.1.3:加入Struts与Spring的整合jar//struts2-spring-plu ...

  4. Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form ResumeForm needs updating.

    django 报错 django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fiel ...

  5. python3爬虫之requests库基本使用

    官方文档链接(中文) https://2.python-requests.org/zh_CN/latest/ requests  基于  urllib3 ,python编写. 安装 pip insta ...

  6. SMTP命令

    SMTP(Simple Mail Transfer Protocol)简单邮件传输协议 Basic Commands: HELO(Hello):标识用户身份 MAIL FROM:发件人地址 RCPT ...

  7. selenium实现登录百度(自动识别简单验证码)

    需要做的工作 0.工程结构 1.代码: ①baidu_login.py import re import os import sys import time import random from se ...

  8. spring-security2配置精讲(转载)

    本文转载自牛人downpour的帖子: http://www.iteye.com/topic/319965 Spring 论坛上看了不少Spring Security的相关文章.这些文章基本上都还是基 ...

  9. tornado 常见问题处理

    1 怎么获取从页面中的传值 使用 self.get_body_argument tornado的参数存储在self.request.body内,通过json以后就可以直接取值,当初我在前端使用angu ...

  10. vue.js 初步学习

    跟着b站上的视频来学 首先什么是vue.js? 跟着b站上视频来学:(o゚v゚)ノ <!DOCTYPE html> <html lang="en"> < ...