[考试反思]0929csp-s模拟测试55:消逝


菜得过分。
面对T1的大板子不知所措,然后T2的贪心不小心把排序语句删了。。。
T1这种大模板啊。。。其实我是觉得我能打出来的,然后先用一个小时码了一个2k。
然后做T2想贪心就出来了。十分钟码完T3暴力之后回T1打对拍瞬间爆炸。
于是又重新打了一个2k,WA0。对拍发现。
然后考试就没几分钟了交暴力走了。
不要打完就跑,记得早点对拍改进思路。
T1:联
的确是挺裸的线段树。离散化或者权值线段树都可以。
但是考场上两个都打出来都死了。
最后用离散化A的。
#include<cstdio>
#include<unordered_map>
#include<algorithm>
using namespace std;
#define inf 10000001
unordered_map<long long,int>M;
int m,cnt,k[];long long x[],l[],r[],re[];
struct Segment_Tree{
int cl[],cr[],lz[],lzxor[],w0[],w1[];
void build(int p,int l,int r){
cl[p]=l;cr[p]=r;lz[p]=-;w0[p]=l;w1[p]=inf;
if(l==r)return;
build(p<<,l,l+r>>);build(p<<|,(l+r>>)+,r);
}
void up(int p){w0[p]=min(w0[p<<],w0[p<<|]);w1[p]=min(w1[p<<],w1[p<<|]);}
void down(int p){
if(lz[p]!=-){
lz[p<<]=lz[p],lz[p<<|]=lz[p];
lzxor[p<<]=lzxor[p<<|]=;
if(lz[p])w1[p<<]=cl[p<<],w1[p<<|]=cl[p<<|],w0[p<<]=w0[p<<|]=inf;
else w1[p<<]=w1[p<<|]=inf,w0[p<<]=cl[p<<],w0[p<<|]=cl[p<<|];
lz[p]=-;
}else if(lzxor[p]){
if(lz[p<<]!=-)lz[p<<]^=;else lzxor[p<<]^=;
if(lz[p<<|]!=-)lz[p<<|]^=;else lzxor[p<<|]^=;
swap(w1[p<<],w0[p<<]);
swap(w1[p<<|],w0[p<<|]);
lzxor[p]=;
}
up(p);
}
void set(int p,int l,int r,int w){
if(l<=cl[p]&&cr[p]<=r){
lz[p]=w;lzxor[p]=;
if(w)w1[p]=cl[p],w0[p]=inf;
else w1[p]=inf,w0[p]=cl[p];
return;
}
down(p);
if(l<=cr[p<<])set(p<<,l,r,w);
if(r>=cl[p<<|])set(p<<|,l,r,w);
up(p);
}
void Xor(int p,int l,int r){
if(l<=cl[p]&&cr[p]<=r){
if(lz[p]!=-)lz[p]^=;else lzxor[p]^=;
swap(w0[p],w1[p]);
return;
}
down(p);
if(l<=cr[p<<])Xor(p<<,l,r);
if(r>=cl[p<<|])Xor(p<<|,l,r);
up(p);
}
}Tree;
main(){
scanf("%d",&m);
for(int i=;i<=m;++i)scanf("%d%lld%lld",&k[i],&l[i],&r[i]),x[i]=l[i],x[m+i]=r[i],x[m+m+i]=r[i]+;
sort(x+,x++m+m+m);
for(int i=;i<=m*;++i)if(x[i]!=x[i-])M[x[i]]=++cnt,re[cnt]=x[i];
for(int i=;i<=m;++i)l[i]=M[l[i]],r[i]=M[r[i]];
if(M.find()==M.end()){for(int i=;i<=m;++i)puts("");return ;}
Tree.build(,,cnt);Tree.lz[]=;
for(int i=;i<=m;++i){
if(k[i]==)Tree.set(,l[i],r[i],);
if(k[i]==)Tree.set(,l[i],r[i],);
if(k[i]==)Tree.Xor(,l[i],r[i]);
printf("%lld\n",re[Tree.w0[]]);
}
}
思路积累:
- 线段树模板
T2:赛
三分其实不完全正确。虽然secret证明了单峰性质,但是ooo给出了函数值在谷底以外的地方不严格单调的例子。
直接贪心的话我们会发现决策有点复杂而且还可能会反悔。
但是其实只有四种物品,它们内部先排一下序(一定要排序啊啊啊)
根据数据范围的提示,两人都喜欢的物品是特殊的。
然后如果我们确定了两人都喜欢的物品的选择数量,剩下的贪心决策就好说了。
总费用关于它是个单峰函数(非严格)。
注意左右端点。
#include<cstdio>
#include<algorithm>
using namespace std;
struct ps{
int c1,c2;long long v;
friend bool operator<(ps a,ps b){return a.v<b.v;}
}p[];
int n,m,k,a,b,n0,n1,n2,n3;long long v[],c1[],c2[];
long long q0[],q1[],q2[],q3[],ans=100000000000000000ll;
long long chk(int p){
long long tot=,lft=m-k-(k-p);
for(int i=;i<=p;++i)tot+=q3[i];
for(int j=;j<=k-p;++j)tot+=q1[j]+q2[j];
int p0=,p1=k-p+,p2=k-p+;
while(lft--)
if(q0[p0]<q1[p1]&&q0[p0]<q2[p2])tot+=q0[p0],p0++;
else if(q1[p1]<q2[p2])tot+=q1[p1],p1++;
else tot+=q2[p2],p2++;
ans=min(ans,tot);//printf("%d %lld\n",p,tot);
return tot;
}
main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;++i)scanf("%lld",&v[i]);
scanf("%d",&a);for(int i=,x;i<=a;++i)scanf("%d",&x),c1[x]=;
scanf("%d",&b);for(int i=,x;i<=b;++i)scanf("%d",&x),c2[x]=;
for(int i=;i<=n;++i)
if(c1[i]&&c2[i])q3[++n3]=v[i];
else if(c1[i])q1[++n1]=v[i];
else if(c2[i])q2[++n2]=v[i];
else q0[++n0]=v[i];
sort(q0+,q0+n0+);
sort(q1+,q1+n1+);
sort(q2+,q2+n2+);
sort(q3+,q3+n3+);
q0[n0+]=q1[n1+]=q2[n2+]=1000000000000ll;
int l=,r=n3;
l=max(l,max(k-n1,k-n2));l=max(l,*k-m);//printf("%d %d\n",l,r);
if(l>r){puts("-1");return ;}
while(l<r-)if(chk(l+r>>)<chk((l+r>>)+))r=l+r>>;else l=l+r>>;
for(int i=l;i<=r;++i)chk(i);
printf("%lld\n",ans);
}
- 贪心
- 单峰函数三分
- 这两个知识点总在一起出现?
T3:题
见下发题解。
挺神仙的。
#include<cstdio>
#include<bitset>
using namespace std;
bitset<>B[];
int n,m,a[],b[],ans;
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;++i)scanf("%d%d",&a[i],&b[i]);
for(int i=;i<=n;++i)B[i][i]=;
for(int i=;i<=n;++i)for(int j=m;j;--j)
if(B[i][a[j]]&&B[i][b[j]]){B[i].reset();break;}
else if(B[i][a[j]]&&!B[i][b[j]])B[i][b[j]]=;
else if(B[i][b[j]]&&!B[i][a[j]])B[i][a[j]]=;
for(int i=;i<=n;++i)if(B[i].any())for(int j=i+;j<=n;++j)if(B[j].any()&&(B[i]&B[j]).none())ans++;
printf("%d\n",ans);
}
什么时候才能回到原来的状态啊。。。
为什么会这么菜啊。。。
可是我好像会做啊。。。
[考试反思]0929csp-s模拟测试55:消逝的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- 2019.9.29 csp-s模拟测试55 反思总结
不咕咕咕是一种美德[大雾] 头一次体会到爆肝写题解??? 这次考试我们没赶上,是后来掐着时间每个人自己考的.我最后的分数能拿到152…熟悉的一题AC两题爆炸. 强烈吐槽出题人起名走心 T1联: 发现每 ...
- csp-s模拟测试55(9.29)联「线段树」·赛「??」题「神仙DP」
T1 联 考试两个小时终于调过了,话说一个傻逼错最后还是静态查出错的..... 大概维护两个懒标记,一个区间覆盖,一个区间异或,然后保证每个区间只会存在一种懒标记. 然后维护区间0的个数,查询时查询那 ...
- 9.29 csp-s模拟测试55 联+赛+题
T1 联 $n$最大到$1e18$,根本没法做,但$m$只有$1e5$,发现有很多区间是一起动的,或者根本没动,所以可以把区间离散化掉,然后线段树区间修改,对于第三种修改,只需要把它分解成一段一段相同 ...
- csp-s模拟测试55 联,赛,题题解
题面:https://www.cnblogs.com/Juve/articles/11610969.html 联: 用线段树维护区间和,要修改成1或0就线段树修改区间和 如果是异或,那么新的区间和就是 ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- [考试反思]1109csp-s模拟测试106:撞词
(撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...
- [考试反思]0909csp-s模拟测试41:反典
说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
随机推荐
- Docker 第一个HelloWorld镜像
Docker 创建第一个HelloWorld镜像: 创建Dockerfile FROM alpine CMD "echo" "Hello World!" 通过D ...
- 针对于ECMA5Script 、ECMAScript6、TypeScript的认识
什么是ECMAScript.什么又是ECMA? Ecma国际(Ecma International)是一家国际性会员制度的信息和电信标准组织.1994年之前,名为欧洲计算机制造商协会(European ...
- Linux被中断的系统调用
慢系统调用,指的是可能永远无法返回,从而使进程永远阻塞的系统调用,比如无客户连接时的accept.无输入时的read都属于慢速系统调用. 在Linux中,当阻塞于某个慢系统调用的进程捕获一个信号,则该 ...
- java第1天:简介,入门程序,变量,常量
1 java语言简介 美国的SUN公司开发的静态面向对象的编程语言,后来被甲骨文公司收购,现在也是全球范围内最受欢迎的编程语言. *** 2 计算机进制的相互转换 进制 英文代号 2进制 bin 8进 ...
- 设计模式----创建型模式之工厂模式(FactoryPattern)
工厂模式主要分为三种简单工厂模式.工厂方法模式.抽象工厂模式三种.顾名思义,工厂主要是生产产品,作为顾客或者商家,我们不考虑工厂内部是怎么一个流程,我们要的是最终产品.将该种思路放在我们面向对象开发实 ...
- A-06 最小角回归法
目录 最小角回归法 一.举例 二.最小角回归法优缺点 2.1 优点 2.2 缺点 三.小结 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等 ...
- Linux内核版本介绍与查询
Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...
- 解决:Specifying a namespace in include() without providing an app_name和XXX is not a registered namespace问题
python3 Django 环境下,如果你遇到namespace没有注册以及在根目录下urls.py中的include方法的第二个参数namespace添加之后就出错的问题. 出错问题: 'Spec ...
- Kubernetes之Flannel介绍
Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址. 在Kubernetes ...
- 原生无缝Banner轮播图
话不多说,先展示效果图.由于录制工具,稍显卡顿,实际是流畅的.可以看到实现了无缝轮播,鼠标悬停,点击左右上下按钮切换Banner的功能,如图1所示. 图1 原生无缝banner效果展示 以我这个轮播图 ...