牛客小白月賽24 題解
最後還剩一道計算幾何,其實可以ak,但沒必要///
b:簽到
#include using namespace std;
const int n=2e5+10;
int a[n];
int main()
printf("%d\n",ans);
}return 0;
}
c:還行
#includeusing namespace std;
typedef long long ll;
const int n=505;
char s[n][n];
bool vis[n][n];
int n,m;
bool ok[n][n];
void dfs(int x,int y)
int main()
}for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(vis[i][j]&&ok[i][j])s[i][j]='*';
for(int i=1;i<=n;i++)printf("%s\n",s[i]+1);
return 0;
}
d:還可 qaq
#includeusing namespace std;
typedef long long ll;
const int n=505;
char s[n][n];
bool vis[n][n];
int n,m;
bool ok[n][n];
void dfs(int x,int y)
int main()
}for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(vis[i][j]&&ok[i][j])s[i][j]='*';
for(int i=1;i<=n;i++)printf("%s\n",s[i]+1);
return 0;
}
e:還行吧
#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int mod=1e5+3;
const int n=1e5+7;
const int m=5e5+10;
int n,m,sta,ed,p[n],head[n],cnt=1;
ll dis[n];
bool vis[n];
bool ok[m<<1];
struct nodeedge[m<<1];
struct cmp
};priority_queue,cmp> t;
inline void add(int x,int y,int z)
void dijkstra()}}
}void dfs(int u)
}}bool op[n];
int ans=0;
void dfs1(int u,int f)
for(int i=head[u];i!=-1;i=edge[i].next)
}int main()
dijkstra();
dfs(n);
dfs1(1,0);
if(ans==n)puts("yes");
else puts("no");
return 0;
}
f:簽到
#include using namespace std;
typedef long long ll;
const int n=5e5+10;
string s[5]=;
int main()
if((p2+1)%4==p1)puts("tiangou txdy");
else puts("tiangou yiwusuoyou");
return 0;
}
g:為了拼手速,所以完全亂寫
#include using namespace std;
typedef long long ll;
const int n=5e5+10;
int a[n];
int main()
int getid(int x)
void solve()
for (int i = 0; i < b.size(); i++)
}printf("yes\n");
}int main()
sort(id + 1, id + 1 + n);
n = unique(id + 1, id + 1 + n) - id - 1;
solve();
}return 0;
}
i:好像是樹剖
#include#include#include#includeusing namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
typedef long long ll;
const int n=1e6+10;
int first[n],tot,cnt,n,w[n],wt[n];
int d[n],fa[n],siz[n],son[n],top[n],id[n],rk[n],en[n];
ll sum[n<<2];
struct node
e[n<<1];
void adde(int u,int v)
void init()
void dfs1(int u,int pre,int depth)
}void dfs2(int u,int t)
en[u]=cnt;
}void pushup(int rt)
void build(int l,int r,int rt)
int mid=(l+r)>>1;
build(lson);
build(rson);
pushup(rt);
}void update(int k,int c,int l,int r,int rt)
int mid=(l+r)>>1;
if(k<=mid) update(k,c,lson);
else update(k,c,rson);
pushup(rt);
}int query(int l,int r,int l,int r,int rt)
int main()
ans=(ans+mod)%mod;
printf("%lld\n",ans);
return 0;
}
牛客小白月賽22題解
a 操作序列 單點增加,區間求和,下標最小的非零數變成零,單點查詢。說完了不就線段樹嘛。由於範圍比較大,先存下來,離散化,再進行樹上的操作。注意這裡的左右區間離散化值不一樣的,左邊離散化要找到大於等於左邊界的值,右邊離散化要找到小於等於右邊界的值。b 樹上子鏈 類似於 dp 求樹直徑 c 交換遊戲 ...
牛客小白月賽22 題解
題解鏈結 題目知識點 題目難度 a 操作序列 stl,map,set,模擬 普及 提高 b 樹上子鏈 樹形dp,樹的直徑 普及 提高 c 交換遊戲 記憶化搜尋,狀態壓縮 普及 提高 d 收集紙片 全排列,dfs,狀壓dp,tsp問題 普及 提高 e 方塊塗色 簡單數論,容斥原理 入門f 累乘數字 找...
牛客的小白月賽24補題
沒注意負數取模 呀呀呀呀,打腦殼 保證取模後的結果為正數 x mod mod mod 思路1.挨個嘗試肯定超時 2.就是把平方項展開 a2 b2 2ab 每個平方項的出現次數n 1次 每個2ab形式的和 最後一定注意取余為正數 戳我試試看 include include include includ...