菜得过分。

面对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:消逝的更多相关文章

  1. [考试反思]0718 NOIP模拟测试5

    最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...

  2. 2019.9.29 csp-s模拟测试55 反思总结

    不咕咕咕是一种美德[大雾] 头一次体会到爆肝写题解??? 这次考试我们没赶上,是后来掐着时间每个人自己考的.我最后的分数能拿到152…熟悉的一题AC两题爆炸. 强烈吐槽出题人起名走心 T1联: 发现每 ...

  3. csp-s模拟测试55(9.29)联「线段树」·赛「??」题「神仙DP」

    T1 联 考试两个小时终于调过了,话说一个傻逼错最后还是静态查出错的..... 大概维护两个懒标记,一个区间覆盖,一个区间异或,然后保证每个区间只会存在一种懒标记. 然后维护区间0的个数,查询时查询那 ...

  4. 9.29 csp-s模拟测试55 联+赛+题

    T1 联 $n$最大到$1e18$,根本没法做,但$m$只有$1e5$,发现有很多区间是一起动的,或者根本没动,所以可以把区间离散化掉,然后线段树区间修改,对于第三种修改,只需要把它分解成一段一段相同 ...

  5. csp-s模拟测试55 联,赛,题题解

    题面:https://www.cnblogs.com/Juve/articles/11610969.html 联: 用线段树维护区间和,要修改成1或0就线段树修改区间和 如果是异或,那么新的区间和就是 ...

  6. [考试反思]0814NOIP模拟测试21

    前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...

  7. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

  8. [考试反思]0909csp-s模拟测试41:反典

    说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...

  9. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

随机推荐

  1. 集合线性表--List之LinkedList(队列与栈)

    队列和栈1. Queue 队列(Queue)是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式:只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素.队列遵循 ...

  2. MongoDB 学习笔记之 删除数据,集合,数据库

    删除数据,集合,数据库: 删除一个文档: db.media.deleteOne({"name": "Sky"}) 删除多个文档: db.media.delete ...

  3. Nginx internal 指令限制访问图片资源文件

    Nginx 的 internal 指令可以用来限制 Web 公共目录下的图片等资源文件被任意用户直接访问.一个明显的使用场景是,对于用户上传的认证图片,属于个人隐私资源,不应该让所有用户都能访问得到, ...

  4. cocos2d-x Windows 环境搭建

    本文cocos2d-x版本为3.14,3之后的版本差别不会很大 Python环境 由于需要用到几个.py文件建立工程,我们要先设置好python2.x的环境 python官网下载,在找到2.x的版本的 ...

  5. python编程基础之四

    注释: 单行注释 #    例: # age = 10 多行注释  三引号“”“  ”“”,‘‘‘ ’’’ 例:“““  age = 10   ””” 只要注释较难的代码, 注释比例大概占总数的30% ...

  6. Error response from daemon: Get https://registry-1.docker.io/v2/library/nginx/manifests/1.14-alpine: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fnginx%3Apull&service=registry.docker.

    docker pull 镜像时报错: Error response from daemon: Get https://registry-1.docker.io/v2/library/nginx/man ...

  7. 代码审计-MetInfo 6.0.0 sql注入漏洞

    首先漏洞存在于app\system\message\web\message.class.php文件中,变量{$_M[form][id]} 直接拼接在SQL语句中,且验证码检测函数是在SQL语句查询之后 ...

  8. 浏览器安装Tampermonkey(俗称油猴子插件),实现免费观看Vip视频、免费下载付费资源等……

    应用场景 说起浏览器,本人常用google,谷歌浏览器,速度快,里面有很多插件,可以实现用户百度云盘下载限制,破解vip视频.百度广告屏蔽,视频广告的屏蔽,百度网盘资源直接下载等实用功能.今天就来分享 ...

  9. LeetCode初级算法--动态规划01:爬楼梯

    LeetCode初级算法--动态规划01:爬楼梯 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...

  10. cookie session token 详解

    cookie 是保存在本地终端的数据.cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器. 可以在浏 ...