zoukankan      html  css  js  c++  java
  • 【GOJ 2348】小W与制胡串谜题

    传送门

    题意

    给一些字符串 (s_1,s_2,dots,s_n),求打乱组合后的 (a_1,a_2,dots,a_n) 使得 (a_1+a_2+dots+a_n) 最小。

    正解

    就是一道水题,但我就是不会做……

    这道题如果要求 (a_1+a_2+dots+a_n) 最小,那么满足他的子集(?)最小,即 (a_n+a_{n+1}+dots+a_m(nle m)) 最小。

    那么可以有:如果 (a+b<b+a),则 (a) 放在 (b) 前面,反之亦然。

    然后就没有然后了。

    实在是不大清楚怎么写,欢迎大家补充。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    const int N=3e5+5;
    string s[N];
    bool cmp(string a,string b) {
    	return (a+b)<(b+a);
    }
    int main() {
    	int n;
    	scanf("%d",&n);
    	for(int i=1; i<=n; i++) {
    		cin>>s[i];
    	}
    	sort(s+1,s+n+1,cmp);
    	for(int i=1; i<=n; i++) {
    		printf("%s",s[i].c_str());
    	}
    	return 0;
    }
    
  • 相关阅读:
    CH6201走廊泼水节
    P3366 (模板)最小生成树
    linux 基础语法
    django 3.1 序列化讲述
    django 的基础设计
    django 的初始项目结构
    http
    mysql(一)
    反射型xss
    html(四)
  • 原文地址:https://www.cnblogs.com/Sam2007/p/13653269.html
Copyright © 2011-2022 走看看