头像

luhaoren




离线:2分钟前


最近来访(50)
用户头像
林超荣
用户头像
wind.
用户头像
sash
用户头像
路人甲的远亲表妹的同校校友的同事家养的金鱼
用户头像
现の住
用户头像
李菜菜QWQ
用户头像
前缀自动机
用户头像
孤独的根号2
用户头像
_mayiwei
用户头像
2022寄yk008
用户头像
leo38146017
用户头像
易思人
用户头像
Jason0417
用户头像
裴冠勋
用户头像
星河依旧长明
用户头像
YuanYn.
用户头像
rswcc
用户头像
Waitsnow1228
用户头像
Gallantsa
用户头像
空城旧梦_9

新鲜事 原文

luhaoren
2分钟前
挺了三年都没阳,最不该阳的时候我阳了


新鲜事 原文

acwing用户马上破三十万了(大概还有一两天)



开两个线段树

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
struct node{
    int s,l,r;
}tra[N*4],trb[N*4];
int n,k,a,b,q;
inline void pushup(int x){
    tra[x].s=tra[x*2].s+tra[x*2+1].s;
    trb[x].s=trb[x*2].s+trb[x*2+1].s;
}
void build(int x,int l,int r){
    tra[x].l=l,tra[x].r=r,trb[x].l=l,trb[x].r=r;
    if(l==r){
        tra[x].s=0,trb[x].s=0;
        return;
    }
    int mid=(l+r)/2;
    build(x*2,l,mid),build(x*2+1,mid+1,r);
    pushup(x);
}
void change(int now,int x,int k){
    if(tra[now].l==tra[now].r){
        tra[now].s=min(tra[now].s+k,a);
        trb[now].s=min(trb[now].s+k,b);
        return;
    }
    int mid=(tra[now].l+tra[now].r)/2;
    if(x<=mid) change(now*2,x,k);
    else change(now*2+1,x,k);
    pushup(now);
}
int querya(int x,int l,int r){
    if(tra[x].l>=l&&tra[x].r<=r) return tra[x].s;
    int mid=(tra[x].l+tra[x].r)/2,sum=0;
    if(l<=mid) sum=querya(x*2,l,r);//这个地方要注意,如果写成+=就过不了
    if(r>mid) sum+=querya(x*2+1,l,r);
    return sum;
}
int queryb(int x,int l,int r){
    if(trb[x].l>=l&&trb[x].r<=r) return trb[x].s;
    int mid=(trb[x].l+trb[x].r)/2,sum=0;
    if(l<=mid) sum=queryb(x*2,l,r);
    if(r>mid) sum+=queryb(x*2+1,l,r);
    return sum;
}
signed main(){
    cin>>n>>k>>a>>b>>q;
    build(1,1,n);
    while(q--){
        int op;
        cin>>op;
        if(op==1){
            int x,y;
            cin>>x>>y;
            change(1,x,y);
        }
        else{
            int p;
            cin>>p;
            cout<<queryb(1,1,p-1)+querya(1,p+k,n)<<endl;
        }
    }
    return 0;
}


新鲜事 原文

acwing什么时候能搞一个创建题单的功能啊?另外能不能有一个筛选算法标签的功能?@yxc



命令帮助

命令名称 说明
ls 列出工作路径中所有目录或文件
del 删除文件
rd 删除文件夹
cd 切换文件夹
md 创建文件夹
time 显示当前时间(本地时间)
exit 退出oios
help 获取帮助
cls 清屏

代码

