牛客G:

给定大小为N的数组a[],给定M组关系,让你重排a[],使得sum{M队关系的绝对值之差}最小。首先将a排序,然后依次把a填入数组。

假设i在二进制下有x个1,用dp[i]更新dp[i|(1<<j)],表示的是,将a[x+1]填在第j个位置。注意到a[]已经排序了,那么a[x]的贡献就是:+之前填的个数*a[x]-没填的个数*a[x];

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=;
int a[N],p[N],e[N];
ll f[<<N];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF) {
for(int i=;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n); //重排,然后依次填入
for(int i=;i<n;i++) {
e[i]=;
p[i]=;
}
for(int i=;i<m;i++) {
int a,b;
scanf("%d%d",&a,&b);
a--;b--;
p[a]|=<<b;p[b]|=<<a;
e[a]++,e[b]++;
}
f[]=;
for(int i=;i<(<<n);i++) {
f[i]=1e12;
int k=__builtin_popcount(i)-; //表示这一轮填a[k]
for(int j=;j<n;j++) {
if(i&(<<j)) {//表示a[k]填在posj处
f[i]=min(f[i],f[i^(<<j)]+1LL*a[k]*(__builtin_popcount(p[j]&i)*-e[j]));
}
}
}
printf("%lld\n",f[(<<n)-]);
}
return ;
}

CF-E:

题意:给定M队关系(ai,bi),让你重排,使得{关系的位置绝对值之和}最小。

依然是枚举最后一个填谁,那么这一轮的贡献是满足(ai已经填入,bi未填入)的个数。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
char c[maxn]; int dp[maxn],f[][];
int main()
{
int N,M;
scanf("%d%d%s",&N,&M,c+);
memset(dp,0x3f,sizeof(dp));
rep(i,,N-) f[c[i]-'a'][c[i+]-'a']++,f[c[i+]-'a'][c[i]-'a']++;
dp[]=;
rep(i,,(<<M)-){
int t=;
rep(j,,M-) {
if(i&(<<j)){
rep(k,,M-)
if(!(i&(<<k))) t+=f[j][k];
}
}
rep(j,,M-) if(!(i&(<<j))) dp[i|(<<j)]=min(dp[i|(<<j)],dp[i]+t);
}
printf("%d\n",dp[(<<M)-]);
return ;
}

最新文章

  1. 【Win10】UAP/UWP/通用 开发之 x:Bind
  2. Oracle启动报错ORA-27102解决
  3. css 表格
  4. Python的平凡之路(17)
  5. JAVA Arrays.binarySearch
  6. 史上最全的iOS面试题及答案
  7. X86 架构和 ARM 架构
  8. maven安装 maven上传jar包到库里面
  9. 从计算机语言的发展到我的第一行代码(HelloWorld)
  10. Insert Sort Singly List
  11. Elastic-Job——分布式定时任务框架
  12. Trie树详解(转)
  13. 【转载】MDK环境下让STM32用上FreeRTOS v8.1.2和FreeRTOS+Trace v2.6.0全过程
  14. Xdebug在PHP中的安装配置
  15. python使用变量
  16. Reactor与Proactor比较
  17. Easyui dialog Y轴滚动条定位
  18. FTP命令字和响应码解释
  19. Mysql----索引原理与慢查询优化
  20. 快速切题 sgu119. Magic Pairs

热门文章

  1. [E] Shiro 官方文档阅读笔记 The Reading Notes of Shiro&#39;s Offical Docs
  2. oracle--DBWN
  3. JMM与happens-before
  4. Docker安装和上传容器
  5. ab小工具的Failed requests多的问题
  6. 小程序1px边框在苹果机上变粗问题
  7. mysql备份、还原数据库(命令行)
  8. navicat for mongodb12破解
  9. 2019-11-29-dotnet-通过-WMI-获取指定进程的输入命令行
  10. BUAA-OO-2019 第四单元总结