国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【超好懂的比賽題解】2022CCPC四川省賽 個人題解

這篇具有很好參考價值的文章主要介紹了【超好懂的比賽題解】2022CCPC四川省賽 個人題解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


title : “??低暠?2022年第十四屆四川省大學生程序設(shè)計大賽
tags : ACM,練習記錄
date : 2022-10-18
author : Linno


“??低暠?2022年第十四屆四川省大學生程序設(shè)計大賽

題目鏈接:https://ac.nowcoder.com/acm/contest/42105

出題數(shù)量:5/11 (順序:K->F->B->H->A)

A-Adjacent Swapping

顯然可以先貪心移動(直接掃一遍)字符使前后兩半在字符數(shù)量上是一樣的,這樣便構(gòu)造出了 s 1 , s 2 s1,s2 s1,s2,長度均為 l e n = n / 2 len=n/2 len=n/2。我的移動次數(shù)計算方法就是用 s 1 s1 s1每個字符原來的位置和減去原來前 l e n len len個位置的位置和 l e n ? ( l e n ? 1 ) / 2 len*(len-1)/2 len?(len?1)/2。接下來只需要考慮多少步使得 s 2 ? > s 1 s2->s1 s2?>s1,對于相鄰兩個位置交換的排序移動次數(shù),本質(zhì)上求一個逆序?qū)涂梢粤耍ㄓ浟私Y(jié)論),那么直接用 s 1 s1 s1編號每個字符,然后減去逆序?qū)湍艿贸龃鸢浮?/p>

#include<bits/stdc++.h>
#define lb(x) (x&-x) 
#define int long long
using namespace std;
const int N=2e5+7;

int n,num[30],now[30],len1=0,len2=0;
char s1[N],s2[N];
string str;
queue<int>pos[30];

int tr[N<<1];
inline int query(int x){
	int sum=0;
	for(;x;x-=lb(x)) sum+=tr[x];
	return sum;
}
inline void update(int x){
	for(;x<=len2;x+=lb(x)) tr[x]+=1;
}

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	cin>>str;
	for(int i=0;i<n;++i) ++num[str[i]-'a'];
	vector<int>vt;
	int i,j,ans=0;
	for(i=0,j=0;i<n;++i){
		if(j<n/2){
			if(now[str[i]-'a']+1<=num[str[i]-'a']/2) ++now[str[i]-'a'],++j,s1[++len1]=str[i],ans+=i;
			else vt.emplace_back(i);  //將其放到后半段 
		}else{
			if(vt.size()){
				for(auto to:vt) s2[++len2]=str[to];
				vt.clear();
			}
			s2[++len2]=str[i]; 
		}
	}
	for(int i=1;i<=len1;++i) pos[s1[i]-'a'].emplace(i);
	for(int i=1;i<=len2;++i){
		ans-=query(pos[s2[i]-'a'].front());
		update(pos[s2[i]-'a'].front());
		pos[s2[i]-'a'].pop();
	}
	cout<<ans<<"\n";
	return 0;
}

B-usiness Website

對于一條鏈 u ? > v u->v u?>v來說, v v v的概率就在 v v v概率基礎(chǔ)上多乘路徑上邊概率的乘積,六位小數(shù)顯然是會爆的。那么經(jīng)典做法就是取對數(shù),于是就變成了遞推式: d i s [ v ] + = p o w ( 2 , l o g 2 ( d i s [ u ] ) + l o g 2 ( w ) ) ,其中 w 為邊權(quán), d i s 為概率 dis[v]+=pow(2,log_2(dis[u])+log2(w)),其中w為邊權(quán),dis為概率 dis[v]+=pow(2,log2?(dis[u])+log2(w)),其中w為邊權(quán),dis為概率

#include<bits/stdc++.h>
using namespace std;
const int N=2e6+7;

struct E{
	int v,nxt;
	double w;
}e[N<<1];
int head[N],cnt=0;
inline void addedge(int u,int v,double w){
	e[++cnt]=(E){v,head[u],w};head[u]=cnt;
}

int n;
double dis[N],lf[N];

void solve(){
	scanf("%d",&n);
	for(int i=1,x;i<n;++i){
		scanf("%d",&x);
		for(int j=1,v;j<=x;++j){
			double w;
			scanf("%d%lf",&v,&w);
			addedge(i,v,w);
			lf[i]+=w;
		}
	}
	dis[1]=1.0;
	for(int i=1;i<n;++i){
		for(int j=head[i];j;j=e[j].nxt){
			int to=e[j].v;double w=e[j].w;
			dis[to]+=pow(2,log2(dis[i])+log2(w));
		}
		dis[i]*=(1.0-lf[i]);
	}
	for(int i=1;i<=n;++i) printf("%.8lf ",dis[i]);
	puts("");
	for(int i=0;i<=n;++i) head[i]=dis[i]=lf[i]=0;
	cnt=0; 
}

