CF102302E.Chi’s performance

题意&思路:

有一个演出,N个人参与,每个人的乐器编号Vi,能力编号Pi,演出按Vi从小到大表演。人们的享受值为两个不同乐器的P的差值的绝对值之和,问最大的享受值为多少。
为了使差值尽可能大,我们要使相邻的不同乐器之间的差值尽可能大。我们可以写几组数据构造发现,只有最大最小,次大次小影响较大。
因为对于一个乐器的相邻乐器来说,只有与他的最大最小值的差值才会最大,因为每个乐器(除了第一个和最后一个)都有两个乐器相邻,所以我们考虑最大最小值和次大次小值。
将乐器排序,分类。
对于乐器数目不满四个的,用-1标记。又可得如果一个乐器只有一种,那这个乐器的p值可以(必须)使用两次,此时将数组全部赋为此值。
用dp[i][j]表示选了i种乐器,此时选第j个乐器的最大权值,v[i][j]表示第i种乐器,第j个乐器的权值。
可得状态转移方程:
dp[i][j]=max{dp[i-1][m]+abs(v[i][j]-v[i-1][k]}(m≠k)很显然,一个乐器不能使用两次,所以m不能等于k。
最后求max{dp[len][j]} len为乐器的种类数目。

代码:

#include<bits/stdc++.h>
#define pii pair<int,int>
#define int long long
#define cl(x,y) memset(x,y,sizeof(x))
#define ct cerr<<"Time elapsed:"<<1.0*clock()/CLOCKS_PER_SEC<<"s.\n";
const int N=1e6+10;
const int mod=1e7+9;
const int maxn=0x3f3f3f3f;
const int minn=0xc0c0c0c0;
const int inf=99999999;
using namespace std;
struct music
{int w,p;
}a[N];
vector<int> b[N];
int cmp(music x,music y)
{return x.p<y.p;
}
int v[N][5]={0},dp[N][5]={0};
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,i,j,k,m;cin>>n;for(i=1;i<=n;i++)cin>>a[i].p>>a[i].w;sort(a+1,a+n+1,cmp);int f=a[1].p,len=1;for(i=1;i<=n;i++){if(a[i].p==f)b[len].push_back(a[i].w);else{f=a[i].p;b[++len].push_back(a[i].w);}}for(i=1;i<=len;i++){sort(b[i].begin(),b[i].end());int l=b[i].size();if(l==1)for(j=1;j<=4;j++)v[i][j]=b[i][0];else if(l<4){for(j=1;j<=l;j++)v[i][j]=b[i][j-1];for(j=l+1;j<=4;j++)v[i][j]=-1;}else{v[i][1]=b[i][0];v[i][2]=b[i][1];v[i][3]=b[i][l-2];v[i][4]=b[i][l-1];}}for(i=1;i<=4;i++)v[0][i]=-1;for(i=1;i<=len;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)  for(m=1;m<=4;m++)if(v[i][j]!=-1 && v[i-1][k]!=-1 && m!=k)dp[i][j]=max(dp[i][j],dp[i-1][m]+abs(v[i][j]-v[i-1][k]));}int ans=-maxn;for(i=1;i<=4;i++)ans=max(ans,dp[len][i]);cout<<ans<<endl;return 0;
}

