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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CodeForces 1204 (#581 div 2)

發(fā)布時間:2024/9/15 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeForces 1204 (#581 div 2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

傳送門

A.BowWow and the Timetable

?題意

給你一個二進制數(shù),讓你求小于這個數(shù)的所有4的冪的個數(shù)

?思路

第一反應是二進制與四進制轉換

(其實不用真正的轉換 QwQ)

由于二進制的兩位對應四進制的一位

所以可以得到四進制下的位數(shù)

四進制的位數(shù)就是小于等于這個數(shù)的所有4的冪的個數(shù),類比10進制下10的冪

由于不能有等于,所以根據二進制判斷一下這個數(shù)是不是4的冪

因為12,1002,100002 ,二進制下4的冪除了首位的1,后面是偶數(shù)個0

所以判斷是否是1帶偶數(shù)個0,是的話個數(shù)減一

?代碼

1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e6+5; 4 char s[maxn]; 5 int main() 6 { 7 scanf("%s",s+1); 8 int len=strlen(s+1),flag=0; 9 int cnt=(len+1)/2; 10 for(int i=2;i<=len;i++) 11 if(s[i]=='0') flag++; 12 if(flag==len-1 && len&1) 13 cnt--; 14 printf("%d\n",cnt); 15 } View Code

?

B.Mislove Has Lost an Array

?題意

數(shù)組中只存在$1$或者$x$

$x$是偶數(shù)并且$x/2$必須在數(shù)組中存在

給定$l,r$數(shù)組中最少有$l$個不同的數(shù),最多有$r$個不同的數(shù)

求數(shù)組里數(shù)的和的最小最大值

?思路

最小值是有$1,2,4...$等$l$個數(shù),如果不足n個用$1$補齊

最大值是有$1,2,4...$等$r$個數(shù),如果不足用這$r$個數(shù)中最大的補齊

?代碼

1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 int main() 5 { 6 int n,l,r; 7 cin>>n>>l>>r; 8 ll Min=0; 9 int cnt,i; 10 for(i=1,cnt=1;i<=l;cnt*=2,i++) 11 Min+=cnt; 12 Min+=(n-l); 13 14 ll Max=0; 15 for(cnt=1,i=1;i<=min(n,r);cnt*=2,i++) 16 Max+=cnt; 17 cnt/=2; 18 if(r<=n) 19 Max+=1ll*(n-r)*cnt; 20 cout<<Min<<' '<<Max<<endl; 21 } View Code

?

C.?Anna, Svyatoslav and Maps

?題意

給出鄰接矩陣表示一個有向圖

"1"代表有路,"0"代表沒有路

給出長度為$m$的序列,表示一條最短路

求,這個序列的一個子序列s,

滿足這個子序列s的最短路是m的序列,且s最短

?思路

由于從一個點到另一個點的路徑可能不止一條

一旦固定了路徑,那么從這個點到另一個點不必須經過的點如果在固定的路徑中的話

就必須有,防止從其它點經過

二那些必須經過的點,就不用有了,因為要使長度最短

固定路徑1,2,3,4

1可以直接到3而不必須經過2,但是固定路徑里有2

所以2必須存在,才能使得經過1,2

2到4必須經過3,所以2->4路徑有存在了3

為了使s最短,3不會有

?代碼

1 #include<bits/stdc++.h> 2 using namespace std; 3 #define inf 0x3f3f3f3f 4 const int maxn=1e6+5; 5 char s[105][105]; 6 int dis[105][105]; 7 int a[maxn],ans[maxn]; 8 int n,m; 9 10 void Init() 11 { 12 for(int i=1;i<=n;i++) 13 { 14 for(int j=1;j<=n;j++) 15 { 16 dis[i][j]=inf; 17 if(i==j) dis[i][j]=0; 18 if(s[i][j]=='1') dis[i][j]=1; 19 } 20 } 21 } 22 23 void floyd() 24 { 25 for(int k=1;k<=n;k++) 26 for(int i=1;i<=n;i++) 27 for(int j=1;j<=n;j++) 28 dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); 29 } 30 31 int main() 32 { 33 scanf("%d",&n); 34 for(int i=1;i<=n;i++) 35 scanf("%s",s[i]+1); 36 Init(); 37 floyd(); 38 39 scanf("%d",&m); 40 for(int i=1;i<=m;i++) 41 scanf("%d",a+i); 42 43 int cnt=0; 44 ans[++cnt]=a[1];/// 45 int pre=a[1]; 46 for(int i=2;i<=m;i++) 47 { 48 int cur=a[i-1]; 49 int nex=a[i]; 50 if(pre==cur) 51 continue; 52 ///要不必須經過的點 53 ///不要必須經過的點 54 if(dis[pre][cur]+dis[cur][nex]!=dis[pre][nex]) 55 { 56 ans[++cnt]=cur; 57 pre=cur; 58 } 59 } 60 ans[++cnt]=a[m];/// 61 62 printf("%d\n",cnt); 63 for(int i=1;i<=cnt;i++) 64 printf("%d ",ans[i]); 65 puts(""); 66 } View Code

?

D.Kirk and a Binary String?

?題意

給你一個$01$字符串s,讓你找到一個t串,使得

  • t串與s串的區(qū)間所有單調非遞減長度相同
  • t串中0個數(shù)最多

?思路

對于一個字符串,當前位置有$0,1$兩種情況

  • 當前位置是0

  當前位置是0,對于以他為起點的單調非遞減子序列肯定有貢獻,

  如果變?yōu)?,大多數(shù)情況下長度會減小(除了0后面全是1的情況,011111長度不變)

  如果變?yōu)?,0的數(shù)量比不變減少違背第二個任務

  • 當前位置是1

  如果變?yōu)?,對于以他(也就是以1) 為起點的單調非遞減子序列來說,長度無影響

  對于以0為起點的單調非遞減子序列來說,長度會受到影響

既然想要更多的0,那就需要盡可能的把1 變成0,那如何才能沒有影響呢?

那就需要以他(也就是以1) 為起點的單調非遞減子序列的長度大于以0為起點的單調非遞減子序列長度

因為影響大局的最長的那個,那就讓即使小的變化了,也不會對大局產生影響!

換句話說,若想將$1$ 變?yōu)?$0$ ,必須保證后面所有的區(qū)間的單調非遞減子序列長度必須和 1 的個數(shù)相等

也就是從后往前找,當$1$的個數(shù)大于$0$的個數(shù)時,$1$才可以變成$0$

?代碼

1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const int maxn=1e6+4; 5 char s[maxn]; 6 int a[maxn]; 7 int main() 8 { 9 scanf("%s",s+1); 10 int len=strlen(s+1); 11 int cnt=0; 12 for(int i=len;i>=1;i--) 13 { 14 if(s[i]=='0') 15 cnt++; 16 else 17 { 18 if(cnt) --cnt; 19 else s[i]='0'; 20 } 21 } 22 23 printf("%s",s+1); 24 } View Code

?

?

轉載于:https://www.cnblogs.com/MMMinoz/p/11511281.html

總結

以上是生活随笔為你收集整理的CodeForces 1204 (#581 div 2)的全部內容,希望文章能夠幫你解決所遇到的問題。

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