b - 線段的包含關係題目大意:給定乙個序列a1,a2,…an,乙個編號為1到n的一維判斷,要求找到兩個不同的索引i和j,使ai位於aj內。[l1,r1]位於[l2,r2]內,前提是 l1 ≥ l2, r1 ≤ r2。要求列印索引i和j。如果有多個答案,列印其中任何乙個即可。如果沒有答案,列印-1 -1。
解題思路:
直接開乙個結構體陣列,裡面儲存區間的左邊界和右邊界以及區間的序列號。然後對區間進行排序(比賽的時候就是因為排序方法不正確。。題沒做出來)即:左邊界小的在前面,若左邊界相等則右邊界大的在前面。然後從頭遍歷,因為左邊界小的在前面,所以在比較時不用管左邊界的事了,因為已經有序了,然後只需要比較當前區間的右邊界和下乙個區間的,右邊界就行了。如果當前區間的右邊界大於下乙個區間的右邊界,則下乙個區間在當前區間內。然後輸出對應的序列號即可。(感覺最重要的還是區間的排序還是太菜了 )
正式題解:
#include
#include
using
namespace std;
const
int maxn=
1e6;
typedef
long
long ll;
int n;
//區間的數量
int i,j,k;
//控制迴圈
struct node
s[maxn]
;int
cmp(node a,node b)
intmain()
sort
(s+1
,s+1
+n,cmp)
;for
(i=1
;i+1
<=n;i++)}
cout<
<<
" "<
<
return0;
}
c - 地下城還有蘿拉題目大意:給定乙個迷宮的行數和列數以及蘿拉行走過的次數,讓求出蘿拉當前的位置。(蘿拉先從左上角出發一直行走到左下角)然後一直向右走到邊界處,再向上走一格再向左走到第二列再向上走一格再向右走到邊界再向上走一格…如此蛇形走位,到達(1,2)處時停止行動。
解題思路:
在第一列中,從左邊的示意圖可以看出k#include
using
namespace std;
typedef
long
long ll;
ll n,m,k;
ll r,l;
//行和列
intmain()
return0;
}(get到乙個判斷奇偶性的新方法:n&1;當結果為1時說明n是奇數,否則是偶數)
涼心的比賽 一 補題
題目鏈結 題意 有n個物品,能進行a次操作一和b次操作二,每個物品有乙個hp和damage,操作一為把某個物品的hp變為原來的兩倍,操作二為把某個物品的hp賦值給它的damage,問這n個物品的damage的總和最大是多少。思路 證明出來a操作應該都使用給同乙個物品最優,然後按b操作的最優方案排序,...
新生賽002(涼心的比賽)補題
這次又寫了簽到題 codeforces 976a 題幹傳送門 題意 其實只需要得出0和1的數目 然後輸出乙個1和所有的0即可 include include include include using namespace std int n string s int main str maxn bo...
涼心的比賽(一)
線段包含關係 這個題有點遺憾,因為語言設定問題一直沒有過,思路 將各個線段如果右端點不相等就按照右端點小的優先排序,如果右端點相等就按照左端點大的排序,這樣就保證了排序出來的結果上乙個的範圍總比下乙個的大,所以在最後只需要比較上乙個與下乙個是否符合條件即可。include include inclu...