头像

Sooooooo




离线:2个月前


最近来访(59)
用户头像
Hangya
用户头像
Pz.Climb
用户头像
花落的那一天
用户头像
000_2
用户头像
lzh666
用户头像
HaPpY夢
用户头像
_魂淡_
用户头像
蓬蒿人
用户头像
hell_fancy
用户头像
yxc
用户头像
松鼠会
用户头像
我真喝不下啦
用户头像
Fovait
用户头像
可乐可口
用户头像
LHYhhh
用户头像
dp咋学啊
用户头像
二十四桥仍在
用户头像
三眼五显仙人
用户头像
不明所以
用户头像
wuzgnm

活动打卡代码 AcWing 2492. HH的项链

Sooooooo
5个月前
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define PII pair<int,int>
using namespace std;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
const double eps=1e-8;
const int N=1e6+5;
struct node{
    int l,r,id;
}s[N];
int n,m,t,sq,a[N],cnt[N],ans[N];
void add(int x)
{
    cnt[a[x]]++;
    if(cnt[a[x]]==1) t++;
}
void del(int x)
{
    cnt[a[x]]--;
    if(!cnt[a[x]]) t--;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin>>n;
    sq=sqrt(n);
    for(int i=1;i<=n;i++)
        cin>>a[i];
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>s[i].l>>s[i].r;
        s[i].id=i;
    }
    sort(s+1,s+m+1,[](node a,node b){
        if(a.l/sq!=b.l/sq) return a.l<b.l;
        else
        {
            if((a.l/sq)&1) return a.r<b.r;
            else return a.r>b.r;
        }
    });
    int l=1,r=0;
    for(int i=1;i<=m;i++)
    {
        while(l<s[i].l)
            del(l++);
        while(l>s[i].l)
            add(--l);
        while(r>s[i].r)
            del(r--);
        while(r<s[i].r)
            add(++r);
        ans[s[i].id]=t;
    }
    for(int i=1;i<=m;i++)
        cout<<ans[i]<<endl;
    return 0;
}



Sooooooo
5个月前
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define PII pair<int,int>
using namespace std;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
const double eps=1e-8;
const int N=1e5+5;
int n,m,s,a[N];
int zs,l[N],r[N],id[N];
ll sum[N],add[N];
void init()
{
    s=sqrt(n);
    int w=1;
    for(int i=1;i<=s;i++)
        l[i]=(i-1)*s+1,r[i]=i*s;
    r[s]=n;
    for(int i=1;i<=s;i++)
    for(int j=l[i];j<=r[i];j++)
        sum[i]+=a[j],id[j]=i;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    init();
    while(m--)
    {
        char c;
        int x,y;
        ll k,ans=0;
        cin>>c;
        if(c=='Q')
        {
            cin>>x>>y;
            if(id[x]==id[y])
            {
                for(int i=x;i<=y;i++)
                    ans+=a[i]+add[id[i]];
            }
            else
            {
                for(int i=id[x]+1;i<id[y];i++)
                    ans+=sum[i];
                for(int i=x;i<=r[id[x]];i++)
                    ans+=a[i]+add[id[i]];
                for(int i=l[id[y]];i<=y;i++)
                    ans+=a[i]+add[id[i]];
            }
            cout<<ans<<endl;
        }
        else
        {
            cin>>x>>y>>k;
            if(id[x]==id[y])
            {
                for(int i=x;i<=y;i++)
                    a[i]+=k,sum[id[x]]+=k;
            }
            else
            {
                for(int i=id[x]+1;i<id[y];i++)
                    sum[i]+=k*(r[i]-l[i]+1),add[i]+=k;
                for(int i=x;i<=r[id[x]];i++)
                    a[i]+=k,sum[id[i]]+=k;
                for(int i=l[id[y]];i<=y;i++)
                    a[i]+=k,sum[id[i]]+=k;
            }
        }
    }
    return 0;
}


活动打卡代码 工程课 Linux-6.1. homework_1

Sooooooo
7个月前


活动打卡代码 工程课 Linux-6.0. homework_0

Sooooooo
7个月前


活动打卡代码 工程课 Linux-5.9. homework_9

Sooooooo
8个月前

一定要给服务器也设置好公钥,否则就无法克隆!!!

git push   //将现在的情况推送至云端
git clone ***   //进行项目克隆


活动打卡代码 工程课 Linux-5.8. homework_8

Sooooooo
8个月前
git merge dev    //将分支进行合并
vim readme.txt   //通过自行修改处理冲突


活动打卡代码 工程课 Linux-5.7. homework_7

Sooooooo
8个月前
git checkout master   //回到master分支


活动打卡代码 工程课 Linux-5.6. homework_6

Sooooooo
8个月前
git checkout -b dev    //创建dev分支

进行相应修改并提交

git push origin dev    //将dev推送到云端


活动打卡代码 工程课 Linux-5.5. homework_5

Sooooooo
8个月前

在gitlib创建好项目

在gitlib设置好服务器公钥

通过gitlib中的“推送当前文件夹”指引,将文件夹推送至云端



活动打卡代码 工程课 Linux-5.4. homework_4

Sooooooo
8个月前

完成相应修改后

git add .
git commit -m "4"