当前位置: 首页 > news >正文

饰品做商城网站模式学服装设计后悔死了

饰品做商城网站模式,学服装设计后悔死了,wordpress社区主题,建设工程合同范本工程施工合同范本问题 A 我们有函数定义: f ( p ) ∑ i 1 n ∣ p i − i ∣ f(p) \sum_{i1}^{n} |p_i - i| f(p)i1∑n​∣pi​−i∣ 我们需要求出对于所有长度为 n n n 的排列 p p p,函数 f ( p ) f(p) f(p) 可能取到的不同值的个数。 思路 引理:对…

问题 A

我们有函数定义:

f ( p ) = ∑ i = 1 n ∣ p i − i ∣ f(p) = \sum_{i=1}^{n} |p_i - i| f(p)=i=1npii

我们需要求出对于所有长度为 n n n 的排列 p p p,函数 f ( p ) f(p) f(p) 可能取到的不同值的个数

思路

引理:对任意整数 x x x,都有 ∣ x ∣ ≡ x ( m o d 2 ) . |x| \equiv x \pmod 2. xx(mod2).

因此,

f ( p ) ≡ ∑ i = 1 n ( p i − i ) = ( ∑ i = 1 n p i ) − ( ∑ i = 1 n i ) = ( 1 + 2 + ⋯ + n ) − ( 1 + 2 + ⋯ + n ) = 0 ( m o d 2 ) . f(p)\equiv \sum_{i=1}^n (p_i - i) \;\;=\;\;\Bigl(\sum_{i=1}^n p_i\Bigr)\;-\;\Bigl(\sum_{i=1}^n i\Bigr) \;=\;(1+2+\cdots+n)\;-\;(1+2+\cdots+n) \;=\;0 \pmod 2. f(p)i=1n(pii)=(i=1npi)(i=1ni)=(1+2++n)(1+2++n)=0(mod2).

f ( p ) f(p) f(p) 一定是偶数

接下来求 f ( p ) f(p) f(p) 的最值 :

  • 最小值:当 p i = i p_i=i pi=i(即恒等排列)时, f ( p ) = 0 f(p)=0 f(p)=0
  • 最大值:当 p p p 是“完全逆序” [ n , n − 1 , … , 1 ] [n,n-1,\dots,1] [n,n1,,1] 时达到最大。
    设此时 p i = n − i + 1 p_i=n-i+1 pi=ni+1,则

f max ⁡ = ∑ i = 1 n ∣ ( n − i + 1 ) − i ∣ = ∑ i = 1 n ∣ n + 1 − 2 i ∣ . f_{\max} =\sum_{i=1}^n\bigl|(n-i+1)-i\bigr| =\sum_{i=1}^n\bigl|\,n+1-2i\,\bigr|. fmax=i=1n (ni+1)i =i=1n n+12i .

n = 2 m n=2m n=2m 为偶数,

f max ⁡ = 2 ∑ i = 1 m ( 2 m + 1 − 2 i ) = 2 ( ( 2 m − 1 ) + ( 2 m − 3 ) + ⋯ + 1 ) = 2 ⋅ m 2 = n 2 2 . f_{\max} = 2\sum_{i=1}^m (2m+1-2i) =2\bigl((2m-1)+(2m-3)+\cdots+1\bigr) =2\cdot m^2 =\frac{n^2}{2}. fmax=2i=1m(2m+12i)=2((2m1)+(2m3)++1)=2m2=2n2.

n = 2 m + 1 n=2m+1 n=2m+1 为奇数,

f max ⁡ = 2 ∑ i = 1 m ( 2 m + 2 − 2 i ) = 2 ( ( 2 m ) + ( 2 m − 2 ) + ⋯ + 2 ) = 2 ⋅ m ( m + 1 ) = n 2 − 1 2 . f_{\max} = 2\sum_{i=1}^m (2m+2-2i) =2\bigl((2m)+(2m-2)+\cdots+2\bigr) =2\cdot m(m+1) =\frac{n^2-1}{2}. fmax=2i=1m(2m+22i)=2((2m)+(2m2)++2)=2m(m+1)=2n21.

一言以蔽之,可以统一写作

f max ⁡ = ⌊ n 2 2 ⌋ . f_{\max} \;=\;\Bigl\lfloor \tfrac{n^2}{2}\Bigr\rfloor. fmax=2n2.
猜想 0 ∼ f m a x 0 \sim f_{max} 0fmax 的值都可以构造得到,所以 答案 = ⌊ f max 2 ⌋ + 1 \text{答案} = \left\lfloor \frac{f_{\text{max}}}{2} \right\rfloor + 1 答案=2fmax+1

思路 B

1. x > 1 x>1 x>1

  • c = p o p c o u n t ( x ) c=\mathrm{popcount}(x) c=popcount(x)(二进制中 1 的个数)。
  • n ≤ c n\le c nc:直接把每一位的 2 k 2^k 2k 分到一个元素上,总和就是 ∑ k : x k = 1 2 k = x \sum_{k:x_k=1}2^k = x k:xk=12k=x
  • n > c n>c n>c

c c c 个元素负责“还原” x x x 的二进制位,其余 n − c \;n-c\; nc 个元素都填 “1”。

( n − c ) (n-c) (nc) 个 1 异或的结果是

1 ⊕ 1 ⊕ ⋯ ⊕ 1 ⏟ n − c 次 = ( n − c ) m o d 2. \underbrace{1\oplus1\oplus\cdots\oplus1}_{n-c\text{ 次}} = (n-c)\bmod2. nc  111=(nc)mod2.

