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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Gym 101845(2018 ACM-ICPC, Universidad Nacional de Colombia Programming Contest)

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gym 101845(2018 ACM-ICPC, Universidad Nacional de Colombia Programming Contest) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem A


Problem B

分析:

暴力查找,由操作111,我們可以知道原串的第一位可以匹配結果串的每一位,所以O(n)\mathcal{O}(n)O(n)枚舉對齊判斷就好;由操作222,對于每一個對齊好的原串,我們要花最少次數變成答案串,我們可以確定一個位置,然后進行變換,這里有三種情況:

  1. 變選定位置和它的后一個位置
  2. 變選定位置和它的前一個位置
  3. 變選定位置和它的后一個位置,再變選定位置和它的前一個位置,即選定位置變了兩次
    接著根據遞推關系把原串變了,在最后一次變換后判斷可不可行,不同對齊的情況取min\text{min}min就好。

整體時間復雜度O(n2)\mathcal{O}(n^2)O(n2)

代碼:

Code


Problem C

題意:

給你兩個串str1str1str1str2str2str2以及mmm種操作,對于第iii操作你可以花費costicost_icosti?元,將字符cic_ici?編程字符viv_ivi??,F在問你將str1str1str1轉化為str2str2str2的最小花費。

分析:

考慮將這mmm種操作的關系連邊,并形成一個關系圖。要想使得str1str1str1轉化成str2str2str2的花費最少,顯然是對于str1str1str1中的每一個跟str2str2str2不同的字符,我們要在關系圖中找最小的花費。

因此這顯然是一個多元最短路的問題,我們用Floyd\text{Floyd}Floyd即可。

代碼:

Code


Problem D

題意:

給你一個有nnn個頂點的多邊形,現在有mmm個點對(x,y)(x,y)(x,y),現在讓你求出這mmm個點對中,xxxyyy所夾的最大的突變型的面積。

分析:

首先,對于一個nnn邊形,如果要求出他的面積,則我們可以把他劃分成n?1n-1n?1個三角形,之后我們只需要用叉積的形式求出這n?1n-1n?1個三角形的面積即可。

而現在這個題目中,需要我們求mmm個由點對(x,y)(x,y)(x,y)圍城的多邊形,如果我們用上面的做法去做時間復雜度顯然會達到O(nm)\mathcal{O}(nm)O(nm)。

但是我們發現,在我們求一個nnn邊形的面積的時候,我們是采用將面積累加的形式,而由此,我們可以采用前綴和去優化。

我們設sum[i]\text{sum[i]}sum[i]為前iii個點所圍成的多邊形的面積,我們畫一下圖之后可以發現,點對(x,y)(x,y)(x,y)所圍成的面積即為:sum[y-1]-sum[x]-(p[x]????p[y])?\text{sum[y-1]-sum[x]-(p[x] \^ ~p[y]) }sum[y-1]-sum[x]-(p[x]????p[y])?。

代碼:

Code


Problem E

題意:

給你一個邊長為nnn的正三角形,正三角形的每條邊都有n?1n-1n?1條線跟對應的邊平行,且這n?1n-1n?1條線都是平分線。

現在問你,在這樣的一個三角形中,有多少個點對(x,y)(x,y)(x,y),使得由他們組成的線段xyxyxy中,包含著點ccc,使得點ccc也是這個三角形的頂點。

分析:

因為nnn比較小,因此我們可以打表。顯然我們可以把這個邊長為nnn(1+n)?n2\frac{(1+n)*n}{2}2(1+n)?n?個頂點的坐標都表示出來,其次我們可以首先枚舉線段的兩個頂點x,yx,yx,y,再枚舉第三個點zzz,判斷是否存在一個點zzz在線段x,yx,yx,y中。

之后打表獲取答案即可,打表的時間復雜度為O(n5)\mathcal{O}(n^5)O(n5),鑒于nnn還是比較小,還是可以在比較快的時間內得出答案的。

而這題也有時間復雜度為O(n2)\mathcal{O}(n^2)O(n2)的優秀算法,有時間再更新。


Problem F

題意:

nnn支隊伍,每個隊伍有333個隊員,每個隊伍都有一個或多個擅長的領域(分別為A到Z)。而一個隊伍最擅長的領域取決于他們中出現次數最多的(如果有多個則都是)。

