[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] Swap操作显然只能对(i-1,i)执行才有用. 不然直接将i翻转以及j翻转 显然比直接交换更优. 那么现在我们就相当于有两种操作. 1.将i翻转 2.将i与i-1交换 可以写个DP. 设dp[i]表示1..i都已经满足s1[i]==s2[i]的最小花费 如果s1[i]==s2[i] dp[i] = dp[i-1] 否则dp[i]=dp[i-1]+1 如果s1[i]!=s1[i-1]并且swap(s1[i],s1[i-1])之后…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 将数组排序一下. 考虑中位数a[mid] 如果a[mid]==s直接输出0 如果a[mid]<s,那么我们把a[mid]改成s,然后把mid后面(后面都是比原来的a[mid]大的数字)小于s的部分都改成s. 这样显然是最优的.(肯定不会改1..mid-1的,因为它们比a[mid]更小.把它换成s需要更多花费. 如果a[mid]>s,那么我们把a[mid]还是改成s,然后把1..mid-1这里面比s大的都改成s.这样就能满足要求…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 多重背包的二进制优化. 就是将数量x分成接近log2x份 然后这log2x份能组合成1..x内的所有数字. 从而将多重背包转化成01背包 1,2,4,8....贪心地选,然后不够的部分x-(1+2+4...)再作为一份就好 [代码] #include <bits/stdc++.h> #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #d…
C - Equalize #include<bits/stdc++.h> using namespace std; using namespace std; string a,b; int main(){ int n; cin>>n; cin>>a>>b; ,sum=; ;j<n;j++){ if(a[j]!=b[j]) ans++; } ;j<n-;j++){ if(a[j]==b[j]) continue; ]==]=='){ sum++;…
还是dfs? 好像自己写的有锅 过不去 看了题解修改了才过qwq #include <cstdio> #include <algorithm> #include <cstring> #include <stack> #include <set> using namespace std; ],v[],n,m,k,ans; ],vis[]; ]; stack<int> S; void dfs(int u){ if(sons[u].size…
随便模拟下就过了qwq 然后忘了特判WA了QwQ #include <cstdio> #include <algorithm> #include <cstring> #include <set> #include <queue> using namespace std; ],v[],fir[],nxt[],cnt=,dep[],squ[]; ]; void addedge(int ui,int vi){ cnt++; u[cnt]=ui; v[c…
是一道水题 虽然看起来像是DP,但其实是贪心 扫一遍就A了 QwQ #include <cstdio> #include <algorithm> #include <cstring> #include <set> #include <map> using namespace std; ],b[],f[]; ],bx[]; int main(){ scanf("%d",&n); scanf(); scanf(); ;i&…
题目要求很简单,做法很粗暴 直接扫一遍即可 注意结果会爆int #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; ,n,s,a[]; int main(){ scanf("%I64d %I64d",&n,&s); ;i<=n;i++) scanf("%I64d&quo…
就是找一下规律 但是奈何昨天晚上脑子抽 推错了一项QwQ 然后重新一想 A掉了QwQ #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; int main(){ int n; scanf("%d",&n); ,ans=,now=; while(i<n){ i+=now*; now*=;…
D. Valid BFS? time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The BFS algorithm is defined as follows. Consider an undirected graph with vertices numbered from 11 to nn. Initialize qq as a…