题目链接:https://codeforces.com/contest/1242/problem/C

具体做法参照题解,记录一个子集当中dp的方法

https://cp-algorithms.com/algebra/all-submasks.html

代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int MAXN=5005;
const int MAXM=(1<<15)+5;
ll sum[20];
bool vis[MAXN*15],ok[MAXM];
int x[16][MAXN],n[20],num[MAXN*15],pos[MAXN*15],stk[MAXN*15],dp[MAXM],pre[MAXM],l[16],r[16];
int top=0;
map<ll,int> id;
vector<int> E[MAXN*15],sv[MAXM];
void dfs(int now,int st)
{if(vis[now]){int cir=0;for(int i=top;i>=1;i--){cir|=(1<<pos[stk[i]]);if(stk[i]==now) break;}if(!ok[cir]){ok[cir]=true;for(int i=top;i>=1;i--){sv[cir].pb(stk[i]);if(stk[i]==now) break;}}return ;}if(st&(1<<pos[now])) return ;st|=(1<<pos[now]);vis[now]=true;stk[++top]=now;for(int v:E[now]){dfs(v,st);}vis[now]=false;top--;
}
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int k,idx=0;ll S=0;scanf("%d",&k);for(int i=0;i<k;i++){scanf("%d",&n[i]);for(int j=1;j<=n[i];j++){scanf("%d",&x[i][j]);id[x[i][j]]=++idx;num[idx]=x[i][j];pos[idx]=i;sum[i]+=x[i][j];S+=x[i][j];}}if(S%k!=0) return 0*puts("NO");S/=k;for(int i=1;i<=idx;i++){ll v=S-(sum[pos[i]]-num[i]);if(id.find(v)!=id.end()){E[i].pb(id[v]);}}for(int i=1;i<=idx;i++)dfs(i,0);dp[0]=1;for(int i=0;i<(1<<k);i++){if(dp[i]){int rest=i^((1<<k)-1);for(int j=rest;j;j=(j-1)&rest){if(ok[j]){dp[i|j]=1;pre[i|j]=i;}}}}if(!dp[(1<<k)-1]) return 0*puts("NO");int now=(1<<k)-1;while(now){int x=now-pre[now];for(int i:sv[x]){int v=S-(sum[pos[i]]-num[i]);l[pos[id[v]]]=v;r[pos[id[v]]]=pos[i]+1;}now=pre[now];}puts("YES");for(int i=0;i<k;i++)printf("%d %d\n",l[i],r[i]);return 0;
}

Codeforces Round #599 (Div. 1) C. Sum Balance(图+dp)相关推荐

  1. Codeforces Round #599 (Div. 2) E. Sum Balance 图转换 + 子集dp + 环

    传送门 文章目录 题意: 思路: 题意: 思路: 首先我们知道如果所有数的和summodk!=0sum\bmod k!=0summodk!=0那么此时无解,否则我们设need=sum/kneed=su ...

  2. Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确定当前这个 ...

  3. Codeforces Round #268 (Div. 1) C. Hack it! 数位dp + 构造数位

    传送门 文章目录 题意: 思路: 题意: 定义f(x)f(x)f(x)表示xxx的十进制下数位和,现在给你aaa,让你选一个区间[l,r][l,r][l,r],满足∑i=lrf(i)moda=0\su ...

  4. Codeforces Round #741 (Div. 2) E. Rescue Niwen! 字符串 + dp

    传送门 文章目录 题意: 思路: 题意: 给你一个串sss,定义其扩张串为s1,s1s2,...,s1s2..sn,s2,s2s3,...,sns_1,s_1s_2,...,s_1s_2..s_n,s ...

  5. Codeforces Round #740 (Div. 2) D2. Up the Strip dp + 分块优化 + 逆向思维

    传送门 文章目录 题意: 思路 题意: 有nnn个细胞,你初始在第nnn细胞上,假设你当前在xxx处,你每次可以进行如下两个操作: (1)(1)(1)选择[1,x−1][1,x-1][1,x−1]内一 ...

  6. Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维

    传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki​,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...

  7. Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的只包含1,21,21,2的序列aaa,你可以至多翻转一段区间,求翻转之后最长非递减子序列是多长. 思路: 考虑如果翻转的话,翻转的子区间 ...

  8. Codeforces Round #630 (Div. 2) F. Independent Set 树形dp

    传送门 文章目录 题意: 思路: 题意: 给你一棵树,求这棵树的边导出子图中独立集的数量和,独立集大小可以为000. 思路: 先考虑普通的独立集数量怎么求,无非就是分情况讨论一下选根还是不选根,而这个 ...

  9. Codeforces Round #530 (Div. 1) 1098A Sum in the tree

    A. Sum in the tree Mitya has a rooted tree with nn vertices indexed from 11 to nn, where the root ha ...

  10. Codeforces Round #702 (Div. 3)---C. Sum of Cubes 两种方法 cbrt()函数应用

    文章目录 题目 思路 代码 题目 题目链接 思路 思路一. 容易联想到枚举所有x存在的情况,用map映射.因为a取值在1e4上. 1e8的时间复杂度枚举,但是map具有自动排序 费时间,炸了. uno ...

最新文章

  1. 软考之运筹学计算-车床问题
  2. SLAM算法总结——经典SLAM算法框架总结
  3. android weex跳转闪退,关于weex页面在android端跳转的问题
  4. python 进程与线程(理论部分)
  5. 阿里云Kubernetes CSI实践—NAS动态存储卷使用
  6. Apache Kylin原理学习之Cube的创建与Build
  7. 拜托!代码有BUG不一定都是程序员的锅
  8. 信息学奥赛一本通(2027:【例4.13】三角形)
  9. java指定sql生成xml,用Java实现可保存状态的数据库生成XML树(8)-JSP教程,Java与XML...
  10. 5加载stm32 keil_STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)
  11. JDBC中数据库连接池的使用与传统方式的比较
  12. 软件设计师考试大纲(2004版)
  13. 敏感词过滤算法对比,顺便开源了个工具库
  14. python | 画中国站点数量空间分布图
  15. dell服务器pe系统安装win7系统,dell戴尔pe重装win7系统
  16. python自动批量发邮件脚本_python自动发送邮件脚本
  17. 内核ppp编制和错误分析
  18. 降本增效的革命性工具: Share Creators 数字资产管理利器
  19. 【EmailCamel 国外邮件营销、美国邮件群发】邮件到达收件箱系列文章05:免费公共邮箱作为发件人的限制
  20. 一文看懂 webpack 的所有 source map !

热门文章

  1. 基于websocket的跨平台通信——iPhone/iPad/Mac控制树莓派(二):Swift控制端搭建,网络延迟显示
  2. Lombok插件下载与离线安装
  3. 【HNOI2013】切糕
  4. 全球与中国具有集成保护功能的共模滤波器(CMF)市场深度研究分析报告
  5. scala的交互式图表工具wisp
  6. Java基础篇--编程之路,道长且艰,千里之行,始于足下
  7. 5W2H分析法的学习笔记
  8. 日更文章到底难不难?
  9. 国外最流行的Bootstrap后台管理模板
  10. 手机如何测光照度_手机摄影,如何进行准确的测光?一篇文章教会你玩转“测光”...