为了让它们的异或等于 0(否则会把最终整体异或从 x x x 变成 x ⊕ 1 x\oplus1 x1),我们要保证 ( n − c ) (n-c) (nc) 是偶数。
因此如果 ( n − c ) (n-c) (nc) 是奇数,就再多放一个 “1” ——这样放了 ( n − c + 1 ) (n-c+1) (nc+1) 个 1,总和增加了 ( n − c + 1 ) (n-c+1) (nc+1),且异或归为 0。

最终总和

x + ( n − c ) + ( ( n − c ) m o d 2 ) x\;+\;(n-c)\;+\;\bigl((n-c)\bmod2\bigr) x+(nc)+((nc)mod2)

2. x = 1 x=1 x=1

  • n n n 为奇数,直接全放 1,总异或为 1,总和 = n =n =n
  • n n n 为偶数,如果全放 1 异或会成 0,不行。
    最小的改动是留 n − 2 n-2 n2 个 1,再用一对 [ 2 , 3 ] [2,3] [2,3](因为 2 ⊕ 3 = 1 2\oplus3=1 23=1):

1 , … , 1 ⏟ n − 2 , 2 , 3 ⟹ 和 = ( n − 2 ) × 1 + ( 2 + 3 ) = n + 3. \underbrace{1,\dots,1}_{n-2},\,2,\,3 \quad\Longrightarrow\quad \text{和}=(n-2)\times1+(2+3)=n+3. n2 1,,1,2,3=(n2)×1+(2+3)=n+3.

3. x = 0 x=0 x=0

  • n = 1 n=1 n=1,不可能用一个正整数得到异或 0,答案 − 1 -1 1
  • n ≥ 2 n\ge2 n2

n n n 偶数:全放 n n n 个 1,异或为 0,总和 = n =n =n

n n n 奇数:留 n − 3 n-3 n3 个 1,再加 [ 1 , 2 , 3 ] [1,2,3] [1,2,3](因为 1 ⊕ 2 ⊕ 3 = 0 1\oplus2\oplus3=0 123=0),总和

( n − 3 ) × 1 + ( 1 + 2 + 3 ) = n + 3. (n-3)\times1 + (1+2+3) = n+3. (n3)×1+(1+2+3)=n+3.

问题 C

将数值相同的点先合并。

然后从大到小处理所有按钮

#include <bits/stdc++.h>
using namespace std;
using ll = long long;int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int T;cin >> T;while (T--){int n;cin >> n;vector<ll> a(n+2, 0);  // 哨兵:a[0]=a[n+1]=0for (int i = 1; i <= n; i++){cin >> a[i];}// 按权重分桶unordered_map<ll, vector<int>> pos;pos.reserve(n*2);for (int i = 1; i <= n; i++){pos[a[i]].push_back(i);}// 取所有不同权重并降序vector<ll> ws;ws.reserve(pos.size());for (auto &kv : pos) ws.push_back(kv.first);sort(ws.begin(), ws.end(), greater<ll>());vector<char> flooded(n+2, 0); // flooded[i]=1 表示 a[i] 已被按下(更大权重已处理)ll clones = 0;// 从大到小处理每个权重for (ll w : ws){auto &P = pos[w];sort(P.begin(), P.end());int m = P.size();// 将连续下标段划为一块块int start = 0;while (start < m){int end = start;while (end+1 < m && P[end+1] == P[end]+1)end++;// 这一块的下标区间 [L..R]int L = P[start], R = P[end];// 看看左右是否有已 flooded 的位置bool reachable = false;if (flooded[L-1]) reachable = true;if (flooded[R+1]) reachable = true;if (!reachable){// 必须新建一个 cloneclones++;}// 将这一块全部标记为 floodedfor (int k = start; k <= end; k++){flooded[P[k]] = 1;}start = end+1;}}cout << clones << "\n";}return 0;
}
http://www.dtcms.com/a/418008.html

相关文章:

  • 网站建设公司 合肥电子商务网站建设合同书
  • 自己网站做反链seo推广的网站和平台有哪些
  • 大同网站建设哪家好100个创意营销广告语
  • 做轮播海报的网站删除wordpress缓存文件在哪
  • 临沂做网站公司哪家好上海网站建设安全
  • 网站连锁店查询怎么做网络广告弹性指的是什么
  • 怀柔网站建设wordpress鼠标停留
  • 做汉字的教育网站重庆网站建设重庆零臻科技行
  • 北京首钢建设有限公司网站基金网站制作
  • dedecms企业网站模板门窗卫浴网站建设
  • 如何开发自己公司的网站网络营销外包的优点
  • 网站二次开发公司企业网站的价值
  • 用模板做网站网站建设的书 豆瓣
  • 网站建设开票写什么网站建设竞争性磋商文件
  • 电影网站膜拜助君网络怎么样
  • 包头网站作风建设年自评材料网站建设的主题
  • 用什么来网站开发好wordpress阿里百秀模板下载
  • 大好网站网站开发 activex
  • 做神马网站优化快速排软件技术专升本可以报什么专业
  • 留号码的广告网站中国小说网站策划与建设
  • it软件网站建设找装修活上哪个平台
  • 百度收录了我新网站的2篇文章了湖南省住建云公共信息服务平台
  • 做网站的哪家好网站收录平台方法
  • 陕西建设网综合便民服务中心网站制作公司网站设计要求
  • 做推手需要开网站吗黄冈公司做网站
  • 建设厅网站企业诚信分值wordpress 个人网站
  • 大良营销网站建设平台php旅游网站开发背景
  • 建设 网站协议php网站开发 薪资 东莞
  • 电商网站开发模块百度小说排行榜总榜
  • 哪些网站可以做网店有赞微商城商家登录