博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017 ZSTU寒假排位赛 #5
阅读量:6820 次
发布时间:2019-06-26

本文共 2878 字,大约阅读时间需要 9 分钟。

  题目链接:。

  A题,排序以后xjbg即可。

  B题,弄个数组记录当前列是不是删除以及当前行是不是已经大于下一行然后乱搞即可。

  C题,线段树写的比较无脑,但是可以直接搞,在遍历的时候记录最大的,然后继续找的时候更新答案即可。

  D题,题意是给出m个限制条件,每个限制条件表示[L,R]范围内&和为x。问是不是存在这样的数组。方法是线段树记录区间内&的和。然后m组每次更新[L,R]都使得|上x,因为要&为1,二进制下该位必须为1,而|上去能够使得这位结果必为1(很巧妙)。然后就可以做了。代码如下:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #define t_mid (l+r>>1)10 #define ls (o<<1)11 #define rs (o<<1|1)12 #define lson ls,l,t_mid13 #define rson rs,t_mid+1,r14 using namespace std;15 const int N = 100000 + 5;16 typedef long long ll;17 typedef pair
pii;18 19 int c[N<<2];20 int lazy[N<<2];21 int n,m;22 void up(int o) {c[o] = c[ls] & c[rs];}23 void down(int o,int l,int r)24 {25 if(l == r) return ;26 if(lazy[o])27 {28 c[ls] |= lazy[o];29 c[rs] |= lazy[o];30 lazy[ls] |= lazy[o];31 lazy[rs] |= lazy[o];32 lazy[o] = 0;33 }34 }35 void build(int o,int l,int r)36 {37 if(l == r)38 {39 c[o] = lazy[o] = 0;40 return ;41 }42 build(lson);43 build(rson);44 up(o);45 }46 void update(int o,int l,int r,int ql,int qr,int f)47 {48 if(l == ql && r == qr)49 {50 c[o] |= f;51 lazy[o] |= f;52 return ;53 }54 down(o,l,r);55 if(qr <= t_mid) update(lson,ql,qr,f);56 else if(ql > t_mid) update(rson,ql,qr,f);57 else58 {59 update(lson,ql,t_mid,f);60 update(rson,t_mid+1,qr,f);61 }62 up(o);63 }64 int query(int o,int l,int r,int ql,int qr)65 {66 if(l == ql && r == qr) return c[o];67 down(o,l,r);68 if(qr <= t_mid) return query(lson,ql,qr);69 else if(ql > t_mid) return query(rson,ql,qr);70 else return query(lson,ql,t_mid) & query(rson,t_mid+1,qr);71 }72 73 int x[N],y[N],z[N];74 bool can()75 {76 for(int i=1;i<=m;i++)77 {78 if(query(1,1,n,x[i],y[i]) != z[i]) return false;79 }80 81 puts("YES");82 for(int i=1;i<=n;i++) printf("%d%c",query(1,1,n,i,i), i==n?'\n':' ');83 return true;84 }85 86 int main()87 {88 cin >> n >> m;89 for(int i=1;i<=m;i++)90 {91 scanf("%d%d%d",x+i,y+i,z+i);92 update(1,1,n,x[i],y[i],z[i]);93 }94 if(can() == false) puts("NO");95 return 0;96 }
D

 

  E题,思路参见。我自己代码如下:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #define t_mid (l+r>>1)10 #define ls (o<<1)11 #define rs (o<<1|1)12 #define lson ls,l,t_mid13 #define rson rs,t_mid+1,r14 using namespace std;15 const int N = 100000 + 5;16 typedef long long ll;17 typedef pair
pii;18 19 ll a[100];20 ll p,q;21 int n;22 23 int main()24 {25 cin >> p >> q;26 cin >> n;27 for(int i=1;i<=n;i++) cin >> a[i];28 int i;29 for(i=1;i<=n;i++)30 {31 if(q == 0 || (double)p/q < a[i]) break;32 p -= a[i] * q;33 swap(p, q);34 }35 if(i == n + 1 && q == 0) puts("YES");36 else puts("NO");37 return 0;38 }
E

 

转载于:https://www.cnblogs.com/zzyDS/p/6351726.html

你可能感兴趣的文章
ubuntu 15.10下apache+php+mysql安装
查看>>
依赖Zookeeper生成全局唯一序列号
查看>>
ab压测工具以get方式&post方式压测
查看>>
RHCE 学习笔记(28) Target Service
查看>>
freemarker 数字格式化
查看>>
解决SELinux对网站目录权限控制的不当的问题
查看>>
2016年4月6日作业
查看>>
RxJava 学习笔记<十> 译 Leaving the monad
查看>>
Mariadb galera cluster 安装配置
查看>>
川模型 一款新的测试模型的提出与研究
查看>>
如何快速开发网站?
查看>>
手动创建并自动挂载swap分区
查看>>
cloudera search1.0.0环境搭建(1):搭建solrcloud
查看>>
bitnami-testlink 相关配置
查看>>
SpringBoot整合Quartz(升级版)
查看>>
导入sql语句 汉字编码不一样报异常
查看>>
html文本自动换行
查看>>
Exchange常见问题大全
查看>>
安装Sublime Text 2插件的方法
查看>>
我的友情链接
查看>>