signed main(){
	int t;
	scanf("%d",&t);
	while(t--){
		solve();
	}
	return 0;
}

/*
3
3
2 2 0.300000 3 0.300000
1 3 0.500000
5
1 2 0.111111
1 3 0.111111
1 4 0.111111
1 5 0.111111
4
3 2 0.500000 3 0.100000 4 0.200000
2 3 0.400000 4 0.600000
1 4 0.700000
*/

F-Factor Difference

不會證,打表打出來了規(guī)律(順便把打表程序貼在下面了),后面所有 x x x都是三個最小間隔的質(zhì)數(shù)相乘,這個間隔指三個數(shù)差不小于 n n n,同時第一個數(shù)至少大于 n n n(因為1也是因子)。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+7;
const int inf=0x3f3f3f3f; 

int n,t,np[N],pri[N],cnt=0;
void init(){
	np[1]=1;
	for(int i=2;i<N;++i){
		if(!np[i]) pri[++cnt]=i;
		for(int j=1;j<=cnt&&pri[j]*i<N;++j){
			np[pri[j]*i]=1;
			if(i%pri[j]==0) break;
		}
	}
}

void solve(){
	cin>>n;
	if(n==1){
		cout<<"24\n";
		return;
	}else if(n==2){
		cout<<"105\n";
		return;
	}else{
		int k=lower_bound(pri+1,pri+1+cnt,n+1)-pri;
		int p=lower_bound(pri+1,pri+1+cnt,pri[k]+n)-pri;
		int q=lower_bound(pri+1,pri+1+cnt,pri[p]+n)-pri;
		int ans=pri[k]*pri[p]*pri[q];
		//cout<<n<<" "<<pri[k]<<" "<<pri[p]<<" "<<pri[q]<<" "<<ans<<"!!\n";	
		cout<<ans<<"\n";
	}
}

signed main(){
	init();
	cin>>t;
	for(int i=1;i<=t;++i){
		//n=i;
		solve();
	}
	return 0;
}

/*
int solve(int n,int lst){
	for(int ans=24;;++ans){
		int lst=1,cnt=1,flag=1;
		for(int j=2;j<=ans;++j){
			if(ans%j==0){
				if(j-lst<n){
					flag=0;
					break;
				}
				else ++cnt,lst=j;
			}
		}
		if(flag&&cnt>=8){
			return ans;
		}
	} 
}

signed main(){
	init();
	cin>>t;
	for(int n=1,lst;n<=t;++n){
		int ans=solve(n,lst);
		cout<<n<<" "<<ans<<" ";
		for(int j=1;j<=20;++j){
			int len=0;
			while(ans%pri[j]==0) ++len,ans/=pri[j];
			cout<<len<<" ";
		}
		lst=ans;
		cout<<"\n";
	}
	return 0;
}*/

H-Hacking Interview Solution

感覺這才應(yīng)該是簽到題吧,簡單來說就是問有多少對 n n n維向量是沖突的。這不就直接雙哈希搞定了嗎。

#include<bits/stdc++.h>
#define int long long
#define mk make_pair
#define pii pair<int,int>
using namespace std;
const int mod1=1e9+7,mod2=1e9+9;
const int b1=131,b2=233;
const int N=1e5+7;

int n,m,t,a[N];
map<pii,int>mp;

inline int read(){
	int x=0;char ch=getchar();
	while(!isdigit(ch)) ch=getchar();
	while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();
	return x; 
}

void solve(){
	mp.clear();
	n=read();m=read();
	int ans=0;
	for(int i=1;i<=n;++i) a[i]=read();
	for(int i=1;i<=m;++i){
		int hs1=0,hs2=0;
		for(int j=1,x;j<=n;++j){
			x=read();
			hs1=(hs1*b1+x)%mod1;
			hs2=(hs2*b2+x)%mod2;
		}
		ans+=mp[mk(hs1,hs2)];
		++mp[mk(hs1,hs2)];
	}
	printf("%lld\n",ans);
}

signed main(){
	t=read();
	while(t--){
		solve();
	}
	return 0;
}

K-Kooky Clock

簽到題。直接照著按點旋轉(zhuǎn)的板子寫就行了。文章來源地址http://www.zghlxwxcb.cn/news/detail-472324.html

