10 2018 档案
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 一个单位时间、一个单位时间地模拟就好。 然后对于每个人。 记录它所处的周期下标idx 每个单位时间都会让每个人的idx++ 注意从醒着到睡着的分界线的处理就好。 可以多循环几次。。超过上限认为无解 (其他题解也提供了一种方法,就是如果状态和初始
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 如果一行里面某位有 1个x 那么是invalid的。 没有x的话。 可以分析以下(设输入的标准Even为0,然后Odd为1) (列出所有情况分析后会发现.) 那么必须满足标准^这一列该位的亦或和==0 x只有1个的情况的话。也应
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你每个字母对应的摩斯密码。 然后每个单词的莫斯密码由其组成字母的莫斯密码连接而成。 现在给你若干个莫斯密码。 请问你每个莫斯密码对应哪个单词。 如果有多个单词和他对应。那么输出字典序最小的那个。 如果没有单词和他对应。 那么,你可以删除或者添加若干字母
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 假设从第i位开始有不一样的。 那么就把i+1..32位全都置0. 掩码的话类似。前i为全为1,后面32 i位全0. 尽量让后面的连续0(等于掩码最后的0的个数)晚一点出现。 这样网络表示的范围比较小(可供变化的范围比较小)。 【
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 绕(x,y,z)三个轴旋转。 枚举x,y,z各4次的结果。 (4次之后能还原。可以方便上一层枚举下一个情况。) 【代码】 cpp include define rep1(i,a,b) for (int i = a;i = b;i
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 枚举k 那么另外一个人的得票就是n k sum(ai) 找到最小的满足n k sum(ai) sum(ai)的k就ok了 【代码】 cpp include define rep1(i,a,b) for (int i = a;i = b;i )
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 枚举k 不难根据a得到x[0..k 1] 然后再根据a[k+1..n]来验证一下得到的x是否正确就好。 【代码】 cpp include define rep1(i,a,b) for (int i = a;i = b;i ) using nam
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 模拟了一两下。。 然后发现。 对于每一个前缀。 组成的新的最小字典序的字符串 要么是s[i]+reverse(前i 1个字符经过操作形成的最大字典序的字符串);或者是 (前i 1个字符经过操作形成的最小字典序的字符串)+s[i] 因为最大字典序
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 相当于问你这m个数组的任意长度公共子串的个数 【题解】 枚举第1个数组以i为起点的子串。 假设i..j是以i开头的子串能匹配的最长的长度。 (这个j可以给2..m这些数组用一个类似链表的东西很快得到,O((j i+1) M)的复杂度即可完成。 那么我们会
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 legal被我打成leagal... 然后注意输出坐标的时候,格式是%2d.. 然后就没啥难的了。。 【代码】 cpp include using namespace std; const int dx[8]={0, 1, 1, 1,0,1,1
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 注意那个星号的数量。。。 然后V x y的话,是从(y,x)向(y+1,x)连线。 H x y才是从(x,y)向(x,y+1)连线 枚举以(x,y)作为左上角的举行就ok了 【代码】 cpp include using name
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 车是可以被吃掉的。。。 注意这个情况。 其他的模拟即可。 【代码】 cpp include using namespace std; const int dx[4] = {0,0,1, 1}; const int dy[4] =
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 训练编程的题。 原题中没有除0的数据,所以别担心你的代码是因为除0错了。 多半跟我一样。 也是因为没有+eps 就是比如你要算tot/4的值。 那么要输出tot/4+1e 6 不然会错。。。 浮点误差... 剩下的。其实很简答的
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 每个操作对与一个点来说变化是固定的。 因此可以不用对整个数组进行操作。 对于每个询问,遍历所有的操作。对输入的(x,y)进行相应的变换就好了。 数据之间有空行。 【代码】 cpp / ope=0 EX操作 交换a[x1][y1]
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 输入的二进制长度最长为7 所以得开个sta[7][2^7]的样子才存的下所有的字符的。。 定义这么一个数组当字典。 然后一个字符一个字符地读。。组合成题目中的参数。 然后根据读入的每个长度为len的二进制,在字典中找到相应的字符
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 写个数组模拟链表 但注意,得用个辅助数组flag。。 不然可能会出现没能跳过中间的被占区域的情况。 比如 1 2 idx idx2 8 ( 表示已经出去的位置) 这个时候,idx1和idx2删掉的话。(假设先删idx1,后删id
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 水题。 中间就赢了算赢。(重复说,算错 【代码】 cpp include using namespace std; int _round; string s1,s2; int cnt[300]; int ok(string s)
阅读全文
摘要:可能上一次秦皇岛拿了银,有了偶像包袱? 打的时候感觉状态不是很好。 第一题,让你每次将连续一段区间的石头都拿掉。。 然后让你做个博弈。 橘子一顿分析,认为k+1的倍数都是输。 这时,我们以及默认i+1的石头会替代i位置的石头了(已经是错了) 然后交一发"NO-Wrong Answer"几个红颜色的字
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 对于每个i,用二分的方法求出来y所在的位置j. 可以这样求。 假设现在二分到了位置mid. 那么随便用个rmq求出来mid..n这一段的最小值temp。 看看temp是否满足 【代码】 cpp include define rep1(i,a,b
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 首先,因为高度是h 所以肯定1下面有连续的h个点依次连成一条链。 用了h+1个点了 然后,考虑d这个约束。 会发现,形成d的这个路径,它一定是经过节点1比较好。 因为这条路径有两种可能 1.经过了1节点 2.没有经过1节点,那么肯定是1的某个子
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 时刻维护一下前K大的数字就好。 因为k 【代码】
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 显然如果对方一次攻击能打死你。 那么你不能对他攻击了。必须加血。其他时候都只要攻击就可以了。 但也不一定非得加血。 因为有时候可以“绝杀”,就是虽然对方能打死你,但你也能在这回合打死对方。 这种情况就不用加血了。 【代码】 cpp includ
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 我们可以二分n的值,设为mid 那么对于n=mid 我们可以算出来以下3个东西 temp1 = n/x; temp2 = n/y; temp3 = n/lcm(x,y);//lc(x,y)表示x和y的最小公倍数 temp1是第一个人在1..n中
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 我们可以把原图的边都反向一下. 然后以每个休息点作为起点,进行dfs. 每次在扩展节点y的时候,要求这个点y必须只有一个出度,然后就能走多远就走多远就ok了。 会发现每个休息点占据的那些链都是唯一的,所以其他的休息点在进行dfs的时候,不会重复
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 会发现在x轴以及y轴上的炸弹,能用较少的操作数除掉。 而其他的点,会发现操作数都是一样的。 那么先把x,y轴上的点都除掉。 其他点。 我们优先沿着横坐标轴移动到和它相同位置。 然后再改变y坐标和目标炸弹一致。 然后就会发现。 x相同的话,要以y
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 最后a,b,c只有以下3种情况 1,2,4 1,2,6 1,3,6 那么用cnt[8]统计每个数字出现的次数. 输出cnt[4]次1,2,4 (如果1或2不够,那么无解 紧接着 如果6的个数和1的个数不同,那么无解 如果2的次数+3的次数和6出
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 设dis[i]表示到达i号传送器的最早时刻. 显然,虽然有那么多的出发时刻的限制,但我们还是越早到越好的. 因为你到得越早,出发的时间肯定不会比到达的时刻晚的差. 所以,就是一个最短路的问题啦. 因为数据范围比较大. 所以得用dijkstra+
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 因为只有1和2. 所以最后肯定是若干个1接着若干个2的情况。 即11...11222...222这样的。 1.首先考虑没有翻转的情况。 那么就直接枚举1和2的边界i在什么地方,即1..i全是1,i+1..n全是2. 只需统计某个范围里面1和2的
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 你可以找出来a[i]里面的最小值mi,显然是这个数字最可能先变成0,但还不确定. 然后用mi/n得到你最少需要走多少圈才能让那个mi变成"只差一圈"就变成0. 那么把所有的a[i]都减去mi/n n 然后再手动地模拟一圈(显然再模拟一圈就能让某
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 因为你的朋友的时间是固定的. 你完全可以开一个tag[50]的数组,如果tag[i]=1说明i时刻你的基友在线(扫描基友的时间就能 得到 然后你在判断有没有交集的时候,只要把你的时间扫描一遍,看看有没有tag==1的位置就好了 有的话就说明有机
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 字典树 我们可以两重循环(i,j) 来枚举所有的子串 即i=1,j=1,2,3... i=2,j = 2,3,4,.. 于是我们在i变化的时候(就是j层循环完了,i要执行i+1的时候 令cur=字典树的root 然后沿着字典树往下走。 遇到没有
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 动态规划 设dp[i][j]表示前i个数字,选了j个的最小花费。 dp[i][j] = min(dp[k][j 1]+b[i]);//其中a[i] a[k]且ka[k]的位置k才有可能。 复杂度O(N^2) 【代码】 cpp include u
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 枚举每一条边(x,y) 然后再枚举y的出度z 看看g[x][z]是否等于1(表示联通) 如果等于1就说明找到了一个三元环,则尝试用它们的出度和 6更新答案就好。 时间复杂度O(M N) 【代码】 cpp include define rep1(
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 分类讨论一波 设第一个数组的奇数个数为cnt1 第二个数组的奇数个数为cnt2 显然只有在(cnt1+cnt2)%2==0的情况下。 才可能第一个数组的和为偶数,第二个数组的和也为偶数 (因为奇数都要出现偶数次才可以。 所以只可能cnt1和cn
阅读全文