
codeforce
文章平均质量分 61
holy_gyr
这个作者很懒,什么都没留下…
展开
-
codeforces 988B
按照字符串的长度排下序。从头开始判断当前一个串是否为后一个串的子串,如果是继续判断,如果不是输出NO,如果全部都是输出yes,输出排完序的所有串#include<bits/stdc++.h>using namespace std;const int maxn = 105;struct Node{ string str; int len; bool operator <...原创 2018-06-02 21:01:50 · 344 阅读 · 0 评论 -
codeforces 988C
题意给你n个序列找到两个序列从这两个序列中个删一个元素使他们的和相等,如果存在着两个序列输出这两个序列的编号,以及删除的第几个元素题解:对于每一个序列求和 尝试删除每一个元素,然后得到删除该元素的和,判断这个和是否在之前序列中出现过用map去找,如果现过输出答案,否则把这个和插入到map中。#include<bits/stdc++.h>using namespace std;con...原创 2018-06-02 23:25:49 · 251 阅读 · 0 评论 -
codeforces 988A
题意:给你的n个数 问是否存在k个不同的数,如果存在输出这k个数的下标 佛则输出NO题解:遍历一遍这个数组 并用vis标示当前值有木有出现 如果没有出现过就把他的下标加入到我们的数组中,如果数组中的元素够k个输出,如果最后都不够就输出no#include<bits/stdc++.h>using namespace std;int vis[105];int a[105];vec...原创 2018-06-05 18:26:25 · 334 阅读 · 0 评论 -
codeforces 988D
题意:给你n个数,找到一个集合使得任意两数之差为2^d,输出这个题解:经过分析我们发现要想组成这样一个集合,我们集合中不同的数一定是3个,并且这三个元素从小到大排列后,相邻两个元素之查一定是相等的都是2的d次方。那么我们就枚举每个元素i作为最小元素,然后再枚举d,判断下i+2^d和i+2^d+2^d是否存在,加上存在的个数,最后取最大就ok了#include<bits/stdc++.h>...原创 2018-06-05 19:22:48 · 255 阅读 · 0 评论 -
codeforces 988E
题意给你一个数n,每次可以选择交换相邻两位,问n最少经过几次变化,可以被整除25,如果无论这么移动都不能,输出-1;题解:经分析我们可以发现只有最后两位是 00,25,50,75,的才有可能被25整除,那么首先我们判断下n是否包含这几个数不包含输出-1,包含的话,我们求下凑出满足上述条件后两位的最小移动步数就可以,对于求最小移动步数,我们按照贪心的思想,从低位往高位找第一个满足第一位的数,然后进行...原创 2018-06-05 19:34:07 · 293 阅读 · 0 评论 -
codeforces 988F
题解:dp[i]代表着在第i把伞换伞的最小代价,状态转移方程就是dp[i]=min(dp[j]+(a[i].x - a[j].x) * a[j].w) (第i把伞没有在雨中的情况) dp[i]=min(dp[i],dp[j] + (l - a[j].x) * a[j].w )(第i把伞在雨中的转移方程,l的含义详见代码) 最后 ans = min(dp[i] + (mx - ...原创 2018-06-13 19:12:37 · 847 阅读 · 0 评论