LOADING

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

daily 2

2023/5/13 daily

两道智力题

CF 527D

移项之后转化为线段覆盖问题

struct node{
    int l,r;
};
void solve(){
  int n;
  cin>>n;
  vector<node>a(n);
  for(int i=0;i<n;++i){
    int x,w;
    cin>>x>>w;
    a[i].l=x-w;
    a[i].r=x+w;
  }
  sort(a.begin(),a.end(),[&](node a,node b){
    if(a.r==b.r){
        return a.l<b.l;
    }
    return a.r<b.r;
  });
  int ans=1,r=a[0].r;
  for(int i=1;i<n;++i){
    if(a[i].l>=r){
        ++ans;
        r=a[i].r;
    }
  }
  cout<<ans<<'\n';
  return;
}

CF 519D

类似lc经典题,用map存一哈就可以了

map<ll,ll>mp[26];
void solve(){
  vector<int>p(26);
  for(int i=0;i<26;++i){
    cin>>p[i];
  }
  string s;
  cin>>s;
  ll cnt=0,ans=0;
  for(int i=0;i<s.size();++i){
    ans+=mp[s[i]-'a'][cnt];
    cnt+=p[s[i]-'a'];
    mp[s[i]-'a'][cnt]++;
  }
  cout<<ans<<'\n';
  return;
}