很少做TC,第一次写报告。

第一题:

题目意思:

有n个不同的数,求第二小的m个的和。

解题思路:

贪心,从小到大排序。去掉第m个加上第m+1个即可。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<ctime>
#include<bitset>
#define eps 1e-6
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
class LittleElephantAndBooks
{public:int getNumber(vector<int>pages,int number){int si=pages.size();sort(pages.begin(),pages.end());int sum=0;for(int i=0;i<number-1;i++)sum+=pages[i];sum+=pages[number];return sum;}
};

第二题:

求两个1~n的排列A和B的种数,使得Σmax(Ai,Bi)>=k的。

解题思路:

直接暴力就可以。

先把A排成1~n,固定,然后枚举B的所有排列,对应关系确定后,全排列,也即乘以n!就行了。10!也就10^6

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<ctime>
#include<bitset>
#define eps 1e-6
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define ll long long
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;vector<int>myv1;
vector<int>myv2;long long getNumber(int N,int K)
{myv1.clear(),myv2.clear();for(int i=1;i<=N;i++){myv1.push_back(i);myv2.push_back(i);}ll ans=0;do{int sum=0;for(int i=0;i<myv1.size();i++)sum+=max(myv1[i],myv2[i]);if(sum>=K)ans++;}while(next_permutation(myv2.begin(),myv2.end()));ll ff=1;for(int i=2;i<=N;i++)ff*=i;return ans*ff;}

第三题:

给一个A(A<=10^15),N(N<=100).这样就形成了一个数列A,A+1,....,A+N,现在可以对这N+1个数,删除某些数的某些位但不能把一个数所有的位都删掉,可以有前置零,要求删除后该序列满足非递减,求删除的种数,只要删除的有一位不同则记为不同的删除种数。什么都没删也记为一种。

解题思路:

LIS+状态压缩取数处理。

对于某一个数,一共只有15位,所有可以用15位的二进制保存每位是否还保存在。这样把数取出来后,LIS处理就行了。

熟悉各种STL。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<sstream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<ctime>
#include<bitset>
#define eps 1e-6
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define ll __int64
#define LL long long
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define Mod 1000000007
using namespace std;struct Elem
{LL va,sum;
};bool operator < (const Elem & a,const Elem & b)
{return a.va<b.va;
}
//满足非递减性质
long long getNumber(long long A,int N)
{vector<Elem>dp;Elem ee={0,1}; //初始化dp.push_back(ee);for(int i=0;i<=N;i++){vector<Elem>tt; //将该位所有的状态放到一个vector里面stringstream ss;ss<<(A+i); //把A+i读进去string str=ss.str(); //转化成字符串,对每一位好处理for(int i=1;i<(1<<str.size());i++) //每一个二进制的i,对应一个取出来的数{LL tmp=0;  //每一个数代表着一种状态for(int j=0;j<str.size();j++){if(i&(1<<j))//是1的话就把该位取出来{tmp*=10;tmp+=str[j]-'0';}}Elem cur={tmp,0}; //注意不存在的情况为0vector<Elem>::iterator it=upper_bound(dp.begin(),dp.end(),cur);//注意是查找结构体//在前面先找到大于tmp的,然后-1,表示小于等于tmp的if(it!=dp.begin())cur.sum=it[-1].sum; //注意迭代器的用法,-1表示前一个迭代器tt.push_back(cur);}sort(tt.begin(),tt.end()); //对它按va排序for(int i=1;i<tt.size();i++) //tt[i].sum表示当前这位,值小于等于tt[i].va,的总个数tt[i].sum=(tt[i].sum+tt[i-1].sum)%Mod;dp.swap(tt);//交换两个vector}return dp.back().sum;
}

