提出 #9189505


ソースコード 拡げる

/*
*/

#pragma GCC optimize("O3")
#define _CRT_SECURE_NO_WARNINGS
#include <fstream>
#include <iostream>
#include <string>
#include <complex>
#include <math.h>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stdio.h>
#include <stack>
#include <algorithm>
#include <list>
#include <ctime>

#include <memory.h>
#include <assert.h>

#define y0 sdkfaslhagaklsldk

#define y1 aasdfasdfasdf
#define yn askfhwqriuperikldjk
#define j1 assdgsdgasghsf
#define tm sdfjahlfasfh
#define lr asgasgash
#define norm asdfasdgasdgsd
#define left asdgashgrketwjklrej
#define have adsgagshdshfhds
#define ends asdgahhfdsfshdshfd
#define prev asdgSHJsfgsdfhdsh
#define hash asdgasdgasdgdfrywewery

#define eps 1e-9
#define M_PI 3.141592653589793
#define bsize 1024

#define ldouble long double
using namespace std;

//#define bs 1000000007

const int N = 200031;

int bs;

int n;

int right_side,left_side;

int dp[2][5031][5031],total_left[5031][5031],total_right[5031][5031];
int suf_sum[5031][5031];

int main(){
//    freopen("apache.in","r",stdin);
//    freopen("apache.out","w",stdout);
 //   freopen("input.txt", "r", stdin);
 //   freopen("output.txt", "w", stdout);
    ios_base::sync_with_stdio(0);
 //   cin.tie(0);

    cin>>n>>bs;
    //n=4000;
    //bs=1000000007;


    if (n%2)
    	right_side=n/2,
		left_side=n/2;
    else
    	right_side=n/2-1,
		left_side=n/2;

    // knap for right side

    int w_limit=right_side;

    dp[0][0][right_side]=1;

    total_right[0][0]=1;

    for (int lev=1;lev<=n;lev++){

    	int old_w_limit=w_limit;
    	w_limit=n/lev;
    	w_limit=min(w_limit,old_w_limit);

    	for (int i=0;i<=n;i++){

    		suf_sum[i][old_w_limit]=dp[1-lev%2][i][old_w_limit];
    		for (int j=old_w_limit-1;j>=1;--j){
    			suf_sum[i][j]=suf_sum[i][j+1]+dp[1-lev%2][i][j];
    			if (suf_sum[i][j]>=bs)
    				suf_sum[i][j]-=bs;
    		}

    		for (int j=0;j<=w_limit;j++){
    			dp[lev%2][i][j]=0;
    		}
    	}

		for (int w=1;w<=w_limit;w++){
			for (int sum=w;sum<=n;sum++){
					dp[lev%2][sum][w]=suf_sum[sum-w][w];
    				total_right[lev][sum]+=dp[lev%2][sum][w];
    				if (total_right[lev][sum]>=bs)
    					total_right[lev][sum]-=bs;
    		}
    	}
    }

    for (int i=0;i<=1;i++){
    	for (int j=0;j<=n;j++){
    		for (int q=0;q<=n;q++){
    			dp[i][j][q]=0;
    		}
    	}
    }


    if (left_side!=right_side){ // left larger, recalc
    	for (int lev_full=0;lev_full*left_side<=n;lev_full++){
    		for (int lev_ri=0;lev_ri+lev_full<=n;lev_ri++){
    			for (int cu_ri=0;cu_ri+lev_full*left_side<=n;cu_ri++){
    				total_left[lev_full+lev_ri][cu_ri+lev_full*left_side]+=total_right[lev_ri][cu_ri],
    						total_left[lev_full+lev_ri][cu_ri+lev_full*left_side]%=bs;
    			}
    		}
    	}
    }
    else{
    	for (int i=0;i<=n;i++){
    		for (int j=0;j<=n;j++){
    			total_left[i][j]=total_right[i][j];
    		}
    	}
    }

    for (int i=1;i<=n;i++){
    	for (int j=0;j<=n;j++){
    		total_left[i][j]+=total_left[i-1][j];
    		total_right[i][j]+=total_right[i-1][j];
    		total_left[i][j]%=bs;
    		total_right[i][j]%=bs;
    	}
    }

    for (int i=0;i<=n;i++){
    	for (int j=0;j<=n;j++){
    		dp[0][i][j]=total_right[i][j];
    		if (j>0)
    			dp[0][i][j]+=dp[0][i][j-1];
    		dp[0][i][j]%=bs;
    	}
    }


    long long ans=0;

   // cout<<total_left[1][1]<<" "<<total_right[1][1]<<" "<<
   // 		total_left[1][0]<<" "<<left_side<<" "<<right_side<<endl;

    for (int mid=1;mid<=n;mid++){
    	for (int left_w=0;left_w<=mid;left_w++){
    		ans+=1ll*total_left[mid-1][left_w]*dp[0][n-mid][mid-left_w-1]%bs;
    		ans%=bs;
    	}
    }
    cout<<ans<<endl;

    //    cin.get(); cin.get();
    return 0;
}

