bzoj傳送門
一共t+1行
第1行為資料組數t(t<=10)
第2~t+1行每行乙個正整數n,代表一組詢問
output
一共t行,每行兩個用空格分隔的數ans1,ans2
sample input
6 1
2 8
13 30
2333
sample output
1 1
2 0
22 -2
58 -3
278 -3
1655470 2
hint
source
跟前面兩道題一樣!
迴圈變數要開long long !!!!!!!!!
long long/(long long/int)會計算錯誤!!!!
你在逗我!!!!!!
下面那個是拿雜湊表寫的
#include
#include
#define n 2000000
#define m 100005
inline long long in(long long x=0,char ch=getchar())
int cnt,t;int pr[n+10],mu[n+10];long long phi[n+10];long long n;
long long p[m];int
q[m];bool v[m];
void pre()
mu[i*pr[j]]=-mu[i];phi[i*pr[j]]=phi[i]*(pr[j]-1);}}
for(int i=2;i<=n;i++) mu[i]+=mu[i-1],phi[i]+=phi[i-1];
}inline long long getphi(int
x)inline int getmu(int
x)inline void calc(long long x)
}int main()
return
0;}
#include
#include
#define n 1000000
#define mod 2333333
inline
int in(int x=0,char ch=getchar())
int cnt,t,sum;int pr[n+10],mu[n+10];long
long phi[n+10];long
long n;
struct ans;}
ans operator * (const
int x)const ;}
}ans;
struct
maphash[mod];int head[mod];
void pre()
mu[i*pr[j]]=-mu[i];phi[i*pr[j]]=phi[i]*(pr[j]-1);}}
for(int i=2;i<=n;i++) mu[i]+=mu[i-1],phi[i]+=phi[i-1];
}inline
void add(long
long k,ans a)
inline ans calc(long
long x);int ha=x%mod;
for(int i=head[ha];i;i=hash[i].nxt) if(hash[i].k==x) return hash[i].v;
ans res;res.a=1,res.b=(x*(x+1))>>1;
for(long
long i=2,j;i<=x;i=j+1)
add(x,res);return res;
}int main()
return
0;}
BZOJ P2131 免費的餡餅
直接按餡餅暴力dp o n 2 顯然不能ac,因為n最大有100000 然後上網查了題解,直接按照dp的轉移方程化出乙個公式,然後發現是在乙個類似於二維的平面圖上進行轉移 然後通過一維先後進行更新,一維直接樹狀陣列維護完美ac,不得不說從公式推導到優化都很巧妙 orz看來我還是太弱了 include...
BZOJ P3295 動態逆序對
bzoj yzoj 我們可以預處理出每乙個點所包含的逆序對數k i 刪除的時候把這個值減去就可以了。問題在於之前的操作可能已經把當前要減去的逆序對數包含了。考慮乙個操作序列。在當前對答案減去k i 後,只需加上當前點與之前操作刪掉的點存在的逆序對數就好了。我們知道當前操作為a,滿足操作b在a之前,b...
BZOJ P2697 特技飛行 貪心
bzoj傳送門 time limit 10 sec memory limit 256 mb submit 710 solved 437 submit status discuss description 神犇航空開展了一項載客特技飛行業務。每次飛行長n個單位時間,每個單位時間可以進行一項特技動作,可...