当前位置:网站首页>Arc135 partial solution
Arc135 partial solution
2022-07-03 22:41:00 【Hard working Lao Zhou】
Competition address
https://atcoder.jp/contests/arc135/tasks.
A - Floor, Ceil - Decomposition
https://atcoder.jp/contests/arc135/tasks/arc135_a.
Answer key
mathematical problem .
Give a positive integer X X X, f ( x ) f(x) f(x) Is the maximum product after one pass operation .
hypothesis X − = ⌊ x 2 ⌋ , X + = ⌈ x 2 ⌉ X_-=\lfloor \frac{x}{2} \rfloor,\ X_+=\lceil \frac{x}{2} \rceil X−=⌊2x⌋, X+=⌈2x⌉. We can write
f ( 1 ) = 1 f ( X ) = m a x ( X , f ( X − ) × f ( X + ) ) ∀ x ≥ 2 f(1)=1\\ f(X)=max(X, f(X_-) \times f(X_+))\ \forall x \ge 2 f(1)=1f(X)=max(X,f(X−)×f(X+)) ∀x≥2.
Now let's deduce the mathematical formula
f ( X − ) × f ( X + ) ≥ X − × X + ≥ X − 1 2 × X 2 ≥ X − 1 4 × X f(X_-) \times f(X_+) \ge X_- \times X_+ \ge \frac{X-1}{2} \times \frac{X}{2} \ge \frac{X-1}{4} \times X f(X−)×f(X+)≥X−×X+≥2X−1×2X≥4X−1×X.
such , We know when X ≥ 4 X \ge 4 X≥4 When , X − 1 4 × X ≥ X \frac{X-1}{4} \times X \ge X 4X−1×X≥X.
therefore :
f ( X ) = X ∀ X ≤ 4 f ( X ) = f ( X − ) × f ( X + ) ∀ X ≥ 5 f(X)=X\ \forall X \leq 4\\ f(X)=f(X_-) \times f(X_+)\ \forall X \ge 5 f(X)=X ∀X≤4f(X)=f(X−)×f(X+) ∀X≥5.
such , We can use DFS To achieve .
Let's take a look at the data range , 1 ≤ X ≤ 1 0 18 1 \leq X \leq 10^{18} 1≤X≤1018, The data is very big , Need to use memory search to optimize .
AC Code
#include<bits/stdc++.h>
using namespace std;
using LL=long long;
using PLL=pair<LL,LL>;
const LL MO=998244353;
unordered_map<LL, LL> M;
LL dfs(LL x) {
if (M.count(x)) {
return M[x];
}
M[x]=x;
if (x<=4) {
return M[x];
}
return M[x]=(dfs(x/2)*dfs((x+1)/2))%MO;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
LL x;
cin>>x;
cout<<dfs(x)<<"\n";
return 0;
}
B - Sum of Three Terms
https://atcoder.jp/contests/arc135/tasks/arc135_b.
Answer key
It's math again .
Hypothetical sequence A A A For the sequence that satisfies the condition , such
S i = A i + A i + 1 + A i + 2 ⇒ A i + 2 = S i − A i − A i + 1 S_i = A_i+A_{i+1}+A_{i+2} \Rightarrow A_{i+2}=S_i-A_i-A_{i+1} Si=Ai+Ai+1+Ai+2⇒Ai+2=Si−Ai−Ai+1.
When i = 1 i=1 i=1 When , A 3 = S 1 − A 1 − A 2 A_3=S_1-A_1-A_2 A3=S1−A1−A2, This equation has 3 3 3 An unknown number , So we assume that A 1 = a , A 2 = b A_1=a,\ A_2=b A1=a, A2=b, We can deduce the following
{ A 1 = a A 2 = b A 3 = S 1 − A 1 − A 2 = S 1 − a − b A 4 = S 2 − A 2 − A 3 = S 2 − S 1 + a A 5 = S 3 − A 3 − A 4 = S 3 − S 2 + b A 6 = S 4 − A 4 − A 5 = S 4 − S 3 − a − b A 7 = S 5 − A 4 − A 6 = S 5 − S 4 + a A 8 = S 6 − A 6 − A 7 = S 6 − S 5 + b . . . \begin{cases} A_1=a \\ A_2=b \\ A_3=S_1-A_1-A_2=S_1-a-b \\ A_4=S_2-A_2-A_3=S_2-S_1+a \\ A_5=S_3-A_3-A_4=S_3-S_2+b \\ A_6=S_4-A_4-A_5=S_4-S_3-a-b\\ A_7=S_5-A_4-A_6=S_5-S_4+a \\ A_8=S_6-A_6-A_7=S_6-S5+b\\ ... \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧A1=aA2=bA3=S1−A1−A2=S1−a−bA4=S2−A2−A3=S2−S1+aA5=S3−A3−A4=S3−S2+bA6=S4−A4−A5=S4−S3−a−bA7=S5−A4−A6=S5−S4+aA8=S6−A6−A7=S6−S5+b...
such , We know the law . Next we need to know when there is a solution .
The existence of solutions , We can use the simplest sequence S 1 , S 2 , S 3 S_1, S_2, S_3 S1,S2,S3 Is there a pair ( a , b ) (a,b) (a,b) Satisfy , This will get .
{ S 1 ≤ a S 2 ≤ b a + b ≤ S 3 \begin{cases} S_1 \leq a\\ S_2 \leq b\\ a+b \leq S_3 \end{cases} ⎩⎪⎨⎪⎧S1≤aS2≤ba+b≤S3
therefore ,
When S 1 + S 2 > S 3 S_1+S_2>S_3 S1+S2>S3 When , There is no solution to the problem .
When S 1 + S 2 ≤ S 3 , ( a , b ) = ( S 1 , S 2 ) S_1+S_2 \leq S_3,\ (a,b)=(S_1,S_2) S1+S2≤S3, (a,b)=(S1,S2), Existence solution .
such , This problem becomes a simulation problem .
AC Code
#include<bits/stdc++.h>
using namespace std;
using LL=long long;
using PLL=pair<LL,LL>;
const int N=3e5+10;
LL s[N];
LL a[N];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
LL n;
cin>>n;
for (LL i=1; i<=n; i++) {
cin>>s[i];
}
LL sum=0;
LL c1=0;
for (LL i=1; i<n; i+=3) {
sum+=s[i]-s[i+1];
c1=max(c1, sum);
}
sum=0;
LL c2=0;
for (LL i=2; i<n; i+=3) {
sum+=s[i]-s[i+1];
c2=max(c2, sum);
}
sum=0;
LL c3=0;
for (LL i=3; i<n; i+=3) {
sum+=s[i]-s[i+1];
c3=max(c3, sum);
}
if (c1+c2+c3>s[1]) {
cout<<"No\n";
return 0;
}
a[1]=c1;a[2]=c2;a[3]=s[1]-c1-c2;
for (LL i=2; i<=n; i++) {
a[i+2]=s[i]-a[i]-a[i+1];
}
cout<<"Yes\n";
for (LL i=1; i<=n+2; i++) {
cout<<a[i]<<" ";
}
cout<<"\n";
return 0;
}
边栏推荐
- Redis single thread and multi thread
- [dynamic planning] counting garlic customers: the log of garlic King (the longest increasing public subsequence)
- Blue Bridge Cup -- guess age
- [dynamic programming] Jisuan Ke: Jumping stake (variant of the longest increasing subsequence)
- The 2022 global software R & D technology conference was released, and world-class masters such as Turing prize winners attended
- Summary of basic knowledge of exception handling
- 6.0 kernel driver character driver
- Blue Bridge Cup Guoxin Changtian single chip microcomputer -- led lamp module (V)
- This time, thoroughly understand bidirectional data binding 01
- C3p0 connection MySQL 8.0.11 configuration problem
猜你喜欢

Hcip day 14 notes

Leetcode: a single element in an ordered array

2022 safety officer-b certificate examination summary and safety officer-b certificate simulation test questions

Overview of Yunxi database executor

Bluebridge cup Guoxin Changtian single chip microcomputer -- hardware environment (I)

Exness: the Central Bank of England will raise interest rates again in March, and inflation is coming
![[golang] leetcode intermediate - alphabetic combination of island number and phone number](/img/40/a664ea866ce355c1f5e9305fe91780.jpg)
[golang] leetcode intermediate - alphabetic combination of island number and phone number

Harbor integrated LDAP authentication

Cesium terrain clipping draw polygon clipping

Pointer concept & character pointer & pointer array yyds dry inventory
随机推荐
Mongoose the table associated with the primary key, and automatically bring out the data of another table
Go Technology Daily (2022-02-13) - Summary of experience in database storage selection
[sg function] 2021 Niuke winter vacation training camp 6 h. winter messenger 2
Yyds dry goods inventory Spring Festival "make" your own fireworks
This time, thoroughly understand bidirectional data binding 01
Teach you to easily learn the type of data stored in the database (a must see for getting started with the database)
What indicators should be paid attention to in current limit monitoring?
6.0 kernel driver character driver
DR-AP40X9-A-Qualcomm-IPQ-4019-IPQ-4029-5G-4G-LTE-aluminum-body-dual-band-wifi-router-2.4GHZ-5GHz-QSD
540. Single element in ordered array
[Android reverse] application data directory (files data directory | lib application built-in so dynamic library directory | databases SQLite3 database directory | cache directory)
Team collaborative combat penetration tool CS artifact cobalt strike
Bluebridge cup Guoxin Changtian single chip microcomputer -- hardware environment (I)
The reason why the computer runs slowly and how to solve it
[SRS] build a specified version of SRS
Es6~es12 knowledge sorting and summary
Firefox set up proxy server
C deep anatomy - the concept of keywords and variables # dry inventory #
Text replacement demo
油猴插件