blablabla
blablabla
blablabla
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
#define ll long long
ll n,m,t;
ll d[N],b[N];
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++) cin>>d[i]>>b[i];
long long res=0;
ll now=0;
d[n+1]=t+1;
for(int i=1;i<=n+1;i++)
{
ll x=min(now,d[i]-d[i-1]);
res+=x;
now=now-x+b[i];
}
cout<<res;
}
blablabla
blablabla
blablabla
blablabla
blablabla
class Solution:
def count(self, num1: str, num2: str, min_sum: int, max_sum: int) -> int:
mod=10**9+7
def calc(s:str)->int:
@cache
def dfs(i:int,cnt:int,limit:int,num:int)->int:
if len(s)==i:
return min_sum<=cnt<=max_sum
res=0
if not num:
res=dfs(i+1,0,0,0)
low=0 if num else 1
up=int(s[i]) if limit else 9
for d in range(low,up+1):
res+=dfs(i+1,cnt+d,limit and d==up,1)
return res
return dfs(0,0,1,0)
num1=int(num1)-1
return (calc(num2)-calc(str(num1)))%mod
blablabla
blablabla
blablabla
blablabla
blablabla
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <set>
#include <vector>
using namespace std;
const int N = 2e5+10;
using node=tuple<int,int,int>;
int n,m;
string s;
int a[N];
set<node> st;
bool v[N];
set<int> q;
//写个思路吧
//题目:需要有一个查询和修改最小值的数据结构
//有一个快速找到x的前驱和后驱并且能删除x的数据结构
//然后我都用的平衡树set
//第一个set需要重构,我这里用的是元组
//第二个找前驱和后驱直接二分即可
int main()
{
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
cin>>n>>s;
s="?"+s;
for(int i=1;i<=n;i++) cin>>a[i],q.insert(i);
for(int i=2;i<=n;i++)
if(s[i-1]!=s[i])
st.insert({abs(a[i]-a[i-1]),i-1,i});
vector<pair<int,int>> res;
q.insert(0);q.insert(n+1);
while(st.size())
{
auto [w,x,y]=*st.begin();
st.erase(st.begin());
if(v[x]||v[y]) continue;
v[x]=1,v[y]=1;
q.erase(q.lower_bound(x));
q.erase(q.lower_bound(y));
res.push_back({x,y});
int l=x-1,r=y+1;
if(l<1||r>n) continue;
auto it=q.lower_bound(x);
it--;
l=*it;
r=*q.lower_bound(y);
if(l==0||r==n+1||v[l]||v[r]) continue;
if(s[l]!=s[r]) st.insert({abs(a[l]-a[r]),l,r});
}
cout<<res.size()<<"\n";
for(auto&e:res){
int x=e.first,y=e.second;
if(x>y) swap(x,y);
cout<<x<<" "<<y<<"\n";
}
}
blablabla
blablabla
总结:筛法优化dp 预处理 二分 前缀和优化dp
点不开?
刚写完的,可能csdn还没审核完