菜得过分。

面对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. Java 从入门到进阶之路(七)

    在之前的文章中我们介绍了一下 java 中的对象和类,接下来我们来看一下 Java 中的方法重载. 在显示生活中,我们肯定会遇到这样一个问题,那就是我们再商场买东西的时候在付账时的选择.如下 A:在收 ...

  2. 想转行做3D游戏模型,如何快速入行

    随着技术和硬件迭代,3D建模,广泛运用在游戏,影视,动画,VR等领域,而且就业面非常广. 由于3D美术设计师薪资和前景确实都不错,很多同学想进入这个行业,从事相关工作,但是没有一个整体的学习思路和规划 ...

  3. 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等

    本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...

  4. 【EasyCi】持续集成交付,一键式自动化部署系统,开箱即用

    前言 本人是一家互联网公司的java开发,由于公司初期公司未招运维人员,恰好我对linux比较熟悉,便在公司服务器搭建了一套Jenkins.Gitlab.Maven私服.Docker私服.Sonarq ...

  5. 关于seaJs合并压缩(gulp-seajs-combine )路径与文件ID匹配问题。

    前段时间和有大家介绍过用 gulp-seajs-combine 来打包seaJs文件.大家会发现合并seaJs一个很奇怪的现象,那就是它的 ID和路径匹配原则.使得有些文件已经合并过去了,但还是会提示 ...

  6. [Luogu4550] 收集邮票

    题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...

  7. opencv::视频人脸检测

    视频流抓取人脸和眼睛 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using nam ...

  8. IIS6.0使用冒号上传漏洞利用

    利用条件: 1.iis版本为6.0  2.上传文件名不会重命名 利用: 上传一个jpg木马图片 名字为:cs.asp:.jpg 注意是: 默认windows是不允许文件字含:(冒号)的 所以需要抓包后 ...

  9. Mobius反演学习

    这篇文章参考了许多资料和自己的理解. 先放理论基础. 最大公约数:小学学过,这里只提一些重要的公式: $·$若$a=b$,则$\gcd(a,b)=a=b$: $·$若$\gcd(a,b)=d$,则$\ ...

  10. 身为一个 CS专业的留学生,你还在为堆积如山的编程assignment而发愁吗?

    每个人都渴望圆梦,当我们看见梦想在别人身上实现时,总在抱怨幸运之神为何不眷顾自己:其实更多的时候,梦想就在你身边的不远处,只要你迈出正确的步伐. 记得刚入大学时,意气风发.我以全班前几名的优异成绩考入 ...