#include<bits/stdc++.h>
#define LD double
#define LL long long
#define Re int
#define Vector Point
using namespace std;
const int N=262144+3;
const LD eps=1e-8,Pi=acos(-1.0);
inline int dcmp(LD a){return a<-eps?-1:(a>eps?1:0);}//處理精度
inline LD Abs(LD a){return a*dcmp(a);}//取絕對值
struct Point{
    LD x,y;Point(LD X=0,LD Y=0){x=X,y=Y;}
    inline void in(){scanf("%lf%lf",&x,&y);}
    inline void out(){printf("%.8lf %.8lf\n",x,y);}
};


/*二:【向量】*/
inline LD Dot(Vector a,Vector b){return a.x*b.x+a.y*b.y;}//【點積】
inline LD Cro(Vector a,Vector b){return a.x*b.y-a.y*b.x;}//【叉積】
inline LD Len(Vector a){return sqrt(Dot(a,a));}//【模長】
inline LD Angle(Vector a,Vector b){return acos(Dot(a,b)/Len(a)/Len(b));}//【兩向量夾角】
inline Vector Normal(Vector a){return Vector(-a.y,a.x);}//【法向量】
inline Vector operator+(Vector a,Vector b){return Vector(a.x+b.x,a.y+b.y);}
inline Vector operator-(Vector a,Vector b){return Vector(a.x-b.x,a.y-b.y);}
inline Vector operator*(Vector a,LD b){return Vector(a.x*b,a.y*b);}
inline bool operator==(Point a,Point b){return !dcmp(a.x-b.x)&&!dcmp(a.y-b.y);}//兩點坐標重合則相等


/*三:【點、向量的位置變換】*/

/*1.【點、向量的旋轉(zhuǎn)】*/
inline Point turn_P(Point a,LD theta){//【點A\向量A順時針旋轉(zhuǎn)theta(弧度)】
    LD x=a.x*cos(theta)+a.y*sin(theta);
    LD y=-a.x*sin(theta)+a.y*cos(theta);
    return Point(x,y);
}
inline Point turn_PP(Point a,Point b,LD theta){//【將點A繞點B順時針旋轉(zhuǎn)theta(弧度)】
    LD x=(a.x-b.x)*cos(theta)+(a.y-b.y)*sin(theta)+b.x;
    LD y=-(a.x-b.x)*sin(theta)+(a.y-b.y)*cos(theta)+b.y;
    return Point(x,y);
}

signed main(){
	int T,l1,l2,l3,t1,t2,t3;
	scanf("%d",&T);
	scanf("%d%d%d",&l1,&l2,&l3);
	scanf("%d%d%d",&t1,&t2,&t3);
	Point p1(0,l1),O(0,0);
	p1=turn_PP(p1,O,2.0*Pi*T/t1);
	Point p2(p1.x,p1.y+l2);
	p2=turn_PP(p2,p1,2.0*Pi*T/t2);
	Point p3(p2.x,p2.y+l3);
	p3=turn_PP(p3,p2,2.0*Pi*T/t3);
	p3.out();
	return 0;
}

