1. 首页
  2. 公告
  1. 登录
  2. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文

2025tyoi0005

UID: 13911, 注册于 2025-7-3 15:36:06, 最后登录于 2025-11-29 21:33:02, 最后活动于 2025-11-27 18:30:01.

解决了 237 道题目,RP: 229.71 (No. 542)

♂
  • 个人简介

    线段树

    void build(int s, int t, int p) {
    	if (s == t) {
    		d[p] = a[s];
    		return;
    	}
    	int m = s + ((t - s) >> 1);
    	build(s, m, p * 2), build(m + 1, t, p * 2 + 1);
    	d[p] = d[p * 2] + d[(p * 2) + 1];
    }
    void update(int l, int r, int c, int s, int t, int p) {
    	if (l <= s && t <= r) {
    		d[p] += (t - s + 1) * c, b[p] += c;
    		return;
    	}
    	int m = s + ((t - s) >> 1);
    	if (b[p] && s != t) {
    		d[p * 2] += b[p] * (m - s + 1), d[p * 2 + 1] += b[p] * (t - m);
    		b[p * 2] += b[p], b[p * 2 + 1] += b[p];  
    		b[p] = 0;                              
    	}
    	if (l <= m) update(l, r, c, s, m, p * 2);
    	if (r > m) update(l, r, c, m + 1, t, p * 2 + 1);
    	d[p] = d[p * 2] + d[p * 2 + 1];
    }
    int getsum(int l, int r, int s, int t, int p) {
    	if (l <= s && t <= r) return d[p];
    	int m = s + ((t - s) >> 1);
    	if (b[p]) {
    		d[p * 2] += b[p] * (m - s + 1), d[p * 2 + 1] += b[p] * (t - m);
    		b[p * 2] += b[p], b[p * 2 + 1] += b[p]; 
    		b[p] = 0;                             
    	}
    	int sum = 0;
    	if (l <= m) sum = getsum(l, r, s, m, p * 2);
    	if (r > m) sum += getsum(l, r, m + 1, t, p * 2 + 1);
    	return sum;
    }
    
    

    kmp

    int kmp(string a , string b){
    	int n = a.size();
    	int m = b.size();
    	a = '$' + a;
    	b = '$' + b;
    	for(int k = 2 , j = 0 ; k <= m ; k++){
    		while(j > 0 && b[k] != b[j + 1]){
    			j = f[j];
    		}
    		if(b[k] == b[j + 1]){
    			j++;
    		}
    		f[k] = j;
    	}
    	int ans = 0;
    	for(int k = 1 , j = 0 ; k <= n ; k++){
    		while(j > 0 && a[k] != b[j + 1]){
    			j = f[j];
    		}
    		if(a[k] == b[j + 1]){
    			j++;
    			if(j == m){
    				ans++;
    				j = f[j];
    			}
    		}
    	}
    	return ans;
    }
    
    

    莫队

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 5e4 + 5;
    int n , m , k , B , a[maxn];
    long long cnt[maxn] , ans , op[maxn];
    struct query{
    	int l , r , id;
    }q[maxn];
    void add(int x , int d){
    	ans -= cnt[x] * cnt[x];
    	cnt[x] += d;
    	ans += cnt[x] * cnt[x];
    }
    bool cmp(const query &a , const query &b){
    	if(a.l / B != b.l / B){
    		return a.l / B < b.l / B;
    	}
    	return a.r < b.r;
    }
    int main(){
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cin >> n >> m >> k;
    	B = sqrt(n);
    	for(int i = 1 ; i <= n ; i++){
    		cin >> a[i];
    	}
    	for(int i = 1 ; i <= m ; i++){
    		cin >> q[i].l >> q[i].r;
    		q[i].id = i;
    	}
    	sort(q + 1 , q + 1 + m , cmp);
    	ans = 0;
    	int l = 1 , r = 0;
    	for(int i = 1 ; i <= m ; i++){
    		while(l > q[i].l) add(a[--l] , 1);
    		while(l < q[i].l) add(a[l++] , -1);
    		while(r > q[i].r) add(a[r--] , -1);
    		while(r < q[i].r) add(a[++r] , 1);
    		op[q[i].id] = ans;
    	}
    	for(int i = 1 ; i <= m ; i++){
    		cout << op[i] << endl;
    	}
    }
    
    
  • 最近活动

    • 2025铁一集团新苗秋季班作业8----《栈结构》 作业
    • 2025铁一集团新苗秋季班作业7----《前缀和&差分前缀和》 作业
    • 2025铁一集团新苗秋季班作业7----贪心+递推 作业
    • 2025铁一集团新苗秋季班作业5----《枚举算法》 作业
    • 2025铁一集团新苗秋季班作业4----《模拟算法》 作业
    • 2025铁一集团新苗秋季班作业6----《排序和结构体排序》 作业
    • 2025铁一集团新苗周赛计划#02 IOI
    • 2025铁一集团新苗秋季班作业3------《位运算》 作业
    • 2025铁一集团新苗秋季班作业2----《进制转换》 作业
    • 铁外信息学C班训练集20250910 作业
    • 2025 CSP-J1初赛模拟测试10 OI
    • 2025 CSP-J1初赛模拟测试8 OI
    • 2025 CSP-J1初赛模拟测试4 OI
    • 2025 CSP-J1初赛模拟测试1 OI
    • 第六届oiclass信息学夏令营-模拟测试1(订题) 作业
    • 第六届oiclass信息学夏令营Class10-一维数组进阶 作业
    • 第六届oiclass信息学夏令营Class9-一维数组的定义和基础应用 作业
    • 第六届oiclass信息学夏令营Class8-循环嵌套 作业
    • 第六届oiclass信息学夏令营Class7-循环结构-while语句 作业
    • 2025铁一集团新苗for循环专题练习赛 IOI
    • 2025铁一集团新苗线下测试2 IOI
    • 2025铁一集团新苗线上模拟测试5 OI
    • 2025铁一集团新苗线上模拟测试4 OI
    • 2025铁一集团新苗线上模拟赛3 OI
    • 2025铁一集团新苗线下测试1 IOI
    • 2025铁一集团新苗day8作业-while2 作业
    • 2025铁一集团新苗线上(8月4日)-循环专题练习 作业
    • 2025铁一集团新苗复习-for循环专题练习1 作业
    • 2025铁一集团新苗day15作业-结构体和函数 作业
    • 2025铁一集团新苗day14作业-二维数组基础 作业
    • 2025铁一集团新苗秋季班作业1-二维数组和二维字符数组 作业
    • 2025铁一集团新苗day13作业-普通排序和桶排序 作业
    • 2025铁一集团新苗线上模拟赛2 OI
    • 2025铁一集团新苗day12作业-数组标记的应用 作业
    • 2025铁一集团新苗day11作业-字符、字符数组和字符串 作业
    • 2025铁一集团新苗day10作业-一维数组基础 作业
    • 2025铁一集团新苗day9作业-多重循环 作业
    • 2025铁一集团新苗day7作业-循环语句while1 作业
    • 2025铁一集团新苗线上模拟赛1 OI
    • 2025铁一集团新苗day6作业-for语句3(数据的在线处理) 作业
    • 2025铁一集团新苗day5作业-for语句2(枚举和筛选) 作业
    • 2025铁一集团新苗day4作业-循环for语句 作业
    • 2025铁一集团新苗day3作业-if条件语句 作业
    • 2025铁一集团新苗day2作业-表达式 作业
    • 2025铁一集团新苗day1作业-C++程序结构 作业
    • 2024小六秋季班第七课《前缀和&差分前缀和》 作业
    • 第五届oiClass信息学夏令营day11作业-while2 作业
  • Stat

  • Rating

562
已递交
237
已通过
0
题解被赞

状态

  • 评测队列
  • 服务状态

开发

  • 开源

支持

  • 帮助
  • 联系我们

关于

  • 关于
  • 隐私
  • 服务条款
  • 版权申诉
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. 兼容模式
  3. 主题
    1. 亮色
    2. 暗色
  1. 粤ICP备2024335011号
  2. Worker 0, 10ms
  3. Powered by Hydro v5.0.0-beta.11 Community
关闭

登录

使用您的 oiClass 通用账户

忘记密码或者用户名?