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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

丑憨批的vector笔记

發布時間:2024/10/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 丑憨批的vector笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上網統計

“在線自閉,是輸出出的問題,別用cout string”

#include <iostream> #include<bits/stdc++.h> using namespace std; const int N=1e5; vector<string>v[N];///v[i][0]存用戶名 int cnt=0; int findstr(string a,int n) {for(int i=0; i<cnt&&i<n; i++){if(v[i][0]==a){return i;}}return -1; } int main() {ios::sync_with_stdio(false);int n,m;cin>>n>>m;string user,page;int flag;cnt=0;for(int i=0;i<m; i++){cin>>user>>page;flag=findstr(user,n);if(flag==-1){//v[cnt][0]=user;v[cnt].push_back(user);v[cnt].push_back(page);cnt++;}else{v[flag].push_back(page);}}///RE // for(int i=0; i<n; i++) // { // for(int j=0; j<v[i].size(); j++) // { // if(j==v[i].size()-1) // { // cout<<v[i][j]; // } // else // { // cout<<v[i][j]<<" "; // } // } // cout<<endl; // }///ACfor(int i=0; i<n; i++){for(int j=0; j<v[i].size(); j++){if(j==v[i].size()-1){printf("%s",v[i][j].c_str());}else{printf("%s ",v[i][j].c_str());}}printf("\n");}return 0; }

圓桌問題

不能用隊列,會超時

2021.4.17復習,這里給vector里面賦值,這樣就能記住原來的位置,然后壞人用earse抹掉(pos=(pos+m-1)%v.size();),size是變化的

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第一個人開始數數,數到第m個人,則立即處死該人;然后從被處死的人之后開始數數,再將數到的第m個人處死……依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之后,圓桌上圍坐的剩余的n個人全是好人

多組數據(不超過60組),每組數據輸入兩個整數n,m(含義如題)

數據范圍:1<=n,m<=10000

對于每組數據,輸出一行,包括2n個大寫字母,‘G’表示好人,‘B’表示壞人。
Sample Input
2 3
2 4
Sample Output
GBBG
BGGB

//#include <iostream> //#include<bits/stdc++.h> //using namespace std; //bool vis[100005]; //queue<int>q; //void init(int n) ///1000ms 隊列模擬過不去 //{ // memset(vis,0,sizeof(bool)); // while(!q.empty()) // { // q.pop(); // } // for(int i=1;i<=2*n;i++) // { // q.push(i); // } //} //int main() //{ // //cout << "Hello world!" << endl; // int n,m;//int buf,i; // while(cin>>n>>m) // { // init(n); // int i=0,buf; // int counter=0; // while(counter!=n) // { // i++; // buf=q.front();q.pop(); // if(i==m) // { // counter++; // vis[buf]=1; // i=0; // continue;///bufanghui // } // else{ // q.push(buf); // } // } // for(int l=1;l<=2*n;l++) // { // if(vis[l]==0) // { // printf("G"); // continue; // } // if(vis[l]==1) // { // printf("B"); // continue; // } // } // printf("\n"); // } // return 0; // //} #include <bits/stdc++.h> using namespace std; const int N=20000+10; int n,m; bool vis[N]; vector<int>v; int main() {//ios::sync_with_stdio(false);while(scanf("%d %d",&n,&m)!=EOF){v.clear();memset(vis,0,sizeof(vis));///initfor(int i=0; i<2*n; i++)///從0開始方便取余,用取余直接刪除,kuai,o(n)v.push_back(i);int pos=0;int buf;for(int i=0;i<n;i++) //淘汰n個人{pos=(pos+m-1)%v.size();///最開始pos=0從頭開始,刪除后原來的要刪的點的下一個進位,從該數開始buf=v[pos];vis[buf]=1;v.erase(v.begin()+pos);///diedaiqicachu}for(int i=0; i<2*n; i++){if(vis[i])printf("B");elseprintf("G");}printf("\n");}return 0; }

鉆石收集者-vector

“用到了桶排,很有意思”
“可以去看jwdl的”

#include <iostream> #include <bits/stdc++.h> using namespace std; const int N=1e5+10; int n,k; int vis[N]= {0}; int sum[N]= {0}; //vector<int>v; ///類似海港 int main() {cin>>n>>k;int buf;for(int i=0; i<n; i++){cin>>buf;vis[buf]++;}for(int i=0; i<=N; i++){if(i==0){sum[i]=vis[i];}else{sum[i]=sum[i-1]+vis[i];}}///先求和函數///后面用【i+k】-【i-1】就是中間的積累值int maxer;for(int i=0; i+k<=N; i++){if(i==0){maxer=sum[i+k];}else{maxer=max(maxer,sum[i+k]-sum[i-1]);}}printf("%d\n",maxer);return 0; }

總結

以上是生活随笔為你收集整理的丑憨批的vector笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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