CCPC赛后摸鱼搞了个新的奇怪外挂

这里贴上利用sgetn和sputn来实现的读入读出挂,理论上比fread更优

期望在赛中TLE的代码能强行卡过去hhh

利用小规模的Codeforces - 1036D进行测试

96ms version

#include<bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define rrep(i,j,k) for(int i=j;i>=k;i--)
#define println(x) print(x),print('\n');
#define printbk(x) print(x), print(' ');
typedef long long ll;
using namespace std;
const int MAXN = 3e5+11;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const ll ooo= 0x3f3f3f3f;
const int MOD = 1000000007;
/******************************************************************************************************/
const int BUFL = 1e6+11;
char Obuf[BUFL],Ibuf[BUFL];
char *optr=Obuf,*ist=0,*ied=0;
streambuf *sb,*ssb;
inline void print(char c){optr==Obuf+BUFL?(sb->sputn(Obuf,BUFL),optr=Obuf),*optr++=c:*optr++=c;}
inline void flush(){sb->sputn(Obuf,optr-Obuf);}
inline char pick(){return ist==ied?ied=Ibuf+ssb->sgetn(ist=Ibuf,BUFL),(ist==ied?-1:*ist++):*ist++;}
template<class T>
inline void print(T x){
if(x==0) {print(char(48));return;}
if(x<0){print(char('-'));x=-x;}
static char buf[233];
register int cnt;
for(cnt=0;x;x/=10) buf[++cnt]=x%10|48;
while(cnt) print(buf[cnt--]);
}
template<class T>
inline int read(T &o){
ll x; register char c,f; f=1;
while(!((c=pick())>='0'&&c<='9')&&(c^-1)&&(c^45));
if(c==-1) return EOF;
if(c==45) c=pick(),f=0;
for(x=c-48;(c=pick())>='0'&&c<='9';(x=((x<<3)+(x<<1)))+=c-48);
o=f?x:-x;return 1;
}
/******************************************************************************************************/
ll a[MAXN],b[MAXN],n,m;
ll sum1[MAXN],sum2[MAXN];
ll c[MAXN],d[MAXN];
int main(){
#ifndef ONLINE_JUDGE
freopen("stdin.txt","r",stdin);
#endif
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
ssb=cin.rdbuf();
sb=cout.rdbuf();
while(~read(n)){
rep(i,1,n) read(a[i]);
read(m);
rep(i,1,m) read(b[i]);
int cur1=1,cur2=1;
int lo=1;
rep(i,1,n) sum1[i]=sum1[i-1]+a[i];
rep(i,1,m) sum2[i]=sum2[i-1]+b[i];
cur2=lower_bound(sum2+1,sum2+1+m,a[1])-sum2;
int ans=0;
if(sum2[cur2]==a[1]) lo++,cur1++,cur2++,ans++;
while(cur1<=n&&cur2<=m){
ll tmp=sum1[cur1]-sum1[lo-1];
ll tmp2=sum2[cur2-1];
int pos=lower_bound(sum2+1,sum2+m+1,tmp2+tmp)-sum2;
if(sum2[pos]==tmp2+tmp){
cur1++;
ans++;
cur2=pos+1;
lo=cur1;
}else{
cur1++;
}
}
int mx=-1;
if(cur1==n+1&&cur2==m+1&&sum1[n]==sum2[m]){
mx=max(mx,ans);
}
rep(i,1,n) c[i]=a[i];
rep(i,1,m) d[i]=b[i];
rep(i,1,n) swap(b[i],c[i]);
rep(i,1,m) swap(d[i],a[i]);
swap(n,m); cur1=1,cur2=1;
lo=1;
rep(i,1,n) sum1[i]=sum1[i-1]+a[i];
rep(i,1,m) sum2[i]=sum2[i-1]+b[i];
cur2=lower_bound(sum2+1,sum2+1+m,a[1])-sum2;
ans=0;
if(sum2[cur2]==a[1]) lo++,cur1++,cur2++,ans++;
while(cur1<=n&&cur2<=m){
ll tmp=sum1[cur1]-sum1[lo-1];
ll tmp2=sum2[cur2-1];
int pos=lower_bound(sum2+1,sum2+m+1,tmp2+tmp)-sum2;
if(sum2[pos]==tmp2+tmp){
cur1++;
ans++;
cur2=pos+1;
lo=cur1;
}else{
cur1++;
}
}
if(cur1==n+1&&cur2==m+1&&sum1[n]==sum2[m]){
mx=max(mx,ans);
}
println(mx);
}
flush();
return 0;
}

