zoukankan      html  css  js  c++  java
  • hdu 6011

    题意:Lotus有nn种字母,给出每种字母的价值以及每种字母的个数限制,她想构造一个任意长度的串。定义串的价值为:第1位字母的价值*1+第2位字母的价值*2+第3位字母的价值*3……求Lotus能构造出的串的最大价值。(可以构造空串,因此答案肯定≥0)

    思路:一开始想着以价值排序,小于0的不要,然而如果添加负数,那么有可能正数往后移,sum值反而更大

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 struct node{
     5     int x,y;
     6 }a[30];
     7 
     8 bool cmp(node p,node q){
     9     return p.x>=q.x;
    10 }
    11 int main(){
    12     int t;
    13     scanf("%d",&t);
    14     while(t--){
    15         int n;
    16         scanf("%d",&n);
    17         for(int i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y);
    18         ll xx=0,sum=0;
    19         sort(a+1,a+1+n,cmp);
    20         for(int i=1;i<=n;i++){
    21             if(a[i].x>=0){
    22                 while(a[i].y){
    23                     xx+=a[i].x;
    24                     sum+=xx;
    25                     a[i].y--;
    26                 }
    27             }
    28             else {
    29                 while(a[i].y){
    30                     xx+=a[i].x;
    31                     if(xx<0) break;
    32                     sum+=xx;a[i].y--;
    33                 }
    34             }
    35         }
    36         cout<<sum<<endl;
    37     }
    38     return 0;
    39 }

    nn种字母,给出每种字母的价值以及每种字母的个数限制,她想构造一个任意长度的串。 定义串的价值为:第1位字母的价值*1+第2位字母的价值*2+第3位字母的价值*3…… 求Lotus能构造出的串的最大价值。(可以构造空串,因此答案肯定geq 00)

  • 相关阅读:
    [笔记] 深入java虚拟机 类型的生命周期
    xml笔记
    Python笔记
    Effective C++ 笔记(2)
    [笔记] 深入java虚拟机 连接模型
    javascript对象成员访问权限
    [笔记] 深入java虚拟机 java class文件(2)
    STL笔记(3) Effective STL
    STL笔记(1)容器
    [IOS笔记] objecttivec基础知识
  • 原文地址:https://www.cnblogs.com/hhxj/p/6953643.html
Copyright © 2011-2022 走看看