T得不要不要的
查看原帖
T得不要不要的
214561
周凸加油楼主2020/8/6 19:00

---TLE---- jr历史最高70分,T了后三个点

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#include<bits/stdc++.h>
#define ll long long
#define r(x) x = read()
#define rep(i,l,r) for(ll i = l; i <= r; i++)
#define gcder(x,y) (x>y)?gcd(x,y):gcd(y,x)
//#define add(x) sum += ( col[ arr[x] ]++ )
//#define del(x) sum -= ( --col[ arr[x] ] )
const ll N = 1e5, M = 1e5;
using namespace std;
ll l,r,ql,qr,blen,tmp;
ll n,m,sum,arr[N],col[N];
struct node{
	ll id, blk;
	ll l, r;
} a[M];
ll A[M], B[M];
//bool cmp1(node xx,node yy) { return ( xx.blk == yy.blk )	? (	(xx.l == yy.l) ? ( (xx.blk&1)?(xx.r<yy.r):(xx.r>yy.r) ) : (xx.l < yy.r)	) : (xx.blk < yy.blk) ; }
//bool cmp2(node xx,node yy) { return (xx.blk == yy.blk) ? ( (xx.blk&1)?(xx.r < yy.r):(xx.r > yy.r) ) : (xx.l < yy.l); }
bool cmp(node xx,node yy) { return ( xx.blk == yy.blk )?( xx.l < yy.l ):( xx.r < yy.r ); }
/*bool cmp4(node xx,node yy)
{
	if(xx.l < yy.l) return 1;
	if(xx.l > yy.l) return 0;
	if(xx.l&1) return xx.r<yy.r;//按奇偶块分
	return xx.r>yy.r;
}*/
inline ll read()
{
	ll x = 0,f = 1;
	char ch = getchar();
	while( !isdigit(ch) ) { if( ch == '-' ) f = -1; ch = getchar(); }
	while( isdigit(ch) ) { x = (x<<1)+(x<<3)+(ch^48); ch = getchar(); }
	return x*f;
}
void write(ll x)    
{    
    if(x < 0) {    
        putchar('-');    
        x = -x;    
    }    
    if(x > 9)    
        write(x/10);    
    putchar(x % 10 + '0');    
    return;    
}    
//inline ll gcd(ll x,ll y) {return !y?x:gcd(y,x%y); }
ll gcd(ll x,ll y) { return y?gcd(y,x%y):x; }
//void add(ll x) { sum += ( col[ arr[x] ]++ ); }
//void del(ll x) { sum -= ( --col[ arr[x] ] ); }
void solve()
{
	l = 1,r = 0;
	rep(i,1,m)
	{
		ql = a[i].l, qr = a[i].r;
		if( ql == qr )
		{
			A[ a[i].id ] = 0;
			B[ a[i].id ] = 1;
		}
		while( l > ql ) sum += ( col[ arr[--l] ]++ );
		while( l < ql ) sum -= ( --col[ arr[l++] ] );
		while( r > qr ) sum -= ( --col[ arr[r--] ] );
		while( r < qr ) sum += ( col[ arr[++r] ]++ );
		tmp = gcder(sum, (r-l+1)*(r-l)>>1);
		A[ a[i].id ] = (sum)/tmp;
		B[ a[i].id ] = ( (r-l+1)*(r-l)>>1 )/tmp;
	}
}
int main()
{
	r(n), r(m);
	blen = sqrt(n);
	rep(i,1,n) r( arr[i] );
	rep(i,1,m) 
	{
		r(a[i].l), r(a[i].r);
		a[i].id = i;
		a[i].blk = (i/blen) + (i%blen);
	}
	sort(a+1,a+m+1,cmp);
	solve();
	rep(i,1,m) write(A[i]),printf("/"),write(B[i]),printf("\n");
	return 0;
}
2020/8/6 19:00
加载中...