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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Codeforces Round #592 (Div. 2) G. Running in Pairs 构造(水)

發布時間:2023/12/4 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Round #592 (Div. 2) G. Running in Pairs 构造(水) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

文章目錄

  • 題意:
  • 思路:

題意:

思路:

史上最水GGG題,沒有之一。
考慮最小的情況如何構造,顯然就是讓a,ba,ba,b1?n1-n1?n依次排列即可,這樣的最小值為n?(n+1)2\frac{n*(n+1)}{2}2n?(n+1)?,如果mmm小于他,顯然無解,否則一定能構造一組解。
考慮將aaa置為從1?n1-n1?n的排列,讓后bbb初始也為1?n1-n1?n的排列,即a,b=1,2,...,na,b=1,2,...,na,b=1,2,...,n。考慮將bbb的最后一個數xxxaaax?1x-1x?1的位置向前移動,一直到bbb已經填完的位置之前,每移動一位即可將貢獻增加111,所以一直這樣移動,最后從1?n1-n1?n填上空位置即可。

// Problem: G. Running in Pairs // Contest: Codeforces - Codeforces Round #592 (Div. 2) // URL: https://codeforces.com/contest/1244/problem/G // Memory Limit: 256 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native") //#pragma GCC optimize(2) #include<cstdio> #include<iostream> #include<string> #include<cstring> #include<map> #include<cmath> #include<cctype> #include<vector> #include<set> #include<queue> #include<algorithm> #include<sstream> #include<ctime> #include<cstdlib> #include<random> #include<cassert> #define X first #define Y second #define L (u<<1) #define R (u<<1|1) #define pb push_back #define mk make_pair #define Mid ((tr[u].l+tr[u].r)>>1) #define Len(u) (tr[u].r-tr[u].l+1) #define random(a,b) ((a)+rand()%((b)-(a)+1)) #define db puts("---") using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); } //void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); } //void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f; const double eps=1e-6;LL n,m; int a[N],b[N]; int vis[N];int main() { // ios::sync_with_stdio(false); // cin.tie(0);cin>>n>>m;if(m<n*(n+1)/2) puts("-1");else {LL sum=0;for(int i=1;i<=n;i++) a[i]=i;int st=0,ed=n;m-=n*(n+1)/2;for(int i=n;i>=1;i--) {int now=i-1;if(now<=st) break;int cnt=now-st;if(m-cnt>=0) m-=cnt,b[++st]=i;else {b[now-m+1]=i;for(int j=1,t=1;j<=n;j++) if(!b[j]) b[j]=t++;break;}} int now=1;for(int i=1;i<=n;i++) if(!b[i]) b[i]=now++;for(int i=1;i<=n;i++) sum+=max(b[i],a[i]);printf("%lld\n",sum);for(int i=1;i<=n;i++) printf("%d ",a[i]); puts("");for(int i=1;i<=n;i++) printf("%d ",b[i]); puts("");}return 0; } /**/

總結

以上是生活随笔為你收集整理的Codeforces Round #592 (Div. 2) G. Running in Pairs 构造(水)的全部內容,希望文章能夠幫你解決所遇到的問題。

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