题目链接:1039C - Network Safety/1040E - Network Safety 题目大意:不得不说这场比赛的题面真的是又臭又长...... 有n个点,m条边,每个点有对应的权值c[i],权值的范围是\([0,2^{k}-1]\).称一条边为安全的,当且仅当边两端的点权不同,题目保证初始状态下的所有边都是安全的.现在问你有多少个pair<set<int> A,int x>(找不到更好的语言来描述了),使得当所有A中的点的权值都变为c[i] xor x时,仍然保证…
题目链接 \(Description\) 有一张\(n\)个点\(m\)条边的无向图,每个点有点权.图是安全的当且仅当所有边的两个端点权值不同.保证初始时图是安全的. 现在有权值为\(x\)的病毒,若它感染了某个点\(a\),则该点点权变为\(a\oplus x\). 求有多少数对\((S,x)\),满足病毒的权值为\(x\),且感染了\(S\)集合中的所有点后,满足图仍是安全的. \(Solution\) 设一条边两个端点的权值为\(a,b\),病毒权值为\(x\).因为\(a\neq b,a…
https://codeforces.com/contest/1040/problem/D 用法 mt19937 g(种子); //种子:time(0) mt19937_64 g(); //long long ll x=g(); //调用 代码 #include<bits/stdc++.h> #define ll long long #define P 23 using namespace std; ll n,l,r,k; char s[5]; ll mu=1; mt19937_64 g(ti…
D:类似于noip2018d1t3,子树内的链应该贪心的尽量合并而不是拆开.则设f[i]为i子树内满足选的链尽量多的情况下根所在的链的最长长度即可.于是可以线性对某个k求得答案. 注意到长度为k的链不多于n/k个.类似于整除分块可以得到答案不同的k只有O(√n)种.于是我们每做一次dp,可以二分一下该答案的k的上界,就能做到O(n√nlogn)了.卡不来常. 本来一直在考虑的是所有答案总和不超过nlogn,想了一年也不太会,结果好像确实可以用这个性质做到O(nlog2n)?先不管了. #incl…
T2还是模拟 枚举一下第一个放哪里 然后贪心的反转即可 虽然我也不会证,但是这题肯定有解qwq #include <cstdio> #include <algorithm> #include <cstring> using namespace std; ],midpath[],midans; int main(){ scanf("%d %d",&n,&k); ;i<=k+;i++){ int l=i,r=k+i; midans=…
暴力模拟即可 就是情况略多 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; ],pos,ans=; int main(){ scanf("%d %d %d",&n,&a,&b); ;i<=n;i++) scanf("%d",&num[i]); ==){ pos=n/+; ) ans+=…
#include<bits/stdc++.h>using namespace std;int order[300007];long long t[300007],ans[300007];int main(){    int n;    long long m; scanf("%d%lld",&n,&m); for(int i=1;i<=n;i++)  scanf("%lld",&t[i]); t[n+1]=2e18; for…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 翻转一次最多影响2k+1个地方. 如果n<=k+1 那么放在1的位置就ok.因为能覆盖1..k+1 如果n<=2k+1 那么就放在1+k的位置就ok.能覆盖1..2k+1 其他情况 考虑temp=n%(2k+1)的值. 如果temp==0 那么美滋滋.直接操作n/(2k+1)次就ok, 分别在1+k,1+k+2k+1,1+k+2k+1+2k+1.... 刚好占据n个位置. 如果k+1<=temp<=2k 那么我们可…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] i从1..n/2循环一波. 保证a[i]和a[n-i+1]就好. 如果都是2的话填上min(a,b)*2就好 其他情况跟随非2的. [代码] #include <bits/stdc++.h> #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--…
题目链接:1063B - Labyrinth/1064D - Labyrinth 题目大意:给定一个\(n\times m\)的图,有若干个点不能走,上下走无限制,向左和向右走的次数分别被限制为\(x\)和\(y\),给出起点并询问有多少个点能够到达. 题解:此题坑多...本弱写裸BFS,WA了一百次_(:з」∠)_ 考虑从点\(A\)到点\(B\)需要向左或者向右走的次数,可以发现若设向左走的次数为\(l\),向右走的次数为\(r\),则\(r-l\)是个定值,因此转换成最短路问题用最短路跑一…