一如既往的菜。。。。。。
關鍵是轉換的方法
#include
using
namespace std;
typedef
long
long ll;
struct sh
;bool
operator
<
(const sh &a,
const sh &b)
priority_queue
>q;
int n;
ll x,y,z;
//x是原數,z暫存原數,y是轉換後的數
queue<
int>s;
intmain()
if(s.
front()
==0) s.
pop();
while
(!s.
empty()
) q.
push()
;}while
(!q.
empty()
)}return0;
}
這個沒什麼難度,利用了佇列的知識
#include
using
namespace std;
const
int n=55;
queue<
int>q;
int t,n,a[n]
;int
main()
int t=0;
while
(q.size()
>1)
if(t>0)
}}printf
("%d\n"
,q.front()
);}return0;
}
注意是閉區間
還有long long
#include
using
namespace std;
typedef
long
long ll;
const ll n=
1e6+1;
ll prime[n]
;bool b[n]
;ll l,r,t,cnt=
0,maxn=n;
void
iint()
}}intmain()
}for
(ll i=l;i<=r;i++)}
} cout
}
合併隕石那題的高階版,陣列開大,而且要用long long,不要忘了佇列裡也得改,當時就是這裡沒改,沒看到,瘋狂wa
#include
using
namespace std;
typedef
long
long ll;
priority_queue
,greater
>x;
ll y,n,s1,s2;
intmain()
while(1
)}return0;
}
資料少,暴力即可解決
#include
using
namespace std;
typedef
long
long ll;
const
int n=
1e7+1;
int prime[n]
;bool b[n]
;int t;
int n,cnt=
0,maxn=n;
queue<
int>q;
void
iint()
}}intmain()
while
(q.size()
>1)
//迴圈報數}}
cout
pop();
}return0;
}
這裡t加強到了30000,所以上一種做法肯定會tle,因此可以先打表,因為1e7以內只有11個素數結果;不難理解,某乙個範圍內的數,進行了題目中的迴圈後,出來的結果之一樣的
輸入上限1e7可以得到乙個答案x,然後我們輸入x-1得到答案y,重複11次就可以找到所有答案組
#include
using
namespace std;
int a[12]
=;intmain()
}
自己的想法是把所有距離都找出來,但是不對,因為沒有必要,題解用的是貪心的思想
由於 兩根靠近的釘子之間的間隔一定是相對小的,所以先把靠近的釘子之間的間隔扔進優先佇列,這樣優先佇列的隊首一定是最短的間隔。
間隔採用結構體儲存,分別儲存左邊的釘子,右邊的釘子和間隔長度。
同時對繩子進行排序,從最短的繩子開始 依次往釘子上掛。
每取出一根最短的繩子,消耗乙個最短的間隔 (pop一次)
同時還要 向優先佇列中插入乙個向右延伸的間隔 即右端點 +1
(注意插入時要檢測邊界,不能越界。)
這樣始終 保持優先佇列中的隊首是未被使用的最小間隔。
當隊列為空或者有繩子掛不上了,即為失敗,輸出 no
否則順利掛完繩子,圓滿結束即為成功,輸出 yes
#include
using
namespace std;
typedef
long
long ll;
struct node
;bool
operator
<
(const node &a,
const node &b)
priority_queue
>q;
//釘子佇列
priority_queue<
int,vector<
int>
,greater<
int>
>qq;
//繩子佇列
int a[
500005];
intmain()
);//先把相鄰的兩個釘子的距離入隊
}for
(int i=
1;i<=m;i++
)int flag=1;
struct node tmp;
for(
int i=
1;i<=m;i++
) tmp=q.
top();
q.pop();
if(qq.
top(
)>=tmp.dis));
}else
qq.pop();
}if(flag==1)
printf
("yes\n");
else
printf
("no\n");
}return0;
}
2023年2月22日 考試 更新中
最後一次考試也是以僅ac一道題結束,大佬們各種全新的 奇特的方法在我心中留下了難以磨滅的印象。總共大約兩周的acm集訓,讓我充分認識到自己的能力和知識還遠遠不夠,現在才是學習的開始,終有一天,我能靠自己的能力解決一道又一道的難題,成為大佬。2020.2.29 唯一自己做出來的一道水題,先開啟這個難以...
2023年2月1日學習記錄
事實上,在那些不需要任何理由就能作出決定的時刻,我們的自由才會愈加明顯。然而,這並沒有值得過多詬病的地方。因為在緊急情況下,沒有理由便是最好的理由。為什麼這樣說呢?顯然,在這種情況下,我們的行為不會表現得過於膚淺和愚蠢,也不會表示出那些與自身無關且易於解釋的觀念。相反,我們的行為與我們的情感相匹配,...
2023年2月8日 OJ習題
這類題的常規思路是結構體排序,但是本題由於並沒有多種元素,因此用不著結構體,僅僅是陣列排序就可以 include using namespace std int n,m,o int f 110 bool cmp int a,int b intmain return0 先打表,然後直接些就好了 inc...