小 bo 有 n 個正整數 a1..an,以及乙個權值序列 w1…wn,現在他定義
現在他想知道
你只需要輸出答案對 109+7 取模後的值
第一行乙個正整數 n
第二行 n 個正整數 a1..an
第三行 n 個正整數 w1..wn
輸出答案對 109+7 取模後的值
示例1
複製
3
1 1 1
1 1 1
複製
10
1≤ n≤ 3x 105
1≤ ai≤ 107
1≤ wi≤ 107
注意:取模的時候不要ans+=balabala%mod,這樣只是給等號後的數取模了,沒有給ans加後的值取模,會爆的嚶嚶嚶qwq
**如下:
#include#include#include#include#include#include#include#include#define ll long long
using namespace std;
const int n=300005,mod=1e9+7;
ll suma[n],sumb1[n],sumb[n],w[n],a[n];
int main()
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
ll tmp,ans;
int k;
if(n==1)ans=w[1]*a[1];
else ans=(suma[n]*w[1]%mod+suma[n]*w[n]%mod)%mod;
for(int r=2;r小 a 有一棵長的很奇怪的樹,他由 n 條鏈和 1 個點作為根構成,第 i 條鏈有 ai 個點,每一條鏈的一端都與根結點相連。
現在小 a 想知道,這棵長得奇怪的樹有多少非空的連通子樹,你只需要輸出答案對 998244353 取模的值即可
第一行乙個正整數 n
第二行 n 個正整數 a1…an
輸出答案對 998244353 取模後的值
示例1
複製
2
1 1
複製
6
1≤ n≤ 105
1≤ ai≤ 107
思路:這是個思維題啊,還挺不錯的
當沒有根的時候:bi=(a[i]+1)*a[i]/2 把b1到bn加起來
當有根的時候(a[1]+1)*(a[2]+1)*…(a[n]+1)
不考慮根的情況好理解,當有根節點的時候,每一條鏈從根開始,一共有1,2,3…1+a[i]種情況,把每個鏈的情況乘起來就好啦~
**如下:
#include#include#include#include#include#include#include#include#define ll long long
using namespace std;
const int n=300005,mod=998244353;
ll mod_pow(ll a,ll b)
return res;
}int main()
printf("%lld\n",(res1+res2)%mod);
}
給定一棵 n 個點的樹,其中 1 號結點是根,每個結點要麼是黑色要麼是白色
現在小 bo 和小 biao 要進行博弈,他們兩輪流操作,每次選擇乙個黑色的結點將它變白,之後可以選擇任意多個(可以不選)該點的祖先(不包含自己),然後將這些點的顏色翻轉,不能進行操作的人輸
由於小 bo 猜拳經常輸給小 biao,他想在這個遊戲上扳回一城,現在他想問你給定了乙個初始局面,是先手必勝還是後手必勝
第一行乙個正整數 n
第二行 n 個整數 w1..wn,wi∈ ,wi=1 表示第 i 個結點一開始是黑點,否則是白點
接下來 n-1 行,每行兩個正整數 u,v 表示一條樹邊 (u,v)
如果先手必勝,輸出first ,否則輸出second
示例1
複製
2
1 01 2
複製
first
1≤ n≤ 1000
思路:
(1)若每層的黑點數都為偶數那麼先手必敗,因為先手改一層的黑點為白點,然後操作完,後手改相同層的黑點為白點,然後做和先手相同的操作,那麼祖先相當於沒變,每層都是偶數那麼一定能保證先手到無路可走的狀態。
(2)反之,先手勝,先手先把深度最大的奇數層的變為偶數,然後對其祖先操作,使得每層的黑點數都是偶數,接著後手操作,先手做(1)操作,後手敗。
#include#include#include#include#include#include#include#include#define ll long long
using namespace std;
const int n=1005,mod=998244353;
int a[n];
struct pro;
pro edge[2*n];
int cnt=0,head[n],depth[n];
void addedge(int from,int to)
void dfs(int pre,int now,int dep)
}int main()
int s,t;
for(int i=1;i判斷的時候
if(depth[i]%2==1)
加個break就只能過70%不知道為什麼
牛客國慶集訓派對Day4
a 把b n include include include includeusing namespace std int main d 由於是個完全圖,選擇乙個權值最小的點,其他所有的點向它連線就行了。注意點為1的時候輸出0 include include include includeusing...
2020牛客國慶集訓派對day4 補題
2020牛客國慶集訓派對day4 b 題意 題意 求最長等差序列的長度。dp 攤派了我講不明白,參考下這兩篇部落格吧 捂臉 傳送門1 傳送門2 include include include include include include include using namespace std ty...
牛客國慶集訓派對Day1
a 看樣例過題 include include include include include using namespace std typedef long long ll typedef pairpii const int maxn 1e5 10 vectorg maxn int a 10 i...