CF284E Coin Troubles

Posted cjoiershiina-mashiro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF284E Coin Troubles相关的知识,希望对你有一定的参考价值。

Link
先差分约束看看有没有解。
对于(i)的个数大于(j),可以认为是选一个(j)就一定选一个(i)(j)的价格加上(i),同时强制(i)(j)需要强制选的加一个就行了。

#include<bits/stdc++.h>
using namespace std;
const int N=307,M=100007,P=1000000007;
int inc(int a,int b){a+=b;return a>=P? a-P:a;}
int a[N],vis[N],used[N],fa[N],f[M],n,q,t;
int read(){int x;scanf("%d",&x);return x;}
void cal(int x,int num)
{
    if(!x) return;
    used[x]=1,t-=a[x]*num;
    if(t<0) printf("0"),exit(0);
    cal(fa[x],num+1),a[x]+=a[fa[x]];
}
int main()
{
    n=read(),q=read(),t=read(),f[0]=1;
    int i,j,x,y;
    for(i=1;i<=n;++i) a[i]=read();
    for(i=1;i<=q;++i) x=read(),y=read(),vis[x]=1,fa[y]=x;
    for(i=1;i<=n;++i) if(!vis[i]) cal(i,0);
    for(i=1;i<=n;++i) if(vis[i]&&!used[i]) return !printf("0");
    for(i=1;i<=n;++i) for(j=a[i];j<=t;++j) f[j]=inc(f[j],f[j-a[i]]);
    return !printf("%d",f[t]);
}

以上是关于CF284E Coin Troubles的主要内容,如果未能解决你的问题,请参考以下文章

cf1555C Coin Rows

Codeforces 284E(概率)

实训-第四天 Never trouble trouble till trouble troubles you

P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles

如何从后台弹出片段

FBO 的延迟着色器纹理显示为黑色