現在規定,每個領域最多只能有kkk個隊伍擅長,現在問你,最多有多少個隊伍符合條件。

分析:

網絡流的裸題。

我們考慮先讓每個隊伍跟他符合條件的領域連邊。

因為每個領域最多只能有kkk個隊伍擅長,因此,我們只需要對每個領域向超級匯點連接一條大小為kkk的邊限流即可。

最后把超級源點都給每個隊伍連一條大小為111的邊作為流量,最后對這張圖跑最大流即可。

代碼:

Code


Problem G

分析:

先把每個字母的取和不取的概率算出來,要用到乘法逆元;接著進行dpdpdpdp[i][j]dp[i][j]dp[i][j]表示到長度i時猜中到第jjj個的概率,最后將所有猜中到第mmm個的概率加起來就是答案。
復雜度O(n?m)\mathcal{O}(n*m)O(n?m)

代碼:

Code


Problem H

溫暖的簽到題,只需要知道平年每過一年星期數+1,如果是閏年,過一年后星期數+2即可。

Code


Problem I

貌似是一個溫暖的簽到題,可能因為沒有外榜大家都沒有很快的ACACAC。

實質上只需要模擬一下二進制循環移位的過程就結束了。

Code


Problem J

題意:

nnn個點,mmm條邊。對于第iii條邊,你可以從uiu_iui?走到viv_ivi?,花費cic_ici?元,花費tit_iti?時間。同時,你只能在時間sis_isi?時候進行移動,且你只能在每si+fi、si+2?fi…si+n?fis_i+f_i 、s_i+2*f_i \dots s_i+n*f_isi?+fi?、si?+2?fi?si?+n?fi?時刻進行移動?,F在問你從111號結點走到nnn號結點的最少時間以及在此基礎下的最小的花費。

分析:

雖然多了一個移動時間的限制,但是本質上還是一個最短路徑的問題。

我們發現等待的過程可以分為兩種:

  1. 當前的時間cur≤sicur\leq s_icursi?
  2. 當前的時間cur>sicur > s_icur>si?

對于第一種情況,我們顯然只能等待到sis_isi?時候后,再花費tit_iti?的時間,故對于情況111,此時需要花費的累計的時間為cur=si+ticur=s_i+t_icur=si?+ti?

而對于第二種情況,要使的花費時間最小,我們必然想要等到一個最近的發車點,因此我們只需要獲取需要等待的時間間隔cur?sifi+1\frac{cur-s_i}{f_i}+1fi?cur?si??+1,并用這個間隔算出最終所需的時間。

而倘若解決了上訴時間問題,之后我們只需要利用所算出的時間進行松弛操作即可。

代碼:

Code


Problem K


Problem L

分析:

構造題,對于一個邊長為N=2nN=2^nN=2n的矩陣,我們可以每次對它一分為444,類似“田”字,然后查找哪個子矩陣有一個點被占用,即有被填過或為一開始的(x,y)(x,y)(x,y),然后在四個矩陣的交界處,填上一個LLL,這個LLL經過另外三個矩陣,這時候四個子矩陣都有一個點被占用了,接下來我們對子矩陣再進行同樣的操作,直到矩陣不可再分。

最后填色,對你填LLL過程中的LLL打標記,最后%26\%26%26填字母就行,要說正確性,題目中2n2^n2n的矩陣,nnn最大才111111,你遞歸過程中,按順序來,碰撞概率是極低的吧
復雜度O(N?N)\mathcal{O}(N*N)O(N?N)

代碼:

Code


Problem M

分析:

一個比較簡單的概率的問題……

代碼:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,k;
int main(){cin>>a>>b>>k;double ans=0;ll res=b-k+1;if (k>b) ans=1.0*b/k;else  ans=1.0*((k-1)+1.0*res/(res+a))/k;printf("%.7f\n",ans);return 0;
}

轉載于:https://www.cnblogs.com/Chen-Jr/p/11007148.html

總結

以上是生活随笔為你收集整理的Gym 101845(2018 ACM-ICPC, Universidad Nacional de Colombia Programming Contest)的全部內容,希望文章能夠幫你解決所遇到的問題。

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