
构造
yzyyylx
这个作者很懒,什么都没留下…
展开
-
codeforces 976D Degree Set
题面题意给出一串单调递增的数a,要求你构造一张有a[n]+1个点的无向图,其度数集合恰好为给出的这串数.做法构造方法是这样的: 对于每个点只有两种操作: 1.这个点向后面所有点连边(可以保证不会影响前面的点的度数) 2.这个点不向后面的点连边 首先记录两个指针l,r记录当前小度数和大度数分别考虑到哪里. 对于这个点分下面三种情况进行讨论: 1.进行操作1后,这个点的度数为a[l],那么进原创 2018-05-01 16:15:48 · 755 阅读 · 1 评论 -
codeforces1161F Zigzag Game
题面题意交互题.给出一张二分图,左右两个点之间两两有边,每条边有一个权值且每条边的权值都不相同,Alice与Bob在上面玩游戏.每局游戏由Alice选择"增加"或"减少",Bob自动选择另外一项,然后Alice选择一个点并将棋子放在上面,Bob将它移动到一个与它相连的点,之后Alice与Bob轮流将棋子移动到一个之前没有移动到过的相邻点上.要求若Alice选的是"增加",则棋子移动所经过的边...原创 2019-05-09 19:52:46 · 342 阅读 · 0 评论 -
codeforces1161E Rainbow Coins
题面题意交互题有n个硬币,每个硬币有一个颜色,这个颜色是R或G或B,每次询问可以询问多对硬币是否相同(一个硬币不能同时属于两对),最多7次询问,将硬币按颜色分成三对.做法首先考虑硬币只有两种颜色怎么做,发现可以只用两次询问得到:第一次询问:1 2|3 4|5 6|…第二次询问:2 3|4 5|6 7|…这样就可以得到标号相邻的硬币的颜色是否相同,即可得到每个硬币的颜色.考虑三种颜...原创 2019-05-08 20:32:22 · 278 阅读 · 0 评论 -
Atcoder agc033 E - Go around a Circle
题面题意给出一个环,上面有n个点,将他划分为n段弧,现在要求对每段弧进行红蓝染色,要求染色完成后,从每个点开始通过在环上移动,经过的弧构成的字符串都可以成为给定的字符串,问一共有几种染色方法.做法首先要确定一些结论.假设给出字符串的第一个字符为’R’('B’同理).分两种情况进行讨论:1.给定字符串中的所有字符都相同可以发现环上不存在两个连续的弧且它们的颜色都是B,因此除了所有弧同...原创 2019-05-05 09:32:20 · 1080 阅读 · 0 评论 -
AtCoder Grand Contest 019F Yes or No
题面题意你要做一共(n+m)(n+m)(n+m)道判断题,其中有m道题的答案是对,n道题的答案是错,当你做一道题之后,就可以知道对错,则你期望最多能做对多少题。做法首先最优方法肯定是写当前剩余数量最多的答案,我们可以将求正确期望改为求错误期望,对此建一张图:横纵坐标分别表示此时剩下的答案数,自下而上的边表示此时答案是对的题较多但正确答案是错,自右向左的边则相反,这样将每条边的权值为设1...原创 2019-03-13 16:40:15 · 180 阅读 · 0 评论 -
codeforces1120E The very same Munchhausen
题面题意给出一个正整数a,问是否存在一个正整数n,满足S(a∗n)=S(n)/aS(a*n)=S(n)/aS(a∗n)=S(n)/a且n<=10500000n<=10^{500000}n<=10500000S(x)S(x)S(x)表示x各个数位的数字和。做法首先可以考虑把n分成多个部分,使n形如b1+b_1+b1+"0000"+b2++b_2++b2...原创 2019-03-06 14:57:58 · 792 阅读 · 0 评论 -
codeforces506E Mr. Kitayuta's Gift
题面题意给你一个长度为n的字符串,现要你加上m个字符,使其变为一个回文串,问有几种加法。做法首先题目可以转化为,求有几个长度为n+m的字符串,使给出的字符串为该字符串的子序列。这样可以考虑从两边开始确定字符,并与给出的字符串进行匹配,然后我们就可以根据此时的字符串已经匹配的位置建立自动机,这个自动机由多个节点构成,每个点都有一个权值为24,25或26(仅终点是26)的自环,然后非自环会形...原创 2019-03-03 13:44:01 · 402 阅读 · 0 评论 -
codeforces516E Drazil and His Happy Friends
题面题意有n个男孩,m个女孩,他们中有些人高兴,其他人不高兴,第iii天,第imod  ni\mod nimodn个男孩会和第imod  mi\mod mimodm个女孩约会,若两人中有一个人高兴,则两个人都会高兴,则至少几天后,所有人都会高兴。做法首先可以将所有人根据模gcd...原创 2019-03-01 17:53:38 · 389 阅读 · 0 评论 -
codeforces1129E Legendary Tree
题面题意交互题,要求你通过询问确定一个有n个节点的树的边,每次询问输出两个集合S,T和点v,将会告诉你从S集合的某个点到T集合的某个点并经过点v的路径数。做法首先钦定点1为根节点,然后发现,询问({x∈N∗x \isin N^*x∈N∗ | 2&lt;=x&lt;=n,x̸=i2&lt;=x&lt;=n,x\not =i2<=x<=n,x̸=i...原创 2019-02-25 21:47:21 · 372 阅读 · 0 评论 -
codeforces 891B - Gluttony
题面题意 给出一个长度为n且无相同整数的序列,求该序列的一个排列使两序列中任意几个(大于0小于n)位置的数之和不相同.方法 开始看到n<=22以为用状压,但无论是时间还是空间都很紧张,且n的范围纯属是因为评测时判断正确与否的复杂度为2^n. 正确方法是时除了最小数外,其他数都变成比它在序列中小一点的数,最小数变成最大数.证明 假设不取最小值,那么和一定要比原来的序列小,因而不取原创 2017-11-18 20:27:56 · 383 阅读 · 0 评论 -
1010 - Knights in Chessboard
题面题意 给出一个m*n的棋盘,问最多能放几个不相互攻击的马(马在格子里且没有马脚)。方法 经过观察,可以发现马每跳一次的之后横纵坐标之积的奇偶性都会发生改变,故可以将所有白色格子或黑色格子放满马。 注意一下特殊情况: 1.有一边为1,可以放满 2.有一边为2,放一个田再隔一个田。代码#include<bits/stdc++.h>using namespace std原创 2017-11-01 23:38:12 · 251 阅读 · 0 评论 -
codeforces 1019C Sergey's problem
题面题意给出一张有向图,要求在其中选取一个点集,要求: 1.点集中的任意两个点之间都没有边。 2.任何在点集之外的点与点集内的点的最短距离不大于2。做法首先正着遍历所有点,如果这个点还没有标记则标记为1,将它能一步到达的且标记为0的点全部标记为-1,表示这些点不能选择,然后倒着遍历一遍,将标记为1的计入答案,并将其能一步到达的点的标记全部改为-1。 可以发现正着遍历之...原创 2018-08-15 16:20:07 · 332 阅读 · 0 评论 -
codeforces1149E Election Promises
题面题意给出一张DAG,每个点上有一个数字,双方轮流进行操作:选择一个权值不为0的点,然后减少它的权值,并任意修改这个点所有后继的权值.做法这道题显然是Nim博弈,但是直接计算整张图的sg函数显然不可能,所以可以考虑将点进行分组,分别进行博弈,因此分组必须满足如下要求:1.一次操作不能同时修改一个组中中的两个数2.对同一个组中的点操作,可以修改的点所在的组构成的集合相同.因此可以按如...原创 2019-05-13 15:39:50 · 465 阅读 · 0 评论