bzoj3613: [Heoi2014]南園滿地堆輕絮(二分+貪心)
題目傳送門
。
解法:
二分答案。
因為後面的元素要大於等於前面的元素。
那麼我們使得前面的元素在滿足答案的情況下儘量的小就行。
這樣後面的元素選擇的餘地就更大。
貪心一下咯。
程式碼實現:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
ll a[5100000],A,B,C,D,mod;
int n;
ll pow_mod(ll a,int b) {
ll ans=1ll;a%=mod;
while(b!=0) {
if(b%2==1)ans=(ans*a)%mod;
a=(a*a)%mod;b/=2;
}return ans;
}
ll F(ll x) {
return ((A*pow_mod(x,3))%mod+(B*pow_mod(x,2))%mod+C*x%mod+D)%mod;
}
int main() {
scanf("%d%lld%lld%lld%lld%lld%lldlld",&n,&A,&B,&C,&D,&a[1],&mod);
a[0]=0ll;for(int i=2;i<=n;i++)a[i]=(F(a[i-1])+F(a[i-2]))%mod;
ll l=0,r=mod-1,mid,ans;
while(l<=r) {
mid=(l+r)/2ll;
ll sum=max(a[1]-mid,0ll);
bool bk=true;
for(int i=2;i<=n;i++) {
if(a[i]>=sum)sum=max(sum,a[i]-mid);
else {
if(a[i]+mid<sum){bk=false;break;}
sum=min(sum,a[i]+mid);
}
}if(bk==true) {r=mid-1;ans=mid;}
else l=mid+1;
}printf("%lld\n",ans);
return 0;
}
相關文章
- bzoj2151: 種樹(貪心+堆)
- leetcode1552題解【二分+貪心】LeetCode
- 【ybtoj】【貪心】【堆】【例題1】奶牛曬衣服
- 【貪心】【二分】[NOIP2015]跳石頭
- E Revenge on My Boss CCPC 2023 Harbin Site 貪心,二分
- 二分/貪心(ICPC小米預賽第一場 A 2020)
- 貪心
- C240817C. 團隊協作:二分答案+貪心
- bzoj1150: [CTSC2007]資料備份Backup(堆+貪心)
- 2020ICPC小米邀請賽2 A-2020(貪心+二分)
- 反悔貪心
- Supermarket(貪心)
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- ZOJ——Copying Books 最大值最小化問題 (貪心 + 二分)
- 貪心例題
- 貪心+搜尋
- P3045 [USACO12FEB] Cow Coupons G (用堆實現反悔貪心)
- 反悔貪心雜題
- 貪心演算法演算法
- 貪心、構造合集
- HDU 5821 Ball(貪心)
- 貪心模式記錄模式
- leetcode410分割陣列的最大值(二分+貪心,困難)LeetCode陣列
- 2020ICPC·小米 網路選拔賽第二場 Subsequence Pair(貪心二分)AI
- 演算法基礎 - 列舉/遞迴/動歸/深廣搜/二分/貪心演算法遞迴
- 「貪心」做題記錄
- [反悔貪心] Add One 2
- 貪心 做題筆記筆記
- 7.5 - 貪心篇完結
- 貪心演算法Dijkstra演算法
- 24/03/20 貪心(一)
- HDU 6047 Maximum Sequence (貪心)
- HDU 5813 Elegant Construction (貪心)Struct
- 漲薪【貪心】【快速冪】
- Leetcode 貪心:差值調整LeetCode
- Least Cost Bracket Sequence(貪心)ASTRacket
- 刪數問題(貪心)
- 牛客 tokitsukaze and Soldier 貪心