LOADING

加载过慢请开启缓存,浏览器默认开启

daily 2

2023/3/30 daily

CF 417A

文字理解题,如题意,要么用c个选n个,要么用x*d个选x个

那么分别考虑即可

void solve(){
  int c,d,n,m,k;
  cin>>c>>d>>n>>m>>k;
  int sum=n*m-k;
  if(sum<=0){
    cout<<0<<'\n';
    return;
  }
  int cnt=sum/n;
  int rem=sum%n;
  int ans=cnt*min(c,n*d)+min(rem*d,c);
  cout<<ans<<"\n";
  return;
}

CF 459E

也是简单题

考虑每条边只会对比该边小的边产生影响,所以我们对边按照权值排序
之后就和最长上升子序列一样了

struct edge{
    int from,to,w;
};
void solve(){
  int n,m;cin>>n>>m;
  vector<pair<int,int>>state;
  vector<int>dp(n+1);
  vector<edge>E(m+1);
  int ans=0;
  auto calc=[&](){
    for(auto pi:state){
        dp[pi.first]=max(dp[pi.first],pi.second);
        ans=max(dp[pi.first],ans);
    }
    state.clear();
  };    
  for(int i=1;i<=m;++i){
    cin>>E[i].from>>E[i].to>>E[i].w;
  }
  sort(E.begin()+1,E.end(),[&](edge a,edge b){
    return a.w<b.w;
  });
  for(int i=1;i<=m;++i){
    if(E[i].w!=E[i-1].w)calc();
    state.push_back({E[i].to,dp[E[i].from]+1});
  }
  calc();
  cout<<ans<<'\n';
  return;
}

晚上字节二面和明天早上蚂蚁二面加油啦,确实蛮想去做oceanbase的,啊啊啊啊
干巴喽