[考试反思]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 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
随机推荐
- java第4天:String static Arrays类,Math类
1 字符串的概述和特点 字符串一旦创建,是不可变的. 有双引号的就是字符串 *** 2 字符串的三种构造方法 2-1 第一种: 格式:String str = new String();| :-| 2 ...
- 怎么给slice加一个Insert方法呢?而不用丑陋的两次append….
package main import ( "fmt" "reflect" ) func Insert(slice interface{}, pos int, ...
- 扛住阿里双十一高并发流量,Sentinel是怎么做到的?
Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景 本文介绍阿里开源限流熔断方案Sentinel功能.原理.架构.快速入门以及相关框架比较 基本介绍 1 名词解释 服务限流 :当系 ...
- MIPI CSI2-TX接口基于FPGA实现
MIPI CSI2-TX用途: 跟海思的3559A芯片进行图像数据传输: MIPI CSI2-TX接口特性: xilinx 7系列芯片最大支持1.25Gbps: 最大支持lanes数量为4: 支持的图 ...
- LeetCode_933-Number of Recent Calls
求最近3000毫秒内有多少次调用请求,每一次ping的时间一定比上一次的时间高:解法可以判断最后面一个数t1与最前一个数t2的差不大于3000毫秒,如果大于就直接舍弃,t1与t2之间的个数就是请求次数 ...
- 为什么那么多自学JAVA的后来都放弃了?总结起来就这些原因
目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Java开发. 目前来讲市场上需要的Java人员非 ...
- Java总结---继承(不断完善ing..)
java三大特性:封装.继承.多态 继承 一.目的:实现代码的复用 二.简单例子(A继承了C): public class A extends C { //检测哪些可以在子类里使用 public vo ...
- Web安全之CSRF漏洞整理总结
这两天整理和编写了csrf的靶场,顺便也复习了以前学习csrf的点,这里记录下学习的总结点. 0x01 关于CSRF 跨站请求伪造 CSRF(Cross-site request forgery)跨站 ...
- Java反序列化漏洞总结
本文首发自https://www.secpulse.com/archives/95012.html,转载请注明出处. 前言 什么是序列化和反序列化 Java 提供了一种对象序列化的机制,该机制中,一个 ...
- Vue 全家桶,深入Vue 的世界
内容简介: Vue 实例上的属性 Vue 生命周期 Vue 数据绑定 computed 计算属性 watch 监听器 Vue 组件 Vue 组件 extend Vue 组件高级属性 Vue 的rend ...