(educational codeforces round 14)
有一串01序列,除非只有乙個數,否則若只有乙個0,輸出「yes」,反之輸出「no」。
簡單的計數,特判n=1的情況。
#include
using
namespace
std;
int main()
if((cnt==n-1&&n!=1)||(n==1&&cnt==1)) cout
<<"yes";
else
cout
<<"no";
}
給出一串字串,如果字串左右完全對稱,輸出」yes「,否則輸出」no」。
從0-字串長度除以2處依次列舉當前位置的字元,再分類判斷,題目本身不難,但判斷哪乙個字元是對稱的有點坑2333.
#include
using
namespace
std;
int main()
}cout
<<"tak";
}
輸入一串字串代表乙個數字(可能有前後導零),輸出這個數字用科學計數法表示的結果。
第一眼看到這題還以為是思維題,然後就記錄了小數點的位置去分類討論,做了好久才做出來。應該有比較好的構造解法,這裡貼出我的分類ac**。
#include
using
namespace
std;
int main()
if(pos==-1&&s[i]!='0') t1++;
if(pos!=-1&&i!=pos&&s[i]!='0') t2++;
}if(t1==0&&t2==0) cout
<<0;
else
if(!dian)
for(int i=n-1;i>=0;i--)
for(int i=cnt1;icout
<<".";
}if(n-1-cnt1!=0)cout
<<"e"
<1-cnt1;
}else
if(pos==n-1)
for(int i=n-2;i>=0;i--)
for(int i=cnt1;i<=n-cnt2-2;i++)
if(n-2-cnt1!=0)cout
<<"e"
<2-cnt1;
}else
if(t2==0)
for(int i=pos-1;i>=0;i--)
for(int i=cnt1;icout
<<".";
}if(pos-1-cnt1!=0)cout
<<"e"
<1-cnt1;
}else
if(pos==0)
for(int i=n-1;i>=0;i--)
for(int i=1+cnt1;icout
<<".";
}if(cnt1+1!=0)cout
<<"e-"
<1;
}else
if(t1==0)
for(int i=n-1;i>pos;i--)
for(int i=pos+cnt1+1;icout
<<".";
}if(cnt1+1!=0)cout
<<"e-"
<1;
}else
for(int i=n-1;i>=pos+1;i--)
for(int i=cnt1;icout
<<".";
}for(int i=pos+1;icout
<<"e"
<1-cnt1;
}}
有n個數字和m種交換方法,每一種方法可以將索引為a的數字與索引為b的數字交換,交換次數沒有限制,問最後能交換成的字典序最小的序列。
比較簡單的並查集,但因為比較字典序部分耗時比較多,雖然給了5秒,不優化仍然會tle,因此需要對並查集進行優化,用vector或優先佇列都可以,這裡貼出我用優先佇列優化的ac**。
#include
using
namespace
std;
const
int maxn=1000010;
int p[maxn],fa[maxn],ans[maxn],num[maxn];
int n,m,a,b,root,cnt;
priority_queue que1[maxn],que2[maxn];
bool visit[maxn];
int find(int x)
return fa[x];
}void usd(int a,int b)
}int main()
for(int i=1;i<=m;i++)
for(int i=1;i<=n;i++)
que1[root].push(p[i]);
que2[root].push(-i);
}for(int i=1;i<=cnt;i++)
}for(int i=1;i<=n;i++)
}
有n個數與m組詢問,從n個數中任取兩個數相乘,問能有幾種組合使得乘積大於等於詢問數,對於每組詢問輸出乙個答案。
拿到題目首先想到可能是字首之類的預處理,因為詢問數很多並且詢問本身並不大,因此可以暴力預處理出當前序列中小於等於當前值的數量有多少,之後對於每一組詢問輸出總數減前乙個即可。
#include
using
namespace
std;
typedef
long
long
int ll;
const
int maxn=3000010;
ll a,n,m,q;
ll cnt[maxn]=,ans[maxn]=;
ll num;
void init()
for(int i=1;i*ifor(int j=i;i*jif(i==j) ans[i*j]+=cnt[i]*(cnt[i]-1);
else ans[i*j]+=2*cnt[i]*cnt[j];}}
for(int i=maxn-2;i>=1;i--)
num=(ll)n*(n-1)-ans[1];
}int main()
return
0;}
前端小白奮鬥之路開始了
一向對操作性的東西感興趣,即使腦子不夠使,但靜下心來努力還是有希望的,那麼,前端小白的奮鬥之路就要開始咯。目前狀況 html css有點基礎,但我覺得遠遠不夠,並且做專案的時候缺乏經驗,不容易想到簡單規範的方法。另外,有接觸過資料庫和php,但是完全不紮實,只是很表面的東西。近期目標 1 html ...
10個方法助你少奮鬥10年
1 努力工作要努力,隨隨便便過日子過四五年也是過,稍微努力的過四五年也是過,努力的過四五年也是過,何不努力好好的幹。如果努力的過好畢業後的四五年,這對我們以後的人生非常有幫助 2 虛心學習多與比自己大的人 長輩 成功人士交流學習,要虛心聽取 認真分析他們的意見和建議,以免自己以後走彎路。3 自由出來...
開啟全新奮鬥的程式設計師之路
我,乙個985學校大三在校生,就讀計算機學院,專業是網路與資訊保安,乙個普普通通的轉專業生,能力一般,單身.由於各種原因,我以高於我們學校4分的成績光榮的進入了我們學校的末尾專業 農業機械化,大一上的時候被轉專業的氛 圍感染,在渾渾噩噩的度過了大一上的半學期後,開始發奮圖強,每天宿舍 食堂 自習室三...