Template && 笔记

#pragma GCC diagnostic error "-std=c++11"
#pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-funsafe-loop-optimizations,-fexpensive-optimizations,-foptimize-sibling-calls,-ftree-switch-conversion,-finline-small-functions,inline-small-functions,-frerun-cse-after-loop,-fhoist-adjacent-loads,-findirect-inlining,-freorder-functions,no-stack-protector,-fpartial-inlining,-fsched-interblock,-fcse-follow-jumps,-fcse-skip-blocks,-falign-functions,-fstrict-overflow,-fstrict-aliasing,-fschedule-insns2,-ftree-tail-merge,inline-functions,-fschedule-insns,-freorder-blocks,-fwhole-program,-funroll-loops,-fthread-jumps,-fcrossjumping,-fcaller-saves,-fdevirtualize,-falign-labels,-falign-loops,-falign-jumps,unroll-loops,-fsched-spec,-ffast-math,Ofast,inline,-fgcse,-fgcse-lm,-fipa-sra,-ftree-pre,-ftree-vrp,-fpeephole2",3)
#pragma GCC target("avx","sse2")
#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
#define rrep(i,j,k) for(register int i=j;i>=k;i--)
#define erep(i,u) for(register int i=head[u];~i;i=nxt[i])
#define print(a) printf("%lld",(ll)(a))
#define printbk(a) printf("%lld ",(ll)(a))
#define println(a) printf("%lld\n",(ll)(a))
using namespace std;
const int MAXN = 1e6+11;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-7;
typedef long long ll;
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;
}

UPD.加了点玄学优化..

VS Code 定制头文件

#pragma GCC diagnostic error "-std=c++11"
#include<ext/pb_ds/priority_queue.hpp>
#include<bits/stdc++.h>
using namespace std;
using namespace __gnu_pbds; 
double dp[2333];
double f[233][2333];
int main(){
    #ifndef ONLINE_JUDGE
    freopen("stdin.txt","r",stdin);
    #endif
    vector<int> vec;
    for(auto it:vec) cout<<it<<endl;
    __gnu_pbds::priority_queue<int> pq;
    pq.push(777); cout<<pq.top()<<endl;
    int p;
    while(cin>>p){
        memset(dp,0,sizeof dp);
        for(int i=999;~i;--i){
            dp[i]=(double)(100-p)/100*dp[i+15]+(double)p*(1000-i)/100/1000*dp[i+20]+1;
        }
        memset(f,0,sizeof f);
        for(int i=123;~i;--i){
            for(int j=999;~j;--j){
                f[i][j]=(double)(100-p)/100*f[i+1][j+15]+(double)p*(1000-j)/100/1000*f[i+1][j+20]+1;
            }
        }
        printf("%.10lf\n",f[1][20]);
    }
    return 0;
}

UPD.加了个输出挂

#pragma GCC diagnostic error "-std=c++11"
#include<ext/pb_ds/priority_queue.hpp>
#include<bits/stdc++.h>
#define unordered_map map
using namespace std;
using namespace __gnu_pbds;
using ll = long long;
const int MAXN = 1e5+11;
const int INF  = 0x3f3f3f3f; 
const int BUFL = 1e6+11;
char IObuf[BUFL];
char *optr=IObuf;
streambuf *sb;
inline void print(char c){
    optr==IObuf+BUFL?(sb->sputn(IObuf,BUFL),optr=IObuf):0;
    *optr++=c;
}
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--]);
}
inline void flush(){
    sb->sputn(IObuf,optr-IObuf);
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("stdin.txt","r",stdin);
    #endif
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    sb=cout.rdbuf();
    ll a,b;
    while(cin>>a>>b){
        print(a+b);
        print('\n');
    }
    flush();
    return 0;
}

UPDDD.完整版IO挂

#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; 
}

=/=/=/=/=/=分割线=/=/=/=/=/=

以下笔记多是上课摸鱼/晚上思考人生的总结

杂乱的数学常识
说要刷题结果没刷的博弈论
弃坑的FFT
东半球最良心的图解可持久化Treap
还没完坑的Hash
简单粗暴的线性基
树上暴力黑科技
没有实质内容的KD树
树上莫队的小证明
点分治!
cdq分治初步
下一回总结一下网络流建模的方法(博大精深)

posted @ 2018-01-23 20:10  Caturra  阅读(270)  评论(0)    收藏  举报