250-RepeatNumberCompare

Problem Statement

For any two positive integers x and k we can make a new number denoted repeat(x, k) by concatenating k copies of x written in decimal. For example, repeat(1234,3) = 123412341234 and repeat(70,4) = 70707070.

You are given the ints x1, k1, x2, and k2. Let v1 = repeat(x1, k1) and v2 = repeat(x2, k2). Please compare the numbers v1 and v2 and return a string that describes the result of the comparison. In particular:

Return "Less" if v1 is less than v2.

Return "Greater" if v1 is greater than v2.

Return "Equal" if v1 and v2 are equal.

题意

将x写k次后组成的新数字,比较两个的大小

代码

class RepeatNumberCompare
{
public:
string compare(int x1, int k1, int x2, int k2)
{
int k=x1;
int a[100];
int b[100];
int len1=0;
while (k)
{
len1++;
a[len1]=k%10;
k/=10;
}
k=x2;
int len2=0;
while (k)
{
len2++;
b[len2]=k%10;
k/=10;
} if (len1*k1<len2*k2) return "Less";
if (len1*k1>len2*k2) return "Greater"; string sk1;sk1.clear();
string sk2;sk2.clear();
for (int o=1;o<=k1;o++)
for (int i=len1;i>0;i--) sk1.push_back(a[i]+'0');
for (int o=1;o<=k2;o++)
for (int i=len2;i>0;i--) sk2.push_back(b[i]+'0'); if (sk1<sk2) return "Less";
if (sk1==sk2) return "Equal";
if (sk1>sk2) return "Greater";
}
}t; int main()
{
cout<<t.compare(1010,3,101010,2);
}

500-MakePalindrome

Problem Statement

You have some cards. Each card contains a single lowercase letter. You are given these letters as the characters of the string card.

A palindrome is a string that reads the same forwards and backwards. Examples of palindromes: "eve", "abba", "aaaaaa", and "racecar".

Use the cards you have to spell some palindromes. In particular:

  • Each card must be used in exactly one of the palindromes.
  • The total number of palindromes must be as small as possible.

Return a vector containing the palindromes you built. (Each element of the return value should be one of the palindromes.)

A solution always exists. If there are multiple optimal solutions, you may choose and output any one of them.

题意

用他给的字符串的所有字母组成最少的回文串

代码

class MakePalindrome
{
public:
vector <string> constructMinimal(string card)
{
vector <string> ret;ret.clear(); int a[200];memset(a,0,sizeof(a));
for (int i=0;i<card.size();i++) a[card[i]]++;
queue<char> q;while (!q.empty()) q.pop();
queue<char> sig;while (!sig.empty()) sig.pop();
stack<char> s;while (!s.empty()) s.pop();
for (int i='a';i<='z';i++)
{
while (a[i]>=2)
{
a[i]-=2;
q.push(i);
}
if (a[i]) sig.push(i);
} string pus;pus.clear();
while (!q.empty())
{
s.push(q.front());
pus.push_back(q.front());
q.pop();
}
if (!sig.empty())
{
pus.push_back(sig.front());sig.pop();
}
while (!s.empty())
{
pus.push_back(s.top());
s.pop();
}
ret.push_back(pus);
while (!sig.empty())
{
pus.clear();
pus.push_back(sig.front());
sig.pop();
ret.push_back(pus);
}
return ret;
}
};

1000-AverageVarianceSubset

Problem Statement

In probability theory and statistics, variance is the expectation of the squared deviation of a random variable from its mean. As a special case, we can compute the variance of a nonempty finite set X = { x_1, ..., x_n } as follows:

  • Let mu = (x_1 + ... + x_n) / n be the mean of the set.
  • Let y_i = (x_i - mu)^2 be the square of the difference between x_i and the mean.
  • The variance of X, denoted var(X), can now be computed as the average of all y_i. (In other words, as the sum of all y_i, divided by n.)

For example, if X = { 0, 1 }, we have mu = 1/2, then y_1 = y_2 = 1/4, and finally var(X) = (1/4 + 1/4) / 2 = 1/4.

The range of a nonempty finite set is the difference between its maximum and its minimum. For example, the range of the set { 40, 51, 67, 70 } is 70 - 40 = 30.

You are given a vector s that contains a set of distinct positive integers. You are also given an int R.

Consider all nonempty subsets of s with range less than or equal to R. Alice computed the variance of each of those subsets. Bob took all Alice's results and computed their average. Compute and return the number computed by Bob

题意

取所有非空子集,去除最大值与最小值相差超过R的集合,计算集合内的方差,求所有方差的平均数

代码(不过hack)

