真是無語,一開始取[1,
n/2]
,[n/
2+1,
n]
[1,n/2],[n/2+1,n]
[1,n/2
],[n
/2+1
,n]一直tle過不了,就很納悶
後來取了[1,
n/2+
2],[
n/2+
3,n]
[1,n/2+2],[n/2+3,n]
[1,n/2
+2],
[n/2
+3,n
]就過了,很玄學。
雙向搜尋降低指數複雜度,得滿足始態,終態搜尋到一半會發生互動的條件
**:
#pragma gcc optimize(1)
#pragma gcc optimize(2)
#pragma gcc optimize(3,"ofast","inline")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define ull unsigned long long
#define pb push_back
#define rep(x,a,b) for (int x=a;x<=b;x++)
#define repp(x,a,b) for (int x=a;x#define w(x) printf("%d\n",x)
#define ww(x) printf("%lld\n",x)
#define pi 3.14159265358979323846
#define mem(a,x) memset(a,x,sizeof a)
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
using namespace std;
const
int maxn=
1e7+7;
const
int inf=
1e9;
const ll inff=
1e18
;int a[maxn]
,n,m=
0,w;
ll ans=
0,b[maxn]
;bool cmp
(int a,
int b)
void
dfs1
(int pos,ll now)
dfs1
(pos+
1,now+a[pos]);
dfs1
(pos+
1,now);}
void
dfs2
(int pos,ll now)
dfs2
(pos+
1,now+a[pos]);
dfs2
(pos+
1,now);}
intmain()
送禮物 題解
這道題目是到毒瘤題。首先我們至少去l個,所以我們可以把小於l的用單調佇列直接求出。對取l r個。顯而易見的是左右兩端必分別是這個區間的最小值和最大值。我們可以用01分數規劃。不放令結果最後為ans,則有 a j ans j a i ans i ans k 所以我們就可以愉快地分數規劃啦。includ...
swift送禮物動畫
最近做了乙個用swift寫的送禮動畫,這個動畫本來是在專案中用到的,然後專案改了需求用不上了就想到用swift封裝一下以後如果用得到可以借鑑下。想看下效果圖 思路 1.首先建立乙個動畫的資料model。struct animationmodel iflet giftname dict giftnam...
送禮物 雙向dfs
思路 dfs 先把a陣列排序,由大變小 dfs出前n 2 2 可以湊出的數,放到陣列s中 把s陣列去重排序,行成乙個單調遞增序列 再dfs剩下的數 可以組成的數,每組成乙個,二分找s陣列匹配的最大值 include includeusing namespace std typedef long lo...