Submission #69875629


Source Code Expand

#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;
const int maxn = 2e4+5;
int w[maxn],v[maxn];
class SegmentTree
{
public:
    gp_hash_table<int,long long> a[4 * maxn];
    inline void push_up(int rt) //向上更新
    {
        a[rt].clear();
        for (auto &i:a[rt*2])
        {
            for (auto &j:a[rt*2+1])
            {
                 if (i.first+j.first<=500)
                    a[rt][i.first+j.first]=max(a[rt][i.first+j.first],i.second+j.second);
            }
        }
    }
    void build(int l, int r, int rt) //从l到r建立线段树
    {
        if (l == r)
        {
            a[rt][w[l]]=v[l];
            a[rt][0]=0;
            return;
        }
        int mid = (l + r) / 2;
        build(l, mid, rt * 2);
        build(mid + 1, r, rt * 2 + 1);
        push_up(rt);
    }
    gp_hash_table<int,long long> query(int x, int y, int l, int r, int rt,int c) //线段树区间为从l到r,询问区间x到y的和
    {
        if (x <= l && y >= r)
            return a[rt];
        int mid = (l + r) / 2;
        gp_hash_table<int,long long> ans;
        if (x <= mid)
            ans = query(x, y, l, mid, rt * 2,c);
        if (y > mid)
        {
            auto rr=query(x, y, mid + 1, r, rt * 2 + 1,c);
            gp_hash_table<int,long long> ll;
            swap(ll,ans);
            ll[0]=0;
            for (auto &i:ll)
            {
                for (auto &j:rr)
                {
                    if (i.first+j.first<=c)
                        ans[i.first+j.first]=max(ans[i.first+j.first],i.second+j.second);
                }
            }
        }
        return ans;
    }
}st;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n;
    cin>>n;
    for (int i=1;i<=n;i++)
        cin>>w[i]>>v[i];
    st.build(1,n,1);
    int q;
    cin>>q;
    while (q--)
    {
        int l,r,c;
        cin>>l>>r>>c;
        auto tmp=st.query(l,r,1,n,1,c);
        long long ans=0;
        for (auto &i:tmp)
            if (i.first<=c)
                ans=max(ans,i.second);
        cout<<ans<<'\n';
    }
}

Submission Info

Submission Time
Task G - Range Knapsack Query
User Alliy666
Language C++ 23 (gcc 12.2)
Score 0
Code Size 2258 Byte
Status TLE
Exec Time 2219 ms
Memory 123660 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 575
Status
AC × 2
AC × 6
TLE × 45
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt, 02_large_05.txt, 02_large_06.txt, 02_large_07.txt, 02_large_08.txt, 02_large_09.txt, 02_large_10.txt, 02_large_11.txt, 02_large_12.txt, 02_large_13.txt, 02_large_14.txt, 02_large_15.txt, 02_large_16.txt, 02_large_17.txt, 02_large_18.txt, 02_large_19.txt, 02_large_20.txt, 02_large_21.txt, 02_large_22.txt, 02_large_23.txt, 02_large_24.txt, 02_large_25.txt, 02_large_26.txt, 02_large_27.txt, 02_large_28.txt, 02_large_29.txt, 02_large_30.txt, 02_large_31.txt, 02_large_32.txt, 02_large_33.txt, 02_large_34.txt, 02_large_35.txt, 03_handmade_00.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 21 ms 27940 KiB
00_sample_01.txt AC 15 ms 27836 KiB
01_small_00.txt TLE 2209 ms 29080 KiB
01_small_01.txt TLE 2212 ms 29164 KiB
01_small_02.txt TLE 2209 ms 29448 KiB
01_small_03.txt AC 30 ms 28044 KiB
01_small_04.txt TLE 2209 ms 30268 KiB
01_small_05.txt TLE 2209 ms 28692 KiB
01_small_06.txt TLE 2209 ms 30320 KiB
01_small_07.txt TLE 2209 ms 30412 KiB
02_large_00.txt TLE 2213 ms 80696 KiB
02_large_01.txt TLE 2213 ms 80680 KiB
02_large_02.txt TLE 2213 ms 80004 KiB
02_large_03.txt TLE 2213 ms 80404 KiB
02_large_04.txt TLE 2213 ms 80756 KiB
02_large_05.txt TLE 2213 ms 80608 KiB
02_large_06.txt TLE 2213 ms 80216 KiB
02_large_07.txt TLE 2213 ms 80432 KiB
02_large_08.txt TLE 2213 ms 80644 KiB
02_large_09.txt TLE 2213 ms 81208 KiB
02_large_10.txt TLE 2213 ms 80924 KiB
02_large_11.txt TLE 2213 ms 80660 KiB
02_large_12.txt TLE 2213 ms 80584 KiB
02_large_13.txt TLE 2213 ms 80288 KiB
02_large_14.txt TLE 2213 ms 80964 KiB
02_large_15.txt TLE 2213 ms 80028 KiB
02_large_16.txt TLE 2213 ms 80300 KiB
02_large_17.txt TLE 2213 ms 80228 KiB
02_large_18.txt TLE 2216 ms 123340 KiB
02_large_19.txt TLE 2215 ms 123616 KiB
02_large_20.txt TLE 2215 ms 122952 KiB
02_large_21.txt TLE 2215 ms 122624 KiB
02_large_22.txt TLE 2215 ms 123024 KiB
02_large_23.txt TLE 2215 ms 122968 KiB
02_large_24.txt TLE 2216 ms 122800 KiB
02_large_25.txt TLE 2215 ms 123320 KiB
02_large_26.txt TLE 2216 ms 123660 KiB
02_large_27.txt TLE 2219 ms 123208 KiB
02_large_28.txt TLE 2216 ms 123504 KiB
02_large_29.txt TLE 2216 ms 122760 KiB
02_large_30.txt TLE 2215 ms 123048 KiB
02_large_31.txt TLE 2215 ms 122752 KiB
02_large_32.txt TLE 2216 ms 123340 KiB
02_large_33.txt TLE 2215 ms 122624 KiB
02_large_34.txt TLE 2215 ms 122796 KiB
02_large_35.txt TLE 2215 ms 123264 KiB
03_handmade_00.txt AC 1239 ms 80708 KiB
03_handmade_01.txt AC 51 ms 27904 KiB
03_handmade_02.txt TLE 2213 ms 40524 KiB
03_handmade_03.txt AC 1462 ms 28004 KiB
03_handmade_04.txt TLE 2209 ms 40456 KiB