HustOJ - 1019

 1 #include<iostream>
 2 #include<set>
 3 #include<string>
 4 #include<algorithm>
 5 using namespace std;
 6 struct Comp//multiset内部排序名为Comp
 7 {
 8     bool operator()(const string &str1,const string &str2)//重定义排序 ,operator()是重载操作符,是关键字
 9     {
10
11         if (str1.length()!=str2.length())//如果str1长度<str2长度, 返回按长度从小到大排序的结果
12             return str1.length()<str2.length();
13         int a=count(str1.begin(),str1.end(),‘1‘); //统计str1的1的个数 ,赋给a
14         int b=count(str2.begin(),str2.end(),‘1‘); //统计str2的1的个数,赋给b
15         return (a!=b?a<b:str1<str2); //如果a!=b,返回a<b的排序的结果,否则返回str1<str2的排序的结果
16     }
17 };
18 int main()
19 {
20     multiset<string,Comp> s;//定义多重集合s,启用重定义函数Comp
21     string m;
22     while(cin>>m) //输入
23     {
24         s.insert(m);
25     }
26     for (multiset<string,Comp>::iterator v=s.begin();v!=s.end();v++) //循环遍历并排序输出
27     {
28         cout<<*v<<endl;
29     }
30 }

1019 01串 排 序

时间: 2024-11-07 11:21:58

HustOJ - 1019的相关文章

1019 逆序数

1019 逆序数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数. 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4.给出一个整数序列,求该序列的逆序数. Input 第1行:N,N为序列的长度(n <= 50000) 第2 - N + 1行:序列中的元素(0 <= A[i] <= 10^9) Ou

poj 1019 Number Sequence (数学)

链接:http://poj.org/problem?id=1019 分析:就是计数的问题..可以先算出112123...m共有多少位,具体式子看代码..然后二分取一个最大的小于n的m,接下来考虑123...m有多少位,再二分一下求解就可以了..具体式子还是看代码.. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 typedef long long

codevs——1019 集合论与图论

1019 集合论与图论 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 集合论与图论对于小松来说是比数字逻辑轻松,比数据结构难的一门专业必修课.虽然小松在高中的时候已经自学过了离散数学中的图论,组合,群论等知识.但对于集合论,小松还是比较陌生的.集合论的好多东西也涉及到了图论的知识. 在第四讲的学习中,小松学到了“有序对”这么一个概念,即用<x, y>表示有序对x和y.要注意的是有序对<x, y>

BZOJ 1019: [SHOI2008]汉诺塔

Description 一个汉诺塔,给出了移动的优先顺序,问从A移到按照规则移到另一个柱子上的最少步数. 规则:小的在大的上面,每次不能移动上一次移动的,选择可行的优先级最高的. Sol DP. 倒着DP.但是他有优先级,所以他的方案是唯一的. 状态 \(f[a][i]\) 表示 将 \(a\) 柱上的 \(i\) 个移到,能移动到的柱子上的步数. 他能移动到的柱子也是唯一的,这个可以跟DP一起递推出来. \(g[a][j]\) 表示 将 \(a\) 柱上的 \(i\) 个能移动到的柱子. 然后

hud 1019最小公倍数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1019 思路:头两个数先求,再用所求的数与后面的一个数求,依次类推 1 #include<stdlib.h> 2 #include<time.h> 3 #include <cstdio> 4 #include <cstring> 5 #include <cmath> 6 #include <cstdlib> 7 #include <c

POJ 1019 Number Sequence 题解

这又是一道看似简单,实际挺困难的题目. 本来想做道基础题消遣一下的,没想到反被消遣了-_-|||. 看个人的基础吧,对于数学好的会简单点,但是由于情况太多,需要都考虑全,故此难度应该在4星以上了. 我这里使用的方法就是直接打表,然后直接模拟,利用打表去掉一大段数据,剩下数据量十分小了,故此可以直接模拟. 打表是为了计算前面的周期数,把周期数直接去掉. 主要难点是后面10位数以上的数有2位, 3位,4位等情况要考虑.- 下面使用getNewNums一个函数解决了,想通了,就几行代码,还不用难理解的

研(tu)究(cao)SFTP(HUSTOJ)……

学校题库加数据,HUSTOJ一点也不人道,数据不能一起加,只能一个一个手动加,20组数据一共40个文件真是累-- 于是SFTP一发,发现在外网下没root权限不能加数据--woc 试了很多方法,最终都指向开一个新账户然后赋予root权限,但是太不安全了所以没敢试(好歹也是学校财产--) 忍了,手动添加20组数据. 不过putty上去可以sudo su到root权限,并且可以给SPJ加权限使其运行,这个还有用-- 如果需要在外网向服务器传数据或者SPJ源文件就手动吧没人能救了--加SPJ的话put

问题 1019: C语言程序设计教程(第三版)课后习题6.9

/******************************************************************** @file Main.cpp @date 2017-05-12 23:18:28 @author Zoro_Tiger @brief 问题 1019: C语言程序设计教程(第三版)课后习题6.9 http://www.dotcpp.com/oj/problem1019.html ****************************************

1019: [SHOI2008]汉诺塔

1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1495  Solved: 916[Submit][Status][Discuss] Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. 对汉诺塔的一次合法的操作是指:从一根柱子的最上层拿一个盘子放到另一根柱子的最上层,同时要保证被移动的盘