a、b有一定難度;
注意以後在左移右移的時候是否要轉換型別,轉換成long long
特別是b題有很好的思路,大數無法計算那就轉化成log進行計算,特別是對精度要求不高的時候。
題解:a:思維題
求&之和。統計每個數有多少個0,然後這些0上填1和0都會&後變為0,在n有1的地方如果i為1那麼答案就是1;
注意1ll << ans,因為答案可能會爆int,以後注意。
b:思維題
取log,注意精度,1.99999 + 2.00002 如果直接取int的話答案是不對的,維護字首和。
c:找規律
設三種史萊姆有a、b、c三種,分別有m1、m2、m3只。
首先m1、m3有d只轉化為m2。
然後剩下的m1和部分m2轉化為m3。
如果此時m2和m3的個數相等,則可以轉化成功。
容易推出m3 - m2 = 3 (2d - m1);
可知必須存在兩種史萊姆的數量之差是3的整數倍,才可以合併。
d:簡單的dp
正向走和反向走是一樣的。
dp[i][j][k][v]表示從(1,1)到 (i,j) 和(k,v)兩條路取的糖果最大數量。
同時i = k,且j = v的時候只加乙個值。保證糖果不會重複取。
但是這道題剛開始的時候我做錯了。
我把這個狀態表示為從(1,1)到(i,j)和從(n,n)到(k,v)了,這樣是不對的,因為在(n,n)到(k,v)這條路上取到的糖果可能會再被取一遍(此時無法判重)
e:簽到題
f:打表找規律
通過打表發現,%5每20個數為乙個週期,%7每16個數為乙個週期。
還是注意要開long long
g:簽到題
**:
#include#include#include
#include
using
namespace
std;
long
long
t,n,t,ans;
void
solve()
if(n == 0) printf("
0\n"
);
else printf("
%lld\n
",n - (1ll <}
return;}
intmain()
b:
#include#include#include
#include
#include
using
namespace
std;
const
int maxn = 1e6 + 11
;double
sum[maxn];
intt,l,r;
void
solve()
return;}
intmain()
c:
#include#include#include
#include
using
namespace
std;
intt;
int a[5
];void
solve()
return;}
intmain()
d:
#include#include#include
#include
using
namespace
std;
const
int maxn = 13
;int
dp[maxn][maxn][maxn][maxn];
intma[maxn][maxn];
intn,t;
int max(int x,int y,int a,int
b)void
solve()}}
}cout
<< dp[n][n][n][n]
intmain()
2019CCPC江蘇南京女生賽 題解
比賽 交題需要找到對應題號交題 啊 比賽過去兩個月了 都快不記得了 還好保留了做題的痕跡emm 開坑了現場賽的時候沒做幾個題 現在補一下 大白做的 就是模擬一下就行了 注意輸出是保留兩位小數 剛寫的新鮮熱乎的 如下 include include include include includeusi...
5 27 女生賽總結
好的吧,真的是有史以來第一次出去比賽 好像大家都也還是給予厚望的,女生賽。前面過了兩個其實還好吧 最後卡,卡到兩三個題後來還是出不來了。我們刻意避開了 打鐵關 但是還是打鐵了qaq,zj說dp的方程明明都寫對了啊。他們t了那是因為暴力,這種錯法我還是第一次見啊。去之前自己還帶了自己列印的1 3部落格...
2019 CCPC 女生賽 賽後總結
出發 因為我們在杭州,離南京比較近,高鐵乙個半小時就能到,所以我們就6.1下午出發去南京了。在路上我的兩個隊友鬧了點不愉快,然後一直持續到晚上還沒好。我覺得氣氛令人窒息,但是又沒有辦法,因為我跟學姐a說話學姐a也反應冷淡,而學姐b心大的要命,完全可以忽略這種奇怪氛圍,我操心的要命。熱身賽 吐槽一下,...