#include <bits/stdc++.h>
#include <windows.h>
using  namespace std;
void setColor(int num=0){
    HANDLE consolehwnd;//创建句柄
    consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
    SetConsoleTextAttribute(consolehwnd,num);//设置字体颜色
}
string getTime(){
    SYSTEMTIME st;
    GetLocalTime(&st);
    char c[110];
    sprintf(c,"%d-%d-%d %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
    return c; 
}
class file{
    public:
        string fileName;//文件名 
        bool isDir;//是否为目录 
        bool isDel;//是否被删除 
        int fa;//所在目录 
        string dateTime;//创建时间  
        int grade;//权限:0普通用户1管理员2系统管理员 
        //若是文件 
        vector<string>text;
        //若是文件夹 
        vector<int>son;//该目录下的文件 
        void operator()(string filename,bool isdir,int father,int Grade=0){
            dateTime=getTime();
            fileName=filename,isDir=isdir,fa=father,grade=Grade;
            isDel=false;
        }
        void clear(){
            isDel=true;
            fileName=" ",dateTime=" ";
            text.clear();
            fa=-1,isDir=false;
            son.clear();
        }   
        file(){
            isDel=true;
            fileName=" ",dateTime=" ";
            text.clear(),son.clear();
            fa=-1,isDir=false;          
        }   
};
file fs[100010];//文件系统
int nowMenu,fileNum=0;
void init(){
    fs[0]("oios",true,0);
    SetConsoleTitle("OIOS"); 
    nowMenu=0; 
} 
auto handle(){
    char c[1024];
    fgets(c,1024,stdin);
    int l=strlen(c);
    vector<string>orders;
    for(int i=0;i<l;i++){
        string s;
        while(c[i]!=' '&&i<l) s.push_back(c[i++]);
        while(c[i]==' '&&i<l) i++;
        orders.push_back(s);
    }
    return orders;
} 
void clearFile(int i){
    if(!fs[i].son.empty()){
        for(auto it:fs[i].son) clearFile(it);
    }
    fs[i].clear();
}
void pwd(int i){
    if(i!=0) pwd(fs[i].fa);
    cout<<fs[i].fileName<<"/";
}
void help(){
    ifstream in("help.txt");
    while(!in.eof()){
        char c[1024];
        in.getline(c,1024);
        cout<<c<<endl;
    }
} 
int main(){
    init();
    while(true){
        setColor(2);
        pwd(nowMenu);
        setColor(7);
        string order;
        cin>>order;
        if(order=="time") cout<<getTime()<<endl;
        if(order=="ls"){
            if(fs[nowMenu].son.empty()) cout<<"no file!\n";
            for(auto it:fs[nowMenu].son){
                if(!fs[it].isDel) cout<<fs[it].fileName<<" "<<fs[it].dateTime<<endl;
            }
        }
        if(order=="exit") exit(-1);
        if(order=="help") help();
        if(order=="cls") system("cls");
        if(order=="del"){           
            //删除文件 
            string s;
            cin>>s;
            for(auto it:fs[nowMenu].son){
                if(fs[it].fileName==s) fs[it].clear();
            }
        }
        if(order=="md"){
            //创建文件夹 
            string s;
            cin>>s;
            fs[++fileNum](s,true,nowMenu);
            fs[nowMenu].son.push_back(fileNum);
        }
        if(order=="cd"){ 
            //切换文件夹 
            string s;
            cin>>s;         
            if(s=="up") nowMenu=fs[nowMenu].fa;
            else{
                for(auto it:fs[nowMenu].son){
                    if(fs[it].fileName==s){
                        nowMenu=it;
                        break;
                    }
                } 
            }
        }
        if(order=="rd"){
            //删除文件夹 
            string s;
            cin>>s;
            for(auto it:fs[nowMenu].son){
                if(fs[it].fileName==s) clearFile(it);
            }           
        }
    }
    return 0;
}

github地址



新鲜事 原文

刚刚发生了什么?


新鲜事 原文

luhaoren
16天前
y总为什么开了直播却人没了?[doge] 今日标题《直播之椅子代课》《y总去哪里了?》
图片


新鲜事 原文

luhaoren
16天前
app上为什么没法看y总直播?


新鲜事 原文

luhaoren
25天前
吾日三省吾身:y总发app了吗?app怎么还没上线?app要鸽到什么时候?


新鲜事 原文

luhaoren
26天前
每日一问,app上线了吗?