389ms version

#include<bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define rrep(i,j,k) for(int i=j;i>=k;i--)
#define println(a) printf("%lld\n",(ll)(a))
#define printbk(a) printf("%lld ",(ll)(a))
typedef long long ll;
using namespace std;
const int MAXN = 3e5+11;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const ll ooo= 0x3f3f3f3f;
const int MOD = 1000000007;
ll read(){
ll x=0,f=1;register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
ll a[MAXN],b[MAXN],n,m;
ll sum1[MAXN],sum2[MAXN];
ll c[MAXN],d[MAXN];
int main(){
while(cin>>n){
rep(i,1,n) a[i]=read();
m=read();
rep(i,1,m) b[i]=read();
int cur1=1,cur2=1;
int lo=1;
rep(i,1,n) sum1[i]=sum1[i-1]+a[i];
rep(i,1,m) sum2[i]=sum2[i-1]+b[i];
cur2=lower_bound(sum2+1,sum2+1+m,a[1])-sum2;
int ans=0;
if(sum2[cur2]==a[1]) lo++,cur1++,cur2++,ans++;
while(cur1<=n&&cur2<=m){
ll tmp=sum1[cur1]-sum1[lo-1];
ll tmp2=sum2[cur2-1];
int pos=lower_bound(sum2+1,sum2+m+1,tmp2+tmp)-sum2;
if(sum2[pos]==tmp2+tmp){
cur1++;
ans++;
cur2=pos+1;
lo=cur1;
}else{
cur1++;
}
}
int mx=-1;
if(cur1==n+1&&cur2==m+1&&sum1[n]==sum2[m]){
mx=max(mx,ans);
} rep(i,1,n) c[i]=a[i];
rep(i,1,m) d[i]=b[i];
rep(i,1,n) swap(b[i],c[i]);
rep(i,1,m) swap(d[i],a[i]);
swap(n,m); cur1=1,cur2=1;
lo=1;
rep(i,1,n) sum1[i]=sum1[i-1]+a[i];
rep(i,1,m) sum2[i]=sum2[i-1]+b[i];
cur2=lower_bound(sum2+1,sum2+1+m,a[1])-sum2;
ans=0;
if(sum2[cur2]==a[1]) lo++,cur1++,cur2++,ans++;
while(cur1<=n&&cur2<=m){
ll tmp=sum1[cur1]-sum1[lo-1];
ll tmp2=sum2[cur2-1];
int pos=lower_bound(sum2+1,sum2+m+1,tmp2+tmp)-sum2;
if(sum2[pos]==tmp2+tmp){
cur1++;
ans++;
cur2=pos+1;
lo=cur1;
}else{
cur1++;
}
}
if(cur1==n+1&&cur2==m+1&&sum1[n]==sum2[m]){
mx=max(mx,ans);
}
println(mx);
}
return 0;
}

使用第二种(个人常用)的读入挂达到了389ms,而用了第一种的船新版本挂以后直接96ms(而且是读入占较少比重的情况下)

[黑科技]跑的比fread还快的cin挂和cout挂的更多相关文章

  1. 【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

    [导读]TensorFlow 在 2015 年年底一出现就受到了极大的关注,经过一年多的发展,已经成为了在机器学习.深度学习项目中最受欢迎的框架之一.自发布以来,TensorFlow 不断在完善并增加 ...

  2. 聊聊H5与JS近几年的黑科技

    聊聊H5与JS近几年的黑科技 自ajax技术的诞生,编程界兴起了一股WEB开发热,facebook,Twitter等众多大佬级企业都在网页应用上大放异彩,这十年我们见证了前端技术的崛起.这期间产生了众 ...

  3. GIAC2019 演讲精选 | 面向未来的黑科技——UI2CODE闲鱼基于图片生成跨端代码

    一直以来, 如何从‘视觉稿’精确的还原出 对应的UI侧代码 一直是端侧开发同学工作里消耗比较大的部分,一方面这部分的工作 比较确定缺少技术深度,另一方面视觉设计师也需要投入大量的走查时间,有大量无谓的 ...

  4. ACM: FZU 2105 Digits Count - 位运算的线段树【黑科技福利】

     FZU 2105  Digits Count Time Limit:10000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  5. 黑科技项目:英雄无敌III Mod <<Fallen Angel>>介绍

    英雄无敌三简介(Heroes of Might and Magic III) 英3是1999年由New World Computing在Windows平台上开发的回合制策略魔幻游戏,其出版商是3DO. ...

  6. [自己动手玩黑科技] 1、小黑科技——如何将普通的家电改造成可以与手机App联动的“智能硬件”

    NOW, 步 将此黑科技传授予你~ 一.普通家电控制电路板分析 普通家电,其人机接口一般由按键和指示灯组成(高端的会稍微复杂,这里不考虑) 这样交互过程,其实就是:由当前指示灯信息,按照操作流程按相应 ...

  7. C++的黑科技

    周二面了腾讯,之前只投了TST内推,貌似就是TST面试了 其中有一个问题,"如何产生一个不能被继承的类",这道题我反反复复只想到,将父类的构造函数私有,让子类不能调用,最后归结出一 ...

  8. Android黑科技,读取用户短信+修改系统短信数据库

    安卓系统比起ios系统最大的缺点,相信大家都知道,就是系统安全问题.这篇博客就秀一波“黑科技”. 读取用户短信 Android应用能读取用户手机上的短信,相信已经不是什么新鲜事,比如我们收到的短信验证 ...

  9. localStorage的黑科技-js和css缓存机制

    一.发现黑科技的起因  今天在微信公众号看到一篇技术博文,想用印象笔记收藏,所以发送了文章链接到pc上.然后习惯性地打开控制台,看看源码,想了解下最近微信用了什么新技术.  呵呵,以下勾起了我侦探的欲 ...

随机推荐

  1. Redis安装部署、Jedis的使用

    一.NoSQL概述 为什么需要NoSQL High performance -高并发读写 Huge Storage - 海量数据的高效率存储和访问 High Scalability && ...

  2. ruby变量

    Ruby 支持五种类型的变量. 一般小写字母.下划线开头:变量(Variable).局部变量的作用域从 class.module.def 或 do 到相对应的结尾或者从左大括号到右大括号 {}. 当调 ...

  3. 14 Finding a Shared Motif

    Problem A common substring of a collection of strings is a substring of every member of the collecti ...

  4. require的路径问题(比较重要)

    dojo.baseUrl baseUrl用来存储dojo.js存放 的跟目录,例如dojo.js的路径是“/web/scripts/dojo-1.3/dojo/dojo.js”则baseUrl为“/w ...

  5. java并发编程实战:第十六章----Java内存模型

    一.什么是内存模型,为什么要使用它 如果缺少同步,那么将会有许多因素使得线程无法立即甚至永远看到一个线程的操作结果 编译器把变量保存在本地寄存器而不是内存中 编译器中生成的指令顺序,可以与源代码中的顺 ...

  6. Android-解析JSON数据(JSON对象/JSON数组)

    在上一篇博客中,Android-封装JSON数据(JSON对象/JSON数组),讲解到Android真实开发中更多的是去解析JSON数据(JSON对象/JSON数组) 封装JSON的数据是在服务器端进 ...

  7. Windows 以及 Xcode下编译调试 libcurl 源码

    curl 这个工具大家都很熟悉. 前几天因为要跟踪curl的实现细节, 不得不设法搭建curl的调试工程. 我们分别在windows visual studio 和 mac 上的 xcode 下搭建调 ...

  8. 一起学习《C#高级编程》1--类型的安全性

    感觉写随笔第一天就遇到了困难,感觉好费时间啊,回宿舍就得8点多,然后只能看一点书.之后写随笔,首先得回忆,然后组织,最后打字.还有就是宿舍迎来的断网的日子,特别不方便,只能第二天去公司发.本人目前是. ...

  9. 自己从0开始学习Unity的笔记 VII (C#中类继承练习)

    好久都没有写了.今天做了类继承的练习,做了一个小队,进行简单的判定. namespace 兵团建立练习 { class ServantBasics { public string name; //pr ...

  10. IEqualityComparer的使用

    当我们用Linq操作我们自定义的对像数组时,我们会发现有些方法直接使用的话根本不起作用,比如:Distinct.Except.Intersect等扩展方法. 对于我们自定义的对象的比较,我们必须实现I ...