
牛客算法周周练11水题
发布日期:2021-05-07 23:18:11
浏览次数:25
分类:原创文章
本文共 5278 字,大约阅读时间需要 17 分钟。
Powered by:AB_IN 局外人
第一次练习赛AK。
纯模拟,没什么好说的。
#include <bits/stdc++.h>#pragma GCC optimize(2)#pragma GCC optimize(3)typedef unsigned long long ll;const ll maxn=1e6;using namespace std;namespace IO{ char ibuf[1<<21],*ip=ibuf,*ip_=ibuf; char obuf[1<<21],*op=obuf,*op_=obuf+(1<<21); inline char gc(){ if(ip!=ip_)return *ip++; ip=ibuf;ip_=ip+fread(ibuf,1,1<<21,stdin); return ip==ip_?EOF:*ip++; } inline void pc(char c){ if(op==op_)fwrite(obuf,1,1<<21,stdout),op=obuf; *op++=c; } inline ll read(){ register ll x=0,ch=gc(),w=1; for(;ch<'0'||ch>'9';ch=gc())if(ch=='-')w=-1; for(;ch>='0'&&ch<='9';ch=gc())x=x*10+ch-48; return w*x; } template<class I> inline void write(I x){ if(x<0)pc('-'),x=-x; if(x>9)write(x/10);pc(x%10+'0'); } class flusher_{ public: ~flusher_(){ if(op!=obuf)fwrite(obuf,1,op-obuf,stdout);} }IO_flusher;}using namespace IO;ll n,t,a,b,p[maxn],q[maxn],sum1,sum2,ans1,ans2;int main(){ n=read();t=read();a=read();b=read();sum1=sum2=t; for(int i=1;i<=n;i++) p[i]=read();//时间 for(int i=1;i<=n;i++) q[i]=read();//难度 for(int i=1;i<=n;i++) { if(q[i]<a&&sum1>=p[i])sum1-=p[i],ans1++; if(q[i]<b&&sum2>=p[i])sum2-=p[i],ans2++; else if(q[i]>=b&&sum2>=2*p[i])sum2-=2*p[i],ans2++; } write(ans1);pc(32);write(ans2); return 0;}
感觉大佬们好像是被题面吓到了。。其实就是单纯的模拟。
差点超时,不是最佳解。
#include <bits/stdc++.h>#pragma GCC optimize(2)#pragma GCC optimize(3)typedef unsigned long long ll;const ll maxn=1e6;using namespace std;namespace IO{ char ibuf[1<<21],*ip=ibuf,*ip_=ibuf; char obuf[1<<21],*op=obuf,*op_=obuf+(1<<21); inline char gc(){ if(ip!=ip_)return *ip++; ip=ibuf;ip_=ip+fread(ibuf,1,1<<21,stdin); return ip==ip_?EOF:*ip++; } inline void pc(char c){ if(op==op_)fwrite(obuf,1,1<<21,stdout),op=obuf; *op++=c; } inline ll read(){ register ll x=0,ch=gc(),w=1; for(;ch<'0'||ch>'9';ch=gc())if(ch=='-')w=-1; for(;ch>='0'&&ch<='9';ch=gc())x=x*10+ch-48; return w*x; } template<class I> inline void write(I x){ if(x<0)pc('-'),x=-x; if(x>9)write(x/10);pc(x%10+'0'); } class flusher_{ public: ~flusher_(){ if(op!=obuf)fwrite(obuf,1,op-obuf,stdout);} }IO_flusher;}using namespace IO;ll n,t,a[maxn],op1,l,r,k,sum;int main(){ n=read();t=read(); for(ll i=1;i<=n;i++) a[i]=read(); while(t--){ op1=read();sum=0; if(op1==1){ l=read();r=read(); for(ll i=l;i<=r;i++) sum+=a[i]; write(sum);pc('\n'); } else{ l=read();r=read();k=read(); for(ll i=l;i<=r;i++) a[i]^=k; } }}
正解是dfs+贪心。下面是菜鸡的偷鸡做法。
cin cout
不能与IO
的同用。
#include <bits/stdc++.h>#pragma GCC optimize(2)#pragma GCC optimize(3)typedef unsigned long long ll;const ll maxn=1e3+10;using namespace std;namespace IO{ char ibuf[1<<21],*ip=ibuf,*ip_=ibuf; char obuf[1<<21],*op=obuf,*op_=obuf+(1<<21); inline char gc(){ if(ip!=ip_)return *ip++; ip=ibuf;ip_=ip+fread(ibuf,1,1<<21,stdin); return ip==ip_?EOF:*ip++; } inline void pc(char c){ if(op==op_)fwrite(obuf,1,1<<21,stdout),op=obuf; *op++=c; } inline ll read(){ register ll x=0,ch=gc(),w=1; for(;ch<'0'||ch>'9';ch=gc())if(ch=='-')w=-1; for(;ch>='0'&&ch<='9';ch=gc())x=x*10+ch-48; return w*x; } template<class I> inline void write(I x){ if(x<0)pc('-'),x=-x; if(x>9)write(x/10);pc(x%10+'0'); } class flusher_{ public: ~flusher_(){ if(op!=obuf)fwrite(obuf,1,op-obuf,stdout);} }IO_flusher;}//using namespace IO;char a[maxn][maxn];int t,n,m;int main(){ scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); //n=read();m=read(); for(int i=1;i<=n;i++){ cin>>a[i]+1; } if(a[1][1]=='R') puts("dreagonm"); else if(a[1][1]=='G') puts("fengxunling"); else puts("BLUESKY007"); }}
经典差分题,没啥好说的。。
#include <bits/stdc++.h>#pragma GCC optimize(2)#pragma GCC optimize(3)typedef long long ll;const ll maxn=1e6;using namespace std;namespace IO{ char ibuf[1<<21],*ip=ibuf,*ip_=ibuf; char obuf[1<<21],*op=obuf,*op_=obuf+(1<<21); inline char gc(){ if(ip!=ip_)return *ip++; ip=ibuf;ip_=ip+fread(ibuf,1,1<<21,stdin); return ip==ip_?EOF:*ip++; } inline void pc(char c){ if(op==op_)fwrite(obuf,1,1<<21,stdout),op=obuf; *op++=c; } inline ll read(){ register ll x=0,ch=gc(),w=1; for(;ch<'0'||ch>'9';ch=gc())if(ch=='-')w=-1; for(;ch>='0'&&ch<='9';ch=gc())x=x*10+ch-48; return w*x; } template<class I> inline void write(I x){ if(x<0)pc('-'),x=-x; if(x>9)write(x/10);pc(x%10+'0'); } class flusher_{ public: ~flusher_(){ if(op!=obuf)fwrite(obuf,1,op-obuf,stdout);} }IO_flusher;}using namespace IO;ll n,a[maxn],b[maxn],ans1,ans2;int main(){ n=read(); for(int i=1;i<=n;i++){ a[i]=read(); b[i]=a[i]-a[i-1]; if(b[i]>0) ans1+=b[i]; else ans2-=b[i]; } write(max(ans1,ans2)); pc('\n');}
完结。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月31日 02时05分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
查询某表格上次进行vacuum的时间
2021-05-08
invalid byte sequence for encoding
2021-05-08
redis向数组中添加值并查看数组长度
2021-05-08
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2021-05-08
技术美术面试问题整理
2021-05-08
C++学习记录 五、C++提高编程(2)
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
js求阶乘
2021-05-08
简单的xml读取存储方法(未优化)
2021-05-08
Nginx---惊群
2021-05-08
项目中常用的审计类型概述
2021-05-08
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
ButterKnife使用问题
2021-05-08
为什么讨厌所谓仿生AI的说法
2021-05-08
ORACLE 客户端工具
2021-05-08
Pyinstaller打包的exe文件过大的解决方法
2021-05-08
Linux的软链接跟Windows快捷方式一样?
2021-05-08