srm 592 div 2相关推荐

  1. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1

    据说做TC题有助于提高知识水平? :) 传送门:https://284914869.github.io/AEoj/index.html 转载请注明链接:http://www.cnblogs.com/B ...

  2. Codeforces Round #592 (Div. 2) G. Running in Pairs 构造(水)

    传送门 文章目录 题意: 思路: 题意: 思路: 史上最水GGG题,没有之一. 考虑最小的情况如何构造,显然就是让a,ba,ba,b都1−n1-n1−n依次排列即可,这样的最小值为n∗(n+1)2\f ...

  3. Codeforces Round #592 (Div. 2) F. Chips 构造 + 细节

    传送门 文章目录 题意: 思路: 题意: 思路: 恶心的构造题,思路很简单但是代码细节很多,搞了半天. 根据题目的性质不难发现,如果有两个相同颜色的球相邻,那么他们的颜色永远不会改变. 根据这个性质, ...

  4. Topcoder SRM 648 (div.2)

    第一次做TC全部通过,截图纪念一下. 终于蓝了一次,也是TC上第一次变成蓝名,下次就要做Div.1了,希望div1不要挂零..._(:зゝ∠)_ A. KitayutaMart2 万年不变的水题. # ...

  5. Topcoder SRM 663 DIV 1

    ABBADiv1 题意: 规定两种操作,一种是在字符串的末尾添加A,另一种是在末尾添加B然后反转字符串.现在给你一个起始串,一个终点串,然后问你是否能够通过以上两种操作,从起始串变为终点串. 题解: ...

  6. TopCoder SRM 152 div 2 500point

    这个题目比较简单,自己在纸上写出来给的例子,然后分析一下就会发现规律了:) 我的代码 #include<vector> #include<iostream> using nam ...

  7. 【SRM 716 DIV 1 A】 ConstructLCS

    Problem Statement A string S is a subsequence of a string T if we can obtain S from T by erasing som ...

  8. Topcoder SRM 628 DIV 2

    被自己蠢哭了.... 250-point problem 国际象棋棋盘上给出两个坐标,问象从一个走到还有一个最少要几步. 黑格象仅仅能走黑格,白格象仅仅能走白格,仅仅要推断两个坐标的颜色是否同样就能推 ...

  9. SRM 587 Div II L3:ThreeColorabilityEasyy

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12699 这道题目是第一次在比赛的时候做出来的,开始还想用bru ...

  10. SRM 212 Div II Level One: YahtzeeScore

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=1692&rd=5858 比较简单. 代码如下: #inc ...

最新文章

  1. 2万人同时访问 nodejs_Nodejs 与 Python 的使用对比
  2. [机器学习]梯度提升决策树--GBDT
  3. 评估指标_供应链改进常用评估指标
  4. Codechef SEAARC Sereja and Arcs (分块、组合计数)
  5. 创建WebPart时的数据库连接问题。
  6. mysql strtok_c函数: strtok 和 strtok_r 详解
  7. 【渝粤题库】广东开放大学 跨境电商实务之搜索引擎 形成性考核
  8. Gui+jdbc+mysql实现图书管理
  9. MPI 环境搭建问题-运行程序闪退
  10. 【多目标优化求解】基于matlab蜻蜓算法求解多目标优化问题【含Matlab源码 477期】
  11. Unity3D插件大全
  12. 【读书笔记】《暗时间》 (一)
  13. tampermonkey(油猴)跨域发送请求
  14. RS232与TTL电平的区别
  15. oracle 考试结果哪里查,oracle认证考试成绩查询的方法是怎样的?
  16. 《Head First HTML5 javascript》第7章 表单
  17. 软件开发过程与项目管理(16.项目结束)
  18. 【论文笔记】Learning from Multiple Cities: A Meta-Learning Approach for Spatial-Temporal Prediction
  19. 擦地机器人排行榜_十大扫地机器人品牌排行榜扫地机器人哪个牌子好
  20. [FZYZOJ 2132] Zrn神犇之一起来看流星雨

热门文章

  1. 【着色器实现Shine局部或整体扫光效果_Shader效果第三篇】
  2. if函数多个条件怎么用,excel求和函数
  3. 理光GR Android wifi,理光gr2wifi怎么用
  4. Android 微信授权登陆
  5. 2019CBA选秀大会最终结果
  6. JavaFX之Scene Builder详细使用说明之设置篇(2)——属性Properties
  7. Mac能连接手机热点却无法上网问题解决
  8. 虚拟现实眼镜(增强现实眼镜)成像原理浅析
  9. word2016 图片去底灰_Word2016中为图片去除背景的方法
  10. mac DOSBox快捷键