题目链接:http://acm.swust.edu.cn/problem/403/

Time limit(ms): 5000        Memory limit(kb): 65535
 
Description
一个集合有如下元素:1是集合元素;若P是集合的元素,则2 * P +1,4*P+5也是集合的元素,取出此集合中最小的K个元素,按从小到大的顺序组合成一个多位数,现要求从中删除M个数位上的数字,使得剩下的数字最大,编程输出删除前和删除后的多位数字。 
注:不存在所有数被删除的情况

 
Input
输入的仅一行,K,M的值,K,M均小于等于30000。

 
Output
输出为两行,第一行为删除前的数字,第二行为删除后的数字。

 
Sample Input
5 4
Sample Output
137915
95
 
解题思路:处理的不好的话就坑爹了,为了int转换string方便偷懒,百度了sstream头文件用法,也算学到了~~~~
     (1)利用题中集合信息得到最小的几个数字
     (2)sstream,int 转换为string的到待删除序列
     (3)贪心---得到删除后的最大数值
 
代码如下(略搓):
 #include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <sstream>//int 转 string
using namespace std;
typedef long long LL;
int main(){
int len, m, front, cnt, end;
LL x[] = { , }, a, b;
while (cin >> len >> m){
int i = , j = , k;
for (k = ; k <= len; k++){
a = x[i] * + ;
b = x[j] * + ;
if (a > b){
j++;
x[k] = b;
}
else if (a == b){
i++;
j++;
x[k] = a;
}
else{
i++;
x[k] = a;
}
}
string s = "", ans = "";
for (i = ; i <= len; i++){
stringstream ss;
string str;
ss << x[i];
ss >> str;
s += str;
}
cout << s << endl;
string::iterator it = s.begin();
s.insert(it, '');//有效序列从1开始,防止front越界
len = s.size();
front = cnt = , end = ;
while (end <= len && cnt != m){
if (s[end] <= s[front])
s[++front] = s[end++];
else{
front--;
cnt++;
}
}
while (end <= len)
s[++front] = s[end++];
for (i = ; i < len - m; i++)
cout << s[i];
cout << endl;
}
return ;
}

[Swust OJ 403]--集合删数的更多相关文章

  1. 集合删数 (vijos 1545) 题解

    [问题描述] 一个集合有如下元素:1是集合元素:若P是集合的元素,则2 * P +1,4*P+5也是集合的元素,取出此集合中最小的K个元素,按从小到大的顺序组合成一个多位数,现要求从中删除M个数位上的 ...

  2. [Swust OJ 632]--集合运算(set容器)

    题目链接:http://acm.swust.edu.cn/problem/632/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  3. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  4. 删数方案数(regex)

    [题目描述] 给出一个正整数序列 a,长度为 n,cyb 不喜欢完美,他要删掉一些数(也可以不删,即删掉0个),但是他不会乱删,他希望删去以后,能将 a 分成 2 个集合,使得两个非空集合的数的和相同 ...

  5. OJ大集合、

    转载自:传送门 什么是OJ Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性. 一 ...

  6. SWUST OJ NBA Finals(0649)

    NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128   Descri ...

  7. 状压DP之集合选数

    题目 [HNOI2012]集合选数 <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不 ...

  8. 【BZOJ-2732】集合选数 状压DP (思路题)

    2734: [HNOI2012]集合选数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1070  Solved: 623[Submit][Statu ...

  9. codevs4096 删数问题

    题目描述 Description 键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N 和S,寻找一种方案使得剩下的数字组成的新数最小. 输入 ...

随机推荐

  1. (11)Xamarin.iOS - 新增iPhone storyboard

    原文 Xamarin.iOS - 新增iPhone storyboard 1. 开启Xamarin Studio 并建立新项目 专案类型为 iOS=>iPhone Storyboard => ...

  2. [Leetcode][Python]31: Next Permutation

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 31: Next Permutationhttps://oj.leetcode ...

  3. mongoose post方法总结and疑点

    官方文档代码: var schema = new Schema(..); schema.post('save', function (doc) { console.log('this fired af ...

  4. Android中SharedPreferences函数具体解释

    Android平台提供了一个SharedPreferences类,它是一个轻量级应用程序内部轻量级的存储方案,特别适合用于保存软件配置參数,比方boolean,int,float,long,Strin ...

  5. 利用虚拟光驱实现 将WINDOWS文件供虚拟机中的UBUNTU共享

    此方法只能实现(至少目前我发现只能这样)将文件传递给虚拟机中的ubuntu 中,供ubuntu系统阅读,拷贝等,但不能将ubuntu中的数据传递给windows. 即:每次更新windows的数据到u ...

  6. Swift 委托/代理设计模式

    Swift 中的委托/代理模式(以下简称"代理模式")与object-c的代理模式基本一致. 代理模式的基本思想就是将我(类或者结构体等)需要来完成的工作交给(委托给)另一个有我所 ...

  7. 常用的连接字符串(vs中连接sqlserver)方便随时查看

    Sql Server身份验证有两种,一种是Windows身份验证,还有一种是Sql Server 身份验证 Windows身份验证连接字符串: string connectionString = &q ...

  8. C++ 文件操作实例

    图1 文件个数及名称 图2 文件内容 背景:如图1所示,现有9个要处理的文件,每个文件的内容格式如图2所示,仅仅只是数值部分不同. 问题:如何提取每个文件中的相同属性的数值到同一个文件中? 输出示例: ...

  9. Win8.1重装win7或win10中途无法安装

    一.有的是usb识别不了,因为新的机器可能都是USB3.0的,安装盘是Usb2.0的. F12更改系统BIOS设置,我改了三个地方: 1.设置启动顺序为U盘启动 2.关闭了USB3.0 control ...

  10. left outer join

      table   A:  Field_K,   Field_A    1                       a    3                       b    4      ...