F - Tickets (预处理)
生活随笔
收集整理的這篇文章主要介紹了
F - Tickets (预处理)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目連接:
https://vjudge.net/contest/285797#problem/F
?
預處理一百萬個數據,之后問的時候進行相加就行了。原先以為開一個arr[1000000][30]的數組會爆內存。沒想到居然不會爆。
代碼:
#include <iostream> #include <cmath> using namespace std; int flag[1000001][30]; const int inf=1e6; int nownow[30];int fun(int x) {int ans=0;while(x>0){ans+=(x%10);x=x/10;}return ans; }int main() {int temp=0;for(int i=0;i<1000;i++) for(int j=0;j<1000;j++) {temp=abs( fun(i)-fun(j) );nownow[temp]++;flag[ i*1000+j ][ temp ]=nownow[temp]; } int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&temp);int now=abs( fun(temp%1000)-fun(temp/1000) );int ans=0;for(int j=0;j<now;j++){int thenow=temp;while( flag[thenow][j]==0 )thenow-- ; ans+=flag[thenow][j];}printf("%d\n",ans);}return 0; }?
?
?
總結
以上是生活随笔為你收集整理的F - Tickets (预处理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018第九届蓝桥杯C语言第九题 全球变
- 下一篇: Codeforces Gym 10147