COGS-930-找第k小的数-HNOI2012-主席树

描述

静态区间第k小值


分析


代码

#include 
    
    
     
     
#include 
     
     
      
      
using namespace std;

const int maxn = 100000 + 10;
const int maxnode = 3000000 + 10;

int root[maxn], A[maxn], T[maxn];
int v[maxnode], s[maxnode], lc[maxnode], rc[maxnode];
int cnt;

#define M (L+R>>1)

void build(int& x, int y, int L, int R, int d) {
	x = ++cnt;
	if(L == R) v[x] = v[y] + 1;
	else {
		if(d <= T[M]) build(lc[x], lc[y], L, M, d), rc[x] = rc[y];
		else build(rc[x], rc[y], M+1, R, d), lc[x] = lc[y];
	}
	s[x] = v[x] + s[lc[x]] + s[rc[x]];
}

int query(int x, int y, int L, int R, int k) {
	if(L == R) return T[L];
	int ls = s[lc[y]] - s[lc[x]];
	if(ls >= k) return query(lc[x], lc[y], L, M, k);
	return query(rc[x], rc[y], M+1, R, k-ls);
}

int main()
{
	freopen("kth.in", "r", stdin);
	freopen("kth.out", "w", stdout);
	
	int n, m;
	scanf("%d %d", &n, &m);
	for(int i = 1; i <= n; i++) scanf("%d", &A[i]), T[i] = A[i];
	sort(T+1, T+n+1);
	int tot = unique(T+1, T+n+1)-T-1;
	for(int i = 1; i <= n; i++) build(root[i], root[i-1], 1, tot, A[i]);
	for(int i = 1; i <= m; i++) {
		int L, R, k;
		scanf("%d %d %d", &L, &R, &k);
		printf("%d\n", query(root[L-1], root[R], 1, tot, k));
	}
	return 0;
}

     
     
    
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是5个关于supermarket_sales - sheet1.csv文件的预处理代码示例: 1. 使用fillna()方法填充缺失值: ```python import pandas as pd sales_df = pd.read_csv('supermarket_sales - sheet1.csv') # 检查缺失值 print(sales_df.info()) # 使用平均值填充缺失值 sales_df['Rating'].fillna(sales_df['Rating'].mean(), inplace=True) # 再次检查缺失值 print(sales_df.info()) ``` 2. 使用drop_duplicates()方法删除重复行: ```python import pandas as pd sales_df = pd.read_csv('supermarket_sales - sheet1.csv') # 删除重复行 sales_df.drop_duplicates(inplace=True) # 检查是否存在重复行 print(sales_df.duplicated().any()) ``` 3. 使用apply()方法创建新的特征: ```python import pandas as pd sales_df = pd.read_csv('supermarket_sales - sheet1.csv') # 创建新的特征:每个订单的平均价格 sales_df['Avg_price'] = sales_df[['Unit price', 'Quantity']].apply(lambda x: x['Unit price'] * x['Quantity'], axis=1) # 查看新的特征 print(sales_df.head()) ``` 4. 使用astype()方法转换据类型: ```python import pandas as pd sales_df = pd.read_csv('supermarket_sales - sheet1.csv') # 将日期列转换为datetime类型 sales_df['Date'] = pd.to_datetime(sales_df['Date']) # 将Gender列转换为类别类型 sales_df['Gender'] = sales_df['Gender'].astype('category') # 查看转换后的据类型 print(sales_df.dtypes) ``` 5. 使用MinMaxScaler归一化据: ```python import pandas as pd from sklearn.preprocessing import MinMaxScaler sales_df = pd.read_csv('supermarket_sales - sheet1.csv') # 将值列进行归一化 scaler = MinMaxScaler() sales_df[['Unit price', 'Quantity', 'Tax', 'Total', 'cogs', 'gross margin percentage', 'gross income']] = scaler.fit_transform(sales_df[['Unit price', 'Quantity', 'Tax', 'Total', 'cogs', 'gross margin percentage', 'gross income']]) # 查看归一化后的据 print(sales_df.head()) ``` 希望这些代码段对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值