栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3812 We Need Medicine

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3812 We Need Medicine

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<stack>#include<set>#include<cmath>#include<vector>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-8#define pi acos(-1.0)using namespace std;typedef long long ll;typedef unsigned long long ull;const int maxn = 400 + 10;const int M = 51;short ans[200010][52];ull f[200010];int W[maxn],T[maxn];map<ull,int>mp;int main(){    for(int i = 1;i <= M + 1;++i)        mp[1LL<<(i-1LL)] = i;    int t,n,q;    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&q);        memset(ans,0,sizeof(ans));        memset(f,0,sizeof(f));        f[0] = 1;        ull v,x;        for(int i = 1;i <= n;++i)        { scanf("%d%d",&W[i],&T[i]); for(int j = 200000;j >= T[i];--j) {     v = f[j];     f[j] |= (f[j - T[i]]<<W[i]) & ((1LL<<M+1) - 1);    for(ull k = v ^ f[j];k ; k &= k-1)         {         x = (k ^ (k - 1)) & k;         ans[j][mp[x] - 1] = i;          } }        }        int m,s,p;        for(int i = 0;i < q;++i)        { scanf("%d%d",&m,&s); if(!ans[s][m])     puts("No solution!"); else {     printf("%d",ans[s][m]);     p = ans[s][m];     m -= W[p];     s -= T[p];     while(m)     {         p = ans[s][m];         printf(" %d",p);         m -= W[p];         s -= T[p];     }     puts(""); }        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号