[黑科技]市面上不太常见的cin挂和cout挂

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(而且是读入占较少比重的情况下)

原文地址:https://www.cnblogs.com/caturra/p/9697186.html

时间: 2024-10-09 09:49:43

[黑科技]市面上不太常见的cin挂和cout挂的相关文章

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

[导读]TensorFlow 在 2015 年年底一出现就受到了极大的关注,经过一年多的发展,已经成为了在机器学习.深度学习项目中最受欢迎的框架之一.自发布以来,TensorFlow 不断在完善并增加新功能,直到在这次大会上发布了稳定版本的 TensorFlow V1.0.这次是谷歌第一次举办的TensorFlow开发者和爱好者大会,我们从主题演讲.有趣应用.技术生态.移动端和嵌入式应用多方面总结这次大会上的Submit,希望能对TensorFlow开发者有所帮助. TensorFlow:面向大

亚马逊amazon黑科技--提高关键词搜索排名上首页

不管是做淘宝,ebay还是做亚马逊,只要是电商平台,都躲不多一个问题:如何使自己的产品排到搜索页面的首页,或者最好是排到搜索结果的前三名?数据统计表明,amazon平台80%的订单都被前3名瓜分掉了.因此,今天经纬互联电商学院的讲师就和大家分享一下亚马逊的排名规则. 一.A9搜索原理 亚马逊Amazon使用的搜索引擎叫做A9算法,Algorithm是算法的意思,以A开头,正好是9个字母,所以叫做A9.所以,不存在A8,更不存在A10的说法.不管A9算法怎么升级更新,永远都叫做A9算法.A9算法最

qt的应用层主要是大型3d,vr,管理软件和器械嵌入软件(有上千个下一代软件黑科技项目是qt的,美国宇航局,欧洲宇航局,超级战舰DDG1000)

作者:Nebula.Trek链接:https://www.zhihu.com/question/24316868/answer/118944490来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. qt的应用层主要是大型3d,vr,管理软件和器械嵌入软件.日常生活中所用的qt产品比较少.也就virtual box,google earth,VLC player等.但是大型系统就正好相反,这是c++决定的,而非qt. 除了Maya之外,包括Houdini,斯特拉电车的系

郭盛华是如何登上神坛?令全世界认识了中国的黑科技

郭盛华出生于广东肇庆,生长在贫困家庭,父母是个农民.小时候,因为他自己非常清楚,努力工作和求取知识才是唯一的出路.因此在父母反对下,刚初中毕业的郭盛华走出乡村,前往肇庆市报读了中专计算机行业,由此开始了他的中专电脑生涯. 郭盛华虽然是南方人,但性格刚烈果断,吃软不吃硬.从小的郭盛华对电脑技术几乎是喜欢到走火入魔的状态,有着披荆斩棘的决心和勇气.其实有很多传奇人物,原来都是平凡的出身,郭盛华也不例外. 选择行业的重要性?曾经有经济学家说过这样一句话:判断一个行业是否有活力和发展潜力,就看这个行业能

Python3网络爬虫(十一):爬虫黑科技之让你的爬虫程序更像人类用户的行为(代理IP池等)

原文链接: Jack-Cui,http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 1 前言 近期,有些朋友问我一些关于如何应对反爬虫的问题.由于好多朋友都在问,因此决定写一篇此类的博客.把我知道的一些方法,分享给大家.博主属于小菜级别,玩爬虫也完全是处于兴趣爱好,如有不足之处,还望指正. 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于

今年黑科技趋势最具的五个看点

CES 2017年人工智能引爆全球最火黑科技盛会 CES 2017 1月5日-8日在美国拉斯维加斯举行,数千家企业.几十万人将参与到这次科技的狂欢秀中.本文为埃森哲技术总监带来的关于本年度CES 的5大看点.他认为:人工智能将统治本年度的CES,变得无处不在.另外,他还分析了智能助理.物联网安全.虚拟现实等多个领域在本届大会上的表现. 2017 年国际消费电子展(CES 2017)将于1月5号拉开帷幕,在这个荒漠之城举办为期5天的展会,保守估计会吸引超过177000名参会者. 这也是一年之中唯一

试读—增长黑客,创业公司必知的“黑科技”

概述 刚一看到书名,最引起注意的是黑客两个字,那个带着神秘色彩,让无数程序员羡慕嫉妒恨的角色.但仔细一看,增长黑客,创业公司必知的"黑科技",是讲公司如何以切实的依据.低廉的成本.可控的风险来达成用户增长.活跃度上升.收入额增加等知识及案例的,这对于初创公司又没有充足的资金去燃烧以改变用户习惯的情况无疑是雪中送炭.指北之针. 什么是增长黑客? 本书适合哪些读者? 增长 靠原始积累实现增长的时代已经过去,也不适合互联网.移动互联网.互联网+的模式.我们经常能看到类似的新闻"某公

【转】这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已

[转]这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已 Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的 本文秉承着:你看不懂是你SB,我写的代码就要牛逼. 1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的都弱爆了 2.如何装逼用代码骂别人SB (!(~+[])+{})[--[~+&qu

[黑科技]常数优化的一些技巧

感谢wys和小火车普及这些技巧qwq 这篇文章大概没什么营养 我们来看一道十分简单的题目: 设n=131072,输入两个长度为n的数列和,要求输出一个长度为n的数列. 其中,. 首先我们来讲讲这题怎么做. 如果数据是随机的,那么有一种神奇的做法:在a和b中分别挑出最大的p个元素,对于每个i暴力枚举每个p进行更新,这样的复杂度是O(np)的,正确性我不会分析= = 那么数据不是随机的...那么估计没有什么快速的算法,不如暴力! 以下的运行时间均为在我的渣渣笔记本中测试得到,仅供参考.测试环境Ubu