摘要: 写在之前的一些话 现在已经是23号了 离南京已经过去了5天了 离上次更新已经过去了1周 不是因为懒 是因为前几天早上发烧到38-39 晚上接近40 其实南京前两天就发现了自己身体出了问题 不过对结果影响不大 就算在清醒状态也很小概率能想到自己连板子题都没认真写过的并且做了近千题不遇的二位前缀和 --分界线-- 今天给 阅读全文
posted @ 2022-12-23 21:54 ycllz 阅读(49) 评论(0) 推荐(0)
摘要: https://codeforces.com/contest/1896/problem/D 首先我们要发现一个性质就是 要是我们能凑出为S的 那一定能凑出S-2的 询问的时候和总的同奇偶就可以随便缩一下 要是不同奇偶我们就得找到最左最右的1来改变奇偶 用set维护1的位置即可 void solve( 阅读全文
posted @ 2023-12-20 02:11 ycllz 阅读(25) 评论(0) 推荐(0)
摘要: 感觉这场的题都挺傻逼的 写一下题解 A 17 71就是两位数的素数 void solve(){ string s;cin>>s; for(auto c:s){ if(c=='1'||c=='7')cout<<c; }cout<<endl; } B 注意到第一位必然是0 最后一位必然是1 那我们就找一 阅读全文
posted @ 2023-12-16 15:22 ycllz 阅读(29) 评论(0) 推荐(0)
摘要: 显然O(n)划分之后可以用一个三维dp写 可以用bitset优化 也可以 化简为二维 dp i j 表示第i位 能搞到 a的j位 并且 搞到b位的 最大值 int dp[410][410]; bool check(string &s,string &pre,string &suf) { memset 阅读全文
posted @ 2023-12-14 23:55 ycllz 阅读(14) 评论(0) 推荐(0)
摘要: 考虑二元环 要是二元环相同 那么显然怎么构造都可以了 否则 我们考虑 没有二元环相同 要是m是奇数 我们随便跑跑就行 要是m是偶数 情况呢 我们需要构造一种情况 我们肯定用的点数越少越好 我们考虑三个点 要是两个二元环都是 a 出 或者 b 出的 就可以构造出来了 void solve(){ int 阅读全文
posted @ 2023-12-14 18:26 ycllz 阅读(5) 评论(0) 推荐(0)
摘要: 以前写挂了 今天又拿出来写 手玩一下样例发现 我们从高位贪是肯定的 尽可能让该位置和原串一样 然后我们可以枚举该位改成什么字母 然后计算后面的放是否合法 写的很屎 其实就是复制粘贴了一坨 我们先找到 最远的位置可以修改 再修改为最小的即可 void solve(){ int n,k;cin>>n>> 阅读全文
posted @ 2023-12-14 15:18 ycllz 阅读(6) 评论(0) 推荐(0)
摘要: 想了好久的策略发现都wa了 后面仔细思考了一下 我们肯定只选一种bi 那我们不妨枚举bi 然后比bi大的ai我们都选 我的写法有点问题 要加特判 其实是可以二分找到大于bi的点 更好写一些 明天吧这个题 和 上一个拓扑的题写一下简单写法 void solve(){ int n,m;cin>>m>>n 阅读全文
posted @ 2023-12-14 02:28 ycllz 阅读(3) 评论(0) 推荐(0)
摘要: 我们发现好像和拓扑序有关 我们做拓扑序的时候 要是一个点没有 有向边出去 或者进来 我们好像可以随意钦定该点其他无向边 要是有 有向边入 和 有向边出 那么肯定寄 有一种就直接钦定为该点其他有向边的方向就可以了 其实 具体实现的时候我们可以直接有向边拓扑序 之后 无向边钦定 由拓扑序小的指向拓扑序大 阅读全文
posted @ 2023-12-13 23:27 ycllz 阅读(9) 评论(0) 推荐(0)
摘要: 看到k等于20 我们大胆猜测这个选择的个数不会超过20条 枚举我们要选i条 然后计算权值的话 要是大于等于i的k都是算1的 否则就算 k/i 我们按照这个给每一个计算一下权值 选最大的i条即可 void solve(){ int n;cin>>n; vector<int>t[21],cz[21],v 阅读全文
posted @ 2023-12-13 16:43 ycllz 阅读(13) 评论(0) 推荐(0)
摘要: 最开始以为有环 发现没环之后 发现是有负数的 把第三个样例画出来 发现疑似是拓扑序之后要是该点为正肯定 放前面 否则放后面 但是发现好像 有些点为负数的可以通过+变回正的也要放前面 那我们贪心跑一遍即可 void solve(){ int n;cin>>n; vector<int>a(n+1),b( 阅读全文
posted @ 2023-12-12 23:04 ycllz 阅读(20) 评论(0) 推荐(0)
摘要: 我们知道要是任意位置交换就是环长-1 那我们肯定要让环尽量少即可 那我们的环最多就是 出现最多的那个数字的 次数 构造策略 就是把其他不同的数字 都提出来 然后往后挪一下就可以构造出环了 void solve(){ int n;cin>>n; vector<int>a(n+1),v[n+1]; fo 阅读全文
posted @ 2023-12-09 17:16 ycllz 阅读(4) 评论(0) 推荐(0)