到了這里,關(guān)于【超好懂的比賽題解】2022CCPC四川省賽 個人題解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 2023 年四川省職業(yè)院校技能大賽(高等職業(yè)教育) “信息安全管理與評估”樣題

    競賽需要完成三個階段的任務(wù),分別完成三個模塊,總分共計 1000分。三個模塊內(nèi)容和分值分別是: 1.第一階段:模塊一 網(wǎng)絡(luò)平臺搭建與設(shè)備安全防護(180 分鐘,300 分)。 2.第二階段:模塊二 網(wǎng)絡(luò)安全事件響應(yīng)、數(shù)字取證調(diào)查、應(yīng)用程序安全(180 分鐘,300 分)。 3.第三階

    2024年02月07日
    瀏覽(26)
  • 2021四川省icpc省賽H題 Nihongo wa Muzukashii Desu 日本語は難しいです!

    2021四川省icpc省賽H題 Nihongo wa Muzukashii Desu 日本語は難しいです!

    日本語は難しいです! それは難しくないと思うだけど 傳送門 一些吐槽 這題好像惡心了不少學弟啊 其實只要讀懂了題就很好做, 對于我這種日語高考生來說確實是有點犯規(guī)了 不過當時我寫的時候不能用翻譯一看題面一大串英文就被我pass掉, 后面看到一大堆人過了我才去寫

    2023年04月16日
    瀏覽(26)
  • sakuya726's 2023 ICPC China SiChuan Provincial Programming Contest(ICPC2023四川省賽)游記隨筆

    sakuya726's 2023 ICPC China SiChuan Provincial Programming Contest(ICPC2023四川省賽)游記隨筆

    出發(fā)前一天,收拾東西做好準備工作。打印了自己記憶中所有高級數(shù)據(jù)結(jié)構(gòu)的板子(然而實際上并沒有卵用),VP一把往年的四川省賽。 不出意外的失眠了,早上九點四十的火車,凌晨五點才睡覺。七點半出發(fā)去火車站,天還下著雨,剛開始感覺還挺有意境,然后當我在雨中

    2024年02月07日
    瀏覽(20)
  • 2022 年 CCPC 河南省賽 (A,E,F,G,H)

    2022 年 CCPC 河南省賽 (A,E,F,G,H)

    更好的閱讀體驗 color{red}{更好的閱讀體驗} 更好的閱讀體驗 原題鏈接 題目大意 : 一個數(shù)由互不相同的 n n n 位數(shù)組成。 輸出 n n n 位的滿足上述條件的最小整數(shù)(不含前導零)。 不存在則輸出 ? 1 -1 ? 1 。 思想 : 簽到題。 當 n = 10 時,最小的 n n n 位數(shù)的序列為 [1, 0, 2,

    2024年02月05日
    瀏覽(24)
  • 湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點+樸素模擬

    湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點+樸素模擬

    比賽 有 n個人要進行比賽 ,比賽規(guī)則如下: 假設(shè)每輪比賽的人是m,取 最大的k , k=2^t 且k≤m。 這k個人每2人舉行一場比賽 ,勝利者進入一下輪,失敗者被淘汰。 余下的m-k個人,不進行比賽,直接進入下一輪 直到?jīng)Q出冠軍,比賽結(jié)束 。 比如有5個人參加比賽,第一輪舉辦

    2024年02月13日
    瀏覽(24)
  • 【NLP】AI相關(guān)比賽匯總(2022)

    【NLP】AI相關(guān)比賽匯總(2022)

    很多時候,我們掌握了一些算法理論,也具有復現(xiàn)一些算法的能力,隨處可見相關(guān)算法解決的demo都大相徑庭,與實際的問題其實還差得遠。對于一些算法小白來說,渴望找一些實際的任務(wù)去實踐一下,如果自己想去把自己學習的算法應(yīng)用到實際生活中,苦于沒有標注數(shù)據(jù)的無

    2023年04月13日
    瀏覽(17)
  • 題解動態(tài)規(guī)劃:藍橋杯2022國賽B組 題解 A題目

    題解動態(tài)規(guī)劃:藍橋杯2022國賽B組 題解 A題目

    在這組題(藍橋杯C/C++ B組 國賽)里面挑了幾道喜歡的題目,做了一下,筆記思路如下。( 其實是我覺得能做出的題 ) 題目圖片來源于:CSDN 罰時大師月色 請問2022,拆分成10個不同的正整數(shù)有多少種不同的分法。 這道題目,拿到手上的時候,第一個想法是暴力,但是,每次

    2023年04月08日
    瀏覽(22)
  • 2022 CSP-J 復賽題解

    【題目描述】 小文同學剛剛接觸了信息學競賽,有一天她遇到了這樣一個題:給定正整數(shù) a 和 b ,求 a b 的值是多少。 a b 即 b 個 a 相乘的值,例如 23 即為 3 個 2 相乘,結(jié)果為 2 × 2 × 2 = 8。 “簡單!”小文心想,同時很快就寫出了一份程序,可是測試時卻出現(xiàn)了錯誤。 小文

    2024年02月07日
    瀏覽(23)
  • 2022CSP-J2題解

    今天(2022,10,29), C S P ? J S CSP-JS C S P ? J S 第二輪成功舉辦, 雖然大部分省市疫情取消 本蒟蒻今天有幸參加CSP,特發(fā)入門組題解 小文同學剛剛接觸了信息學競賽,有一天她遇到了這樣一個題:給定正整數(shù) a a a 和 b b b ,求 a b a^b a b 的值是多少。 a b a^b a b 即 b b b 個 a a a 相乘

    2023年04月08日
    瀏覽(39)
  • 2022CSP-J 題解[完整版]

    “西西弗”的腦子是被宇宙射線影響了嗎,造的題目我都寫到睡著了…… 題目描述 小文同學剛剛接觸了信息學競賽,有一天她遇到了這樣一個題:給定正整數(shù) a a a 和 b b b ,求 a b a^b a b 的值是多少。 a b a^b a b 即 b b b 個 a a a 相乘的值,例如 2 3 2^3 2 3 即為 3 3 3 個 2 2 2 相乘,

    2024年02月10日
    瀏覽(74)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包