日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2019 ICPC 南京网络赛 F Greedy Sequence

發布時間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019 ICPC 南京网络赛 F Greedy Sequence 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

You're given a permutation?aa?of length?nn?(1 \le n \le 10^51≤n≤105).

For each?i \in [1,n]i∈[1,n], construct a sequence?s_isi??by the following rules:

  • s_i[1]=isi?[1]=i;
  • The length of?s_isi??is?nn, and for each?j \in [2, n]j∈[2,n],?s_i[j] \le s_i[j-1]si?[j]≤si?[j?1];
  • First, we must choose all the possible elements of?s_isi??from permutation?aa. If the index of?s_i[j]si?[j]?in permutation?aa?is?pos[j]pos[j], for each?j \ge 2j≥2,?|pos[j]-pos[j-1]|\le k∣pos[j]?pos[j?1]∣≤k?(1 \le k \le 10^51≤k≤105). And for each?s_isi?, every element of?s_isi??must occur in?aa?at most once.
  • After we choose all possible elements for?s_isi?, if the length of?s_isi??is smaller than?nn, the value of?every undetermined element?of?s_isi??is?00;
  • For each?s_isi?, we must make its weight high enough.
  • Consider two sequences?C = [c_1, c_2, ... c_n]C=[c1?,c2?,...cn?]?and?D=[d_1, d_2, ..., d_n]D=[d1?,d2?,...,dn?], we say the weight of?CC?is?higher thanthat of?DD?if and only if there exists an integer?kk?such that?1 \le k \le n1≤k≤n,?c_i=d_ici?=di??for all?1 \le i < k1≤i<k, and?c_k > d_kck?>dk?.

    If for each?i \in [1,n]i∈[1,n],?c_i=d_ici?=di?, the weight of?CC?is equal to the weight of?DD.

    For each?i \in [1,n]i∈[1,n], print the number of non-zero elements of?s_isi??separated by a space.

    It's guaranteed that there is only one possible answer.

    Input

    There are multiple test cases.

    The first line contains one integer?T(1 \le T \le 20)T(1≤T≤20), denoting the number of test cases.

    Each test case contains two lines, the first line contains two integers?nn?and?kk?(1 \le n,k \le 10^51≤n,k≤105), the second line contains?nn?distinct integers?a_1, a_2, ..., a_na1?,a2?,...,an??(1 \le a_i \le n1≤ai?≤n) separated by a space, which is the permutation?aa.

    Output

    For each test case, print one line consists of?nn?integers?|s_1|, |s_2|, ..., |s_n|∣s1?∣,∣s2?∣,...,∣sn?∣?separated by a space.

    |s_i|∣si?∣?is the number of non-zero elements of sequence?s_isi?.

    There is no space at the end of the line.

    樣例輸入復制

    2 3 1 3 2 1 7 2 3 1 4 6 2 5 7

    樣例輸出復制

    1 2 3 1 1 2 3 2 3 3

    這題是隊友出的,這個題好像線段樹能做,但是我們是暴力加貪心做的,前幾遍是枚舉的區間位置純暴力,后來是枚舉左右區間長度,對于每個元素的下一個元素都是唯一固定的。之后記憶化搜索就可以求出每個序列。

    #include<stdio.h> #include<algorithm> #include<iostream> #include<string.h> #include<math.h> #include<vector> #include<queue> #include<map> using namespace std; #define LL long long #define MAXN 100100 int a[MAXN],pos[MAXN]; int s[MAXN],oo[MAXN]; int main() {int t;scanf("%d",&t);int n,k,l,r,maxx;while(t--){scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%d",a+i);pos[a[i]]=i;s[i]=1;}s[0]=0;for(int i=2;i<=n;i++){int j=i-1;while(j>0){if(abs(pos[i]-pos[j])<=k){s[i]+=s[j];break;}j--;}}for(int i=1;i<=n;i++){printf("%d",s[i]);if(i<n)printf(" ");}printf("\n");} }

    ?

    總結

    以上是生活随笔為你收集整理的2019 ICPC 南京网络赛 F Greedy Sequence的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。