int cmp(int q,int w)
{
return q<w;
} class AverageVarianceSubset
{
public:
int cnt;
int RR;
vector<int> q;
int top;
int a[100];
double sumit()
{
cnt++;
double sum=0;
double mean=0;
for (int i=0;i<top;i++) sum+=a[i];
mean=sum/top;
sum=0;
for (int i=0;i<top;i++) sum+=(a[i]-mean)*(a[i]-mean);
return sum/top;
}
double dfs(int k)
{
double ret=0;
if (k>=q.size() || (top && q[k]-a[0]>RR))
{
if (top) return sumit();
}
else
{
if (q[k]-a[0]<=RR || !top) a[top++]=q[k];
ret+=dfs(k+1);
top--;
ret+=dfs(k+1);
return ret;
}
return 0;
} double average(vector <int> s, int R)
{
RR=R;
sort(s.begin(),s.end(),cmp);
q=s;
return dfs(0)/cnt;
}
};

赛后总结

250打错变量

500打错括号

烦躁

Topcoder-SRM-#712-Div2的更多相关文章

  1. Topcoder Srm 673 Div2 1000 BearPermutations2

    \(>Topcoder \space Srm \space 673 \space Div2 \space 1000 \space BearPermutations2<\) 题目大意 : 对 ...

  2. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

    \(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...

  3. 求拓扑排序的数量,例题 topcoder srm 654 div2 500

    周赛时遇到的一道比较有意思的题目: Problem Statement      There are N rooms in Maki's new house. The rooms are number ...

  4. Topcoder srm 632 div2

    脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...

  5. topcoder SRM 628 DIV2 BracketExpressions

    先用dfs搜索所有的情况,然后判断每种情况是不是括号匹配 #include <vector> #include <string> #include <list> # ...

  6. topcoder SRM 628 DIV2 BishopMove

    题目比较简单. 注意看测试用例2,给的提示 Please note that this is the largest possible return value: whenever there is ...

  7. Topcoder SRM 683 Div2 B

    贪心的题,从左向右推过去即可 #include <vector> #include <list> #include <map> #include <set&g ...

  8. Topcoder SRM 683 Div2 - C

    树形Dp的题,根据题意建树. DP[i][0] 表示以i为根节点的树的包含i的时候的所有状态点数的总和 Dp[i][1] 表示包含i结点的状态数目 对于一个子节点v Dp[i][0] = (Dp[v] ...

  9. Topcoder SRM 626 DIV2 SumOfPower

    本题就是求所有连续子数列的和 开始拿到题目还以为求的时数列子集的和,认真看到题目才知道是连续子数列 循环遍历即可 int findSum(vector <int> array) { ; ; ...

  10. Topcoder SRM 626 DIV2 FixedDiceGameDiv2

    典型的条件概率题目. 事件A在另外一个事件B已经发生条件下的发生概率.条件概率表示为P(A|B),读作“在B条件下A的概率”. 若只有两个事件A,B,那么, P(A|B)=P(AB)/P(B) 本题的 ...

随机推荐

  1. Bootstrap(4) 表单和图片

    1.表单 基本格式,实现基本的表单样式 <form class="form-horizontal"> <div class="form-group&qu ...

  2. mysql事务四大特性

    本篇讲诉数据库中事务的四大特性(ACID)和简单操作 ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务 ...

  3. go语言中的strings常用函数和格式化输出

    package main; import ( "fmt" "strings" ) type person struct { name string; age i ...

  4. localstorage和vue结合使用2

    html <template> <div class="hello"> <div class="page-top"> < ...

  5. VSS源代码管理器运行代码分析工具的命令

    当你发现代码库总是报需要联系管理员运行代码分析工具时,你可以使用命令分析代码库代码解决: To fix the database problems, you can restart the analy ...

  6. jquery源码学习

    1,"use strict"; //16行   用在代码开始处,表示之后的代码将按照严格模式执行

  7. 自己动手开启QUIC(转载)

    源:https://www.bennythink.com/quic.html#title-0 今天在推上偶然发现 Google 在自己的服务器上启用了 QUIC,QUIC 这东西嘛(发音同 quick ...

  8. spring batch批处理框架学习

    内如主要来自以下链接: http://www.importnew.com/26177.html http://www.infoq.com/cn/articles/analysis-of-large-d ...

  9. js的日期格式判断

    var reg = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/; var str = (new Date).toLocaleString() ...

  10. 20172306《Java程序设计》第四周学习总结

    20172306 <Java程序设计>第四周学习总结 教材学习内容总结 第四章: 1. 类和对象的回顾:除了看书,我还上网找了一下两者的一些区别. 2. 编写类时,了解到初始化.形式参数. ...