头像

南岸以南南岸哀




离线:1小时前


最近来访(860)
用户头像
守_夜_人
用户头像
xyh不是xyy
用户头像
菜菜想当诗人
用户头像
小桥
用户头像
我还能再AC一道题
用户头像
FJ_EYoungOneC
用户头像
梦若浮生
用户头像
XYC_5
用户头像
acwing_28881
用户头像
种花家的兔兔
用户头像
_Dijkstra
用户头像
炽热的
用户头像
长夜未央
用户头像
yxc的小迷妹
用户头像
只怪我平庸至极
用户头像
是小肖啊
用户头像
AC不了怎么办
用户头像
hurryboy
用户头像
Jiangly_fan
用户头像
iqer











题目描述

blablabla

样例

blablabla

算法1

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

#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;
}

算法2

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

blablabla






题目描述

blablabla

样例

blablabla

算法1

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

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

算法2

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

blablabla






题目描述

blablabla

样例

blablabla

算法1

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

#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";
    }
}

算法2

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

blablabla


新鲜事 原文

赛氪比赛是真垃圾呀,手机端找不到摄像头