宇宙总统【题目链接】

关于题目算法,其实就是考排序,那我们直接sort不就好啦,显然不能。

这个题让我重新认识了cmp函数;


以下是我的心路历程:

看到这个题,嗯?这么简单的吗,我直接sort不就好啦✿✿ヽ(°▽°)ノ✿

再看一眼,不会这么简单的吧(⊙▽⊙)#

往下一看:(微笑)


废话 is over

MY SOLUTION:

这个题其实开始是想手写高精度排序的,好像手写排序也不是特别难?然后在讨论版发现了一个用sort的算法,于是我也就用sort做啦,然后成功对sort函数中的cmp有了新的认识:

  1. 首先当然是读入啦,结构体读入,方便排序;
  2. 然后sort(p+1,p+n+1,cmp)
  3. 接下来就是响当当的cmp函数啦:
    1. 首先这让人忍不住想起了【6.12校内test】T3 城市交通费中的cmp:

      int cmp(int x,int y)
      {
      return p[x]<p[y];
      }

      内心os:还可以这么玩qwq(这里是给出两个下标x,y,按它们的繁华度从小到大排序)

    2. 从网上并没有找到有关cmp是怎么用的,只找到一句话:cmp函数的含义:如果返回值是 True,表示 要把 序列 (X,Y),X放Y前。(这是我感觉唯一有用的qwq)对于这种:
      bool cmp(int x,int y){
      return x>y;
      }

      的cmp,其实就是比较x与y如果x>y return 1;否则 return 0;

    3. 那么按照这个思想,我们可以开始编写我们的cmp了:首先求这两个字符串的长度(因为我用的char型所以是用strlen(n))比较两个串的长度,如果strlen(x)>strlen(y)(但是好像不能直接写if(strlen(x)>strlen(y)))return 1;表示把x放在y前,反之return 0;然后当这两个字符串长度相同时,我们运用一个神奇的函数strcmp——字符串比较函数;strcmp(字符串1,字符串2) 如果字符串1>字符串2,会返回一个大于0的数,如果字符串1<字符串2,会返回一个小于0的数,如果字符串1=字符串2,返回0;因此我们可以写完程序啦(不想解释啦我相信后面是很好理解的)

CODE:

#include<bits/stdc++.h>
#include<string>
#include<algorithm> using namespace std; int n;
struct node{
int num;
char a[];
}p[]; bool cmp(node x,node y){
int xx=strlen(x.a),yy=strlen(y.a);
if(xx>yy) return ;
if(xx<yy) return ;
if(strcmp(x.a,y.a)<) return ;
return ;
} int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
cin>>p[i].a,p[i].num=i;
sort(p+,p+n+,cmp);
cout<<p[].num<<endl<<p[].a<<endl;
}

想手写一个字符串比较函数qwq

算了懒死啦(主要没有搞明白传值调用和传址调用然后不会写)

【洛谷p1781】宇宙总统的更多相关文章

  1. 洛谷 P1781 宇宙总统

    P1781 宇宙总统 题目背景 宇宙总统竞选 题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出 ...

  2. 洛谷——P1781 宇宙总统

    https://www.luogu.org/problem/show?pid=1781 题目背景 宇宙总统竞选 题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人 ...

  3. (Java实现) 洛谷 P1781 宇宙总统

    题目背景 宇宙总统竞选 题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: pr ...

  4. 洛谷 P1781 宇宙总统:sort(string)

    题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: 第一行为一个整数n,代表竞选 ...

  5. 洛谷P1781 宇宙总统【排序+字符串】

    地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: president.in 第一行为一个 ...

  6. 洛谷P1781——宇宙总统(高精度排序)

    题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竟选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: 第一行为一个整数n,代表竞选 ...

  7. 洛谷P1781宇宙总统题解

    题目 此题原本是一个简单的排序,但因为数据范围的限制,所以变成了一个需采用字符串排序的题目,接下来我将给大家讲一下如何字符串排序. 首先先判断为位数上是否相同,如果不同再比较那一位的数就可以了 #in ...

  8. 洛谷P1781 宇宙总统

    https://www.luogu.org/problem/show?pid=1781 高精比较大小: #include<iostream> #include<cstdio> ...

  9. (大数 string easy。。。)P1781 宇宙总统 洛谷

    题目背景 宇宙总统竞选 题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: pr ...

随机推荐

  1. node.js渲染页面

    1 在软件中找到nodejs并安装(强调,安装时选默认位置) 2 复制yuedu文件夹到本地 3 在yuedu文件夹中按shift 点击右键 4 输入命令 npm install 5 安装成功后,输入 ...

  2. JavaWeb_(设计模式)单例模式

    菜鸟教程 传送门 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该 ...

  3. JS框架_(JQuery.js)动画效果鼠标跟随

    百度云盘 传送门 密码 :4n9u 火狐浏览器上纯CSS_动画效果鼠标跟随效果: (作者:lily_lcj 传送门) <!DOCTYPE html PUBLIC "-//W3C//DT ...

  4. GC详解

    GC,即就是Java垃圾回收机制.目前主流的JVM(HotSpot)采用的是分代收集算法.与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用.即:从gcroot开始 ...

  5. C++入门经典-例2.7-控制cout打印格式程序

    1:代码如下: // 2.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #incl ...

  6. maven仓库,snapshot快照仓库和release发布仓库的区别

    首先看下snapshot类型 建立一个maven-privider项目,版本定义为1.1-SNAPSHOT 创建一个privider类,写一个hello()方法,并推送maven私有仓库 然后再建立一 ...

  7. leetcode-easy-string-344 Reverse String

    mycode class Solution(object): def reverseString(self, s): """ :type s: List[str] :rt ...

  8. [Java]分解算术表达式一

    源码: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...

  9. D5(太长了md没写完)

    动态规划 三种常见实现方法 对于一个斐波那契数列,我们想要求第n项的值,就需要一项一项的递归来求 来看代码 f[o] = 0; f[1] = 1; for (int i = 2; i <= n; ...

  10. 自定义View等级滑动条的实现

    package com.loaderman.beautyseekbarviewdemo; import android.os.Bundle; import android.support.v7.app ...