提出情報

提出日時
問題 D - Problem Scores
ユーザ LeBron
言語 C++14 (GCC 5.4.1)
得点 0
コード長 3873 Byte
結果 TLE
実行時間 2104 ms
メモリ 337152 KiB

コンパイルエラー

./Main.cpp:39:0: warning: "M_PI" redefined
 #define M_PI 3.141592653589793
 ^
In file included from /usr/include/c++/5/cmath:44:0,
                 from /usr/include/c++/5/complex:44,
                 from ./Main.cpp:9:
/usr/include/math.h:372:0: note: this is the location of the previous definition
 # define M_PI  3.14159265358979323846 /* pi */
 ^

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 1200
結果
AC × 4
AC × 33
TLE × 30
セット名 テストケース
Sample 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 00-sample-04.txt
All 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 00-sample-04.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt, 01-35.txt, 01-36.txt, 01-37.txt, 01-38.txt, 01-39.txt, 01-40.txt, 01-41.txt, 01-42.txt, 01-43.txt, 01-44.txt, 01-45.txt, 01-46.txt, 01-47.txt, 01-48.txt, 01-49.txt, 01-50.txt, 01-51.txt, 01-52.txt, 01-53.txt, 01-54.txt, 01-55.txt, 01-56.txt, 01-57.txt, 01-58.txt, 01-59.txt
ケース名 結果 実行時間 メモリ
00-sample-01.txt AC 3 ms 8448 KiB
00-sample-02.txt AC 3 ms 8448 KiB
00-sample-03.txt AC 3 ms 8448 KiB
00-sample-04.txt AC 5 ms 17024 KiB
01-01.txt AC 3 ms 8448 KiB
01-02.txt AC 3 ms 8448 KiB
01-03.txt AC 3 ms 8448 KiB
01-04.txt AC 3 ms 8448 KiB
01-05.txt AC 3 ms 8448 KiB
01-06.txt AC 3 ms 8576 KiB
01-07.txt AC 2 ms 8448 KiB
01-08.txt AC 3 ms 8576 KiB
01-09.txt AC 3 ms 8448 KiB
01-10.txt AC 3 ms 8576 KiB
01-11.txt AC 3 ms 8448 KiB
01-12.txt AC 3 ms 8576 KiB
01-13.txt AC 3 ms 10624 KiB
01-14.txt AC 3 ms 10624 KiB
01-15.txt AC 3 ms 10624 KiB
01-16.txt AC 3 ms 8576 KiB
01-17.txt AC 3 ms 10624 KiB
01-18.txt AC 72 ms 84736 KiB
01-19.txt AC 7 ms 23168 KiB
01-20.txt AC 311 ms 164864 KiB
01-21.txt AC 3 ms 10624 KiB
01-22.txt AC 3 ms 10624 KiB
01-23.txt AC 3 ms 10624 KiB
01-24.txt AC 634 ms 214144 KiB
01-25.txt AC 1853 ms 316800 KiB
01-26.txt AC 491 ms 195584 KiB
01-27.txt TLE 2104 ms 337152 KiB
01-28.txt AC 1000 ms 248960 KiB
01-29.txt TLE 2104 ms 255360 KiB
01-30.txt TLE 2104 ms 282112 KiB
01-31.txt AC 361 ms 175104 KiB
01-32.txt TLE 2104 ms 282240 KiB
01-33.txt TLE 2104 ms 278016 KiB
01-34.txt TLE 2104 ms 282240 KiB
01-35.txt TLE 2104 ms 267648 KiB
01-36.txt TLE 2104 ms 292480 KiB
01-37.txt AC 623 ms 212096 KiB
01-38.txt TLE 2104 ms 288384 KiB
01-39.txt TLE 2104 ms 292480 KiB
01-40.txt TLE 2104 ms 292480 KiB
01-41.txt TLE 2104 ms 292480 KiB
01-42.txt TLE 2104 ms 298624 KiB
01-43.txt TLE 2104 ms 294528 KiB
01-44.txt TLE 2104 ms 298624 KiB
01-45.txt TLE 2104 ms 298624 KiB
01-46.txt TLE 2104 ms 294528 KiB
01-47.txt TLE 2104 ms 290432 KiB
01-48.txt TLE 2104 ms 298624 KiB
01-49.txt TLE 2104 ms 298624 KiB
01-50.txt TLE 2104 ms 298752 KiB
01-51.txt TLE 2104 ms 298624 KiB
01-52.txt TLE 2104 ms 298624 KiB
01-53.txt TLE 2104 ms 298752 KiB
01-54.txt TLE 2104 ms 298752 KiB
01-55.txt TLE 2104 ms 298752 KiB
01-56.txt TLE 2104 ms 298752 KiB
01-57.txt TLE 2104 ms 298752 KiB
01-58.txt TLE 2104 ms 298624 KiB
01-59.txt TLE 2104 ms 298752 KiB