(dp)CF102302E.Chi's performance相关推荐

  1. 一周一论文(翻译)——[VLDB 18] Chi:分布式流处理系统下可扩展的、可编程的控制计划模块

    Abstract 流处理工作负载和现代共享集群环境表现出高度的可变性和不可预测性. 结合大量参数空间和各种用户SLO,这使得现代流处理系统非常难以静态配置和调整. 为了解决这些问题,在本文中,我们研究 ...

  2. Censored! POJ - 1625 AC自动机+大数DP

    题意: 给出一n种字符的字典,有p个禁用的单词, 问能组成多少个不同的长度为m的合法字符串.(m<=50) 题解: 是不是个我们之前做的题目非常非常像,题意都一样. 直接将上次写的AC自动机+矩 ...

  3. POJ 1625 Censored! (AC自己主动机 + 高精度 + DP)

    题目链接:Censored! 解析:AC自己主动机 + 高精度 + 简单DP. 字符有可能会超过128.用map映射一下就可以. 中间的数太大.得上高精度. 用矩阵高速幂会超时,简单的DP就能解决时间 ...

  4. POJ 1625 Censored! (AC自动机 + 高精度 + DP)

    题目链接:Censored! 解析:AC自动机 + 高精度 + 简单DP. 字符有可能会超过128,用map映射一下即可. 中间的数太大,得上高精度. 用矩阵快速幂会超时,简单的DP就能解决时间的问题 ...

  5. CHI论文阅读(1)EmoGlass: an End-to-End AI-Enabled Wearable Platform for Enhancing Self-Awareness of Emoti

    文章目录 abstract introduction Related Work 用于健康感知的智能眼镜 情绪感知和检测 通过可穿戴设备进行面部表情识别 Hardware Design Form Fac ...

  6. 联邦学习(FL)+差分隐私(DP)

    联邦学习(FL)+差分隐私(DP) 文章首发在我的博客!在这里在这里在这里在这里在这里!!!!!! 防止梯度信息被泄露的方法有很多,目前主要有两种: 1.基于安全多方计算的 这个里面包含的方法很多,包 ...

  7. Best paper awards for AAAI, ACL, CHI, CIKM, FOCS, ICML, IJCAI, KDD, OSDI, SIGIR, SIGMOD, SOSP, STOC

    转载于:http://jeffhuang.com/best_paper_awards.html Best paper awards for AAAI, ACL, CHI, CIKM, FOCS, IC ...

  8. LeetCode 698.Partition_to_k_equal_subsets. Three different solutions: DFS, DP, DP topdown + DFS

    Problem Partition a set A=(a1,a2,...,an)A=(a_1,a_2,...,a_n)A=(a1​,a2​,...,an​) to kkk disjointed sub ...

  9. 『UC Berkeley CS267』Lecture3: More MatMul and the Roofline Performance Model

    Lecture3 More MatMul and the Roofline Performance Model Review Computational Intensity: 非常重要 tm/tft_ ...

最新文章

  1. 【SpringBoot】使用Maven添加jQuery、bootstrap等依赖(WebJars)
  2. ThreadLocal管理Connection
  3. 小白也能看懂!教你如何快速搭建实用的爬虫管理平台
  4. .NET开源工作流CCFlow-快速入门
  5. Running 1 linux_yesterdaytodaytomorrow
  6. 为什么物联网产品迫切需要良好的 UI/UX 设计?
  7. 深度学习常用性能评价指标
  8. 至强服务器性能排行,至强cpu天梯图,至强服务器cpu排行-
  9. c51为啥要宏定义时钟_C51 程序中 #define 宏定义语句末尾一定要使用分号才能正确编译通过。_学小易找答案...
  10. 连续仨月霸占牛客榜首京东T8呕心巨作:700页JVM虚拟机实战手册
  11. ERA5气象数据下载经验分享
  12. 第五人格显示服务器错误,第五人格服务器异常玩家秒变GM,时装随便买,玩家:这感觉真好!...
  13. nuxt使用element ui设置成英文
  14. python如何保存excel文件
  15. 详解one—hot编码(独热编码)
  16. 如何通过snmp监控Linux
  17. 读万卷书不如行万里路,行万里路不如阅人无数,阅人无数不如名师指路,名师指路不如自己去悟
  18. mysql外键查询_MySQL外键使用详解
  19. web自动化之frame、文件上传、窗口切换、悬浮菜单
  20. python无法导入Cython的.pyx文件?

热门文章

  1. springboot+mysql+基于web的在线问答社区系统设计与实现 毕业设计-附源码061628
  2. monkeyrunner操作手机
  3. FlashFXP 注册码
  4. ArcGIS API for JavaScript实现加载必应地图
  5. 计算机图形学绘图程序设计
  6. 网络骨架:Backbone(神经网络基本组成——卷积层)
  7. 时间范围查询 sql
  8. Linux 常用命令——超详细(建议收藏)
  9. MySQL实现递归查询
  10. VXLAN中EVPN技术详解(二)——EVPN与VXLAN分布式网关