AtCoder Beginner Contest 178 总结
A - Not
簽到題
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm> using namespace std; const int N=100010; int main() {IO;int T=1;//cin>>T;while(T--){int x;cin>>x;cout<<1-x<<endl;}return 0; }B - Product Max
簽到題
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N=100010; int main() {IO;int T=1;//cin>>T;while(T--){ll a,b,c,d;cin>>a>>b>>c>>d;cout<<max(max(a*c,a*d),max(b*c,b*d))<<endl;}return 0; }C - Ubiquity
正難則反,容斥原理
 先只考慮滿足第一個情況的方案數(shù):10n10^n10n
 那么其中肯定有不滿足第二個情況和第三個情況的方案,我們只要減去這種情況即可。
 滿足第一個條件,不滿足第二個條件的方案數(shù)是9n9^n9n
 滿足第一個條件,不滿足第三個條件的方案數(shù)是9n9^n9n
 滿足第一個條件,同時不滿足第二個條件和第三個條件的方案數(shù)是8n8^n8n
 根據(jù)容斥原理,滿足第一個條件但是不滿足第二個條件或者第三個條件的方案數(shù)是9n+9n?8n9^n+9^n-8^n9n+9n?8n
 因此答案是10n?(9n+9n?8n)10^n-(9^n+9^n-8^n)10n?(9n+9n?8n)
D - Redistribution
考試的時候老想著完全背包。。
 f[i]f[i]f[i]表示用3…i3 \dots i3…i這些數(shù)湊成和是iii的方案數(shù)
 轉(zhuǎn)移:考慮最后一個數(shù)用的是誰?
 f[i]=f[i?3]+f[i?4]+?+f[i?i]f[i]=f[i-3]+f[i-4]+\dots+f[i-i]f[i]=f[i?3]+f[i?4]+?+f[i?i]
E - Dist Max
考慮兩個點(x1,y1)(x_1,y_1)(x1?,y1?)和(x2,y2)(x_2,y_2)(x2?,y2?)的曼哈頓距離∣x1?x2∣+∣y1?y2∣|x_1-x_2|+|y_1-y_2|∣x1??x2?∣+∣y1??y2?∣其實還可以進一步簡化成max(∣(x1+y1)?(x2+y2)∣,∣(x1?y1)?(x2?y2)∣)max(|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|)max(∣(x1?+y1?)?(x2?+y2?)∣,∣(x1??y1?)?(x2??y2?)∣)
 由此將問題降維,然后就很容易解了。
無意中看到一個知識,此題轉(zhuǎn)化更專業(yè)的叫法曼哈頓距離與切比雪夫距離的轉(zhuǎn)換
F - Contrast
結(jié)論:將 B 按降序排序后,B 中最多只會有一段 B[l~r]B[l~r]B[l~r] 與 A[l~r]A[l~r]A[l~r] 是相同的,且 A[l~r]A[l~r]A[l~r] 和 B[l~r]B[l~r]B[l~r] 中所有值都等于同一個數(shù)valvalval,仔細想想便可得到此結(jié)論。
 把這些相等的位置記下來,然后與其他的位置交換,此位置序還需滿足ai≠vala_i\ne valai??=val,每找到一個位置就可以交換一次,如果位置不夠則不可能滿足題意。
 還有一個判斷不滿足題意的方法即統(tǒng)計a[]和b[]每個數(shù)出現(xiàn)的次數(shù)cnta[]和cntb[],對于每一個iii滿足cntai+cntbi≤ncnta_i+cntb_i\leq ncntai?+cntbi?≤n才可能構(gòu)造出一組解,否則不可能滿足題意。
 口胡證明:對于a[]中的i需要b[]至少存在有cnta[i]個不等于i的數(shù)與之配對,即cnta[i]<=n-cntb[i],證畢。
ABC現(xiàn)在看來以及沒有想象中那么難,自己現(xiàn)在都可以接受。
 正式上課了,要加油哦~
總結(jié)
以上是生活随笔為你收集整理的AtCoder Beginner Contest 178 总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 买电脑是买组装电脑好还是买品牌的电脑好买
- 下一篇: Educational Codeforc
