zoukankan      html  css  js  c++  java
  • Topcoder-SRM-#712-Div2

    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打错括号

    烦躁

  • 相关阅读:
    拆分跨天的时间数据
    模板
    更换数据库服务器迁移步骤
    缺失索引
    flex布局解说和属性
    Vuejs中关于computed、methods、watch,mounted的区别
    皮囊
    回家
    江苏旅游计划
    重写原生alert,弹出层过一会就消失
  • 原文地址:https://www.cnblogs.com/EDGsheryl/p/6732879.html
Copyright © 2011-2022 走看看