<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      P10786 [NOI2024] 百萬富翁

      因為交互庫是自適應的,所以當你只進行一次請求時,必須使得兩兩之間都有聯系,也就是形成一個團才能正確。
      對于 \(N=1000000\),很容易想到一個 \(\log N\) 次請求的做法:兩兩分組連邊,這樣查詢次數只有 \(n+O(1)\) 次,但是顯然過不去。
      所以我們可以考慮適當增加查詢次數,將分組大小改為 \(B\),也就是劃分成若干個大小為 \(B\) 的團連邊,最后剩下一個 \(cnt\bmod B\) 的團(\(cnt\) 為可能為最大值的個數),略調一下參可以獲得79分。
      我們發現這個過程是可以 dp 的,所以稍微限制一下團的大小,暴力打表可以獲得82分,但還不夠。
      考慮策略的缺陷,可能是因為 \(B\nmid cnt\),于是最后剩余的團的連邊不優。所以可以考慮增加另一種團 \(B2\),同一個請求便可以采用兩種團,于是暴力枚舉 \(B,B2\) 大小以及 \(B\) 的個數dp轉移打表,花上 700s 就可以得到題目要求的界了!(實際上好像可以欽定 \(B2=B+1\))。
      代碼:

      #include<bits/stdc++.h>
      using namespace std;
      //#include"richest.h"
      std::vector<int> ask(std::vector<int> a, std::vector<int> b);
      const int M=1e6+5;
      using ll=long long;
      int n;
      bool uns[M];
      int gt[M];
      mt19937 rnd(time(0));
      int LIM;
      int ori[21]={2,2,2,2,4,7,18,183,55,3,3,3,3,3,3,3,3,3,3,3};
      int ori2[21]={0,0,0,0,3,6,19,0,0};
      int num[21]={0,0,0,0,1,1,4,0,0};
      int richest(int N,int T,int S){
      	vector<int>a,b,c,cur;LIM=1099944;
      	memset(uns,0,sizeof uns);
      	int cnt=0;
      	if(N==1000){
      		for(int i=0;i<N;i++){
      			for(int j=i+1;j<N;j++)a.push_back(i),b.push_back(j);
      		}
      		c=ask(a,b);
      		for(int i=0;i<N;i++)for(int j=i+1;j<N;j++)(c[cnt++]==i)?uns[j]=1:uns[i]=1;
      		for(int i=0;i<N;i++)if(!uns[i])return i;
      	}
      	for(int i=0;i<21;i++){
      		cur.clear();a.clear();b.clear();
      		for(int j=0;j<N;j++)if(!uns[j])cur.push_back(j);
      		if((int)(cur.size())==1)return cur[0];
      		int B=ori[i];
      		int len=cur.size();B=min(B,len);
      		if(1ll*len*(len-1)/2<=LIM){
      			for(int j=0;j<len;j++){
      				for(int k=j+1;k<len;k++){
      					a.push_back(cur[j]),b.push_back(cur[k]);
      				}
      			}
      			LIM=0;
      		}
      		int pcnt=0;
      		for(int j=0;j<len&&LIM;j+=B){
      			pcnt++;
      			int ss=min(len-j,B);
      			for(int k=0;k<ss;k++){
      				for(int l=k+1;l<ss&&LIM;l++){
      					a.push_back(cur[j+k]),b.push_back(cur[j+l]);
      					LIM--;
      				}
      			}
      			if(pcnt==num[i])j+=B,B=ori2[i],j-=B;
      		}
      		c=ask(a,b);
      		cnt=c.size();
      		for(int j=0;j<cnt;j++)(c[j]==a[j])?uns[b[j]]=1:uns[a[j]]=1;
      	}
      	return 1;
      }
      

      打表程序:

      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6+5;
      using ll=long long;
      int n,a[N];
      auto *it=new unsigned;
      mt19937 rnd(time(0)^(*it));
      inline int mr(int l,int r){return rnd()%(r-l+1)+l;}
      unordered_map<int,int>um[N];
      int cnt;
      bool vis[N];
      int gt[N];
      ll dp[N][23];
      int pre[N][23],pre2[N][23],num[N][23];
      int main(){
      	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
      	int T;
      //	cin>>T;
      	dp[1][0]=0;
      	for(int i=1;i<=8;i++)dp[1][i]=1e18;
      	for(int i=2;i<=1e6;i++){
      		for(int k=0;k<=8;k++)dp[i][k]=1e18;
      		for(int k=1;k<=min(i,8);k++){
      			int x=1;
      			for(int j=2;j<=min(200,i);j++){
      				if((i/j)*j*(j-1)/2>dp[i][k])break;
      				int s=i%j;
      				ll cur=dp[i/j+(s?1:0)][k-1]+1ll*s*(s-1)/2+(i/j)*(1ll*j*(j-1)/2);
      				if(cur<dp[i][k]){
      					dp[i][k]=cur;
      					pre[i][k]=j;
      				}
      			}
      			for(int j=2;j<=min(30,i);j++){
      				for(int l=2;l<=min(30,i);l++){
      					for(int thr=1;thr<=min(i/j,30);thr++){
      						int ps=(i-j*thr);
      						int s=ps%l;
      						ll cur=dp[thr+ps/l+(s?1:0)][k-1]+s*(s-1)/2+thr*(j*(j-1)/2)+ps/l*l*(l-1)/2;
      						if(cur<dp[i][k]){
      							dp[i][k]=cur;
      							pre[i][k]=j;
      							num[i][k]=thr,pre2[i][k]=l;
      						}
      					}
      					
      				}
      			}
      		}
      		if(i<=500){
      			for(int k=1;k<=8;k++){
      				cerr<<i<<" "<<k<<" "<<dp[i][k]<<" "<<pre[i][k]<<"???\n";
      			}
      		}
      		if(i%100==0)cerr<<i<<"??\n";
      	}
      	int cur=1e6;
      	int k=8;
      	while(cur>1){
      		int s=pre[cur][k];
      		if(!num[cur][k])cerr<<cur<<" "<<s<<"???\n",cur=cur/s+((cur%s)?1:0);
      		else cerr<<cur<<" "<<pre[cur][k]<<" "<<pre2[cur][k]<<" "<<num[cur][k]<<"???\n",cur=num[cur][k]+(cur-num[cur][k]*pre[cur][k])/pre2[cur][k]+((cur-num[cur][k]*pre[cur][k])%pre2[cur][k]?1:0);
      		k--;
      	}
      	cerr<<dp[1000000][8]<<"GHG\n";
      	T=1;
      	for(int i=1;i<=30;i++){
      		cout<<(162-i)*(161-i)/2-(4129-13*i)<<"???\n";
      	}
      //	while(T--)solve();
      	return 0;
      }
      
      posted @ 2025-03-22 22:17  wjwweiwei  閱讀(59)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 乱人伦中文字幕成人网站在线| 高清不卡一区二区三区| 99久久无码私人网站| 亚洲 小说区 图片区 都市| 成人一区二区不卡国产| 免费人成视频在线观看不卡| 精品国产午夜福利在线观看| 日本亲近相奷中文字幕| 欧美人与性动交α欧美精品| 国产不卡的一区二区三区| 日韩成av在线免费观看| 亚洲欧美一区二区成人片| 日本夜爽爽一区二区三区| 欧美不卡无线在线一二三区观| 台山市| 国产中文一区卡二区不卡| 亚洲av永久无码精品漫画| 亚洲精品男男一区二区| 国产成人亚洲日韩欧美| 久久国产乱子伦免费精品无码 | 日韩精品人妻av一区二区三区| 国产综合久久久久久鬼色| yw尤物av无码国产在线观看| 动漫av网站免费观看| 成人3d动漫一区二区三区| 综合亚洲网| 少妇高潮流白浆在线观看| japanese边做边乳喷| 亚洲人成色99999在线观看| 陈巴尔虎旗| 日本道精品一区二区三区| 一区二区三区在线 | 欧洲| 久久综合色之久久综合| 国产又色又爽又黄的网站免费| 国产偷国产偷亚洲清高网站| 亚洲性图日本一区二区三区 | 国产成人午夜福利在线播放| 国产性一交一乱一伦一色一情| 亚洲av肉欲一区二区| 亚洲国产一区二区三区最新| 国产激情无码一区二区APP|