QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#190886#5252. Deforestationucup-team902#WA 12ms7492kbC++142.6kb2023-09-29 15:17:442023-09-29 15:17:45

Judging History

你现在查看的是最新测评结果

  • [2023-09-29 15:17:45]
  • 评测
  • 测评结果:WA
  • 用时:12ms
  • 内存:7492kb
  • [2023-09-29 15:17:44]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define cs const
#define re register
#define pb push_back
#define pii pair<int,int>
#define ll long long
#define y1 shinkle
#define fi first
#define se second
#define bg begin
namespace IO{

cs int RLEN=1<<22|1;
#define gc getchar
inline int read(){
    char ch=gc();
    int res=0;bool f=1;
    while(!isdigit(ch))f^=ch=='-',ch=gc();
    while(isdigit(ch))res=(res*10)+(ch^48),ch=gc();
    return f?res:-res;
}
inline ll readll(){
    char ch=gc();
    ll res=0;bool f=1;
    while(!isdigit(ch))f^=ch=='-',ch=gc();
    while(isdigit(ch))res=(res*10)+(ch^48),ch=gc();
    return f?res:-res;
}
inline char readchar(){
	char ch=gc();
	while(isspace(ch))ch=gc();
	return ch;
}
inline int readstring(char *s){
	int top=0;char ch=gc();
	while(isspace(ch))ch=gc();
	while(!isspace(ch)&&ch!=EOF)s[++top]=ch,ch=gc();
	s[top+1]='\0';return top;
}

}
using IO::read;
using IO::readll;
using IO::readchar;
using IO::readstring;
template<typename tp>inline void chemx(tp &a,tp b){(a<b)?(a=b):0;}
template<typename tp>inline void chemn(tp &a,tp b){(a>b)?(a=b):0;}

cs int mod=1e9+7;
inline int add(int a,int b){return (a+b)>=mod?(a+b-mod):(a+b);}
inline int dec(int a,int b){return (a<b)?(a-b+mod):(a-b);}
inline int mul(int a,int b){static ll r;r=(ll)a*b;return (r>=mod)?(r%mod):r;}
inline void Add(int &a,int b){a=(a+b)>=mod?(a+b-mod):(a+b);}
inline void Dec(int &a,int b){a=(a<b)?(a-b+mod):(a-b);}
inline void Mul(int &a,int b){static ll r;r=(ll)a*b;a=(r>=mod)?(r%mod):r;}
inline int ksm(int a,int b,int res=1){for(;b;b>>=1,Mul(a,a))(b&1)&&(Mul(res,a),1);return res;}
inline int Inv(int x){return ksm(x,mod-2);}
inline int fix(ll x){x%=mod;return (x<0)?x+mod:x;}

cs int N=100005;

int n,w[N],W;
vector<int> e[N];

ll ans;

int dfs(int u){
    int sm=0;
    multiset<int>son;
    for(int v:e[u]){
        int x=dfs(v);
        if(x>0)
        son.insert(x);
    }
    while(son.size()>1){
        int vl=*son.rbegin();
        son.erase(son.find(vl));
        auto it=son.upper_bound(W-vl);
        if(it==son.begin()){
            ans++;
        }
        else{
            --it;ans++;
            son.erase(it);
        }
    }
    if(son.size()==1)sm=*son.begin();
    
    sm+=w[u];
    if(sm>=W)ans+=sm/W,sm%=W;
    return sm;
}

void getin(int fa,int sz){
    for(int i=1;i<=sz;i++){
        n++;
        e[fa].pb(n);
        w[n]=read();int siz=read();
        if(siz)getin(n,siz);
    }
}

int main(){
    W=read();
    n=1;
    getin(n,1);
    int x=dfs(1);
    if(x)ans++;
    cout<<ans<<'\n';
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 12ms
memory: 7492kb

input:

999900000
7339 3
14947 2
12850 3
8986 10
11599 9
8889 10
10711 4
8015 1
11626 0
9492 1
7017 0
8863 0
8632 0
5321 5
9906 0
11687 0
9845 0
10469 0
11708 0
14950 5
11934 0
11922 0
13101 0
12000 0
9082 0
9273 5
12296 0
6119 0
9201 0
12652 0
12957 0
7454 5
12515 0
12976 0
10358 0
13997 0
8371 0
10181 5
8...

output:

38099

result:

wrong answer 1st lines differ - expected: '1', found: '38099'