A

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int MAXN = , MAXM = ;
  5. //int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], ed = 1;
  6. //int cost[MAXM << 1];
  7. //inline void addedge(int u, int v, int c)
  8. //{
  9. // to[++ed] = v;
  10. // nxt[ed] = Head[u];
  11. // cost[ed] = c;
  12. // Head[u] = ed;
  13. //}
  14. inline void read(ll &v)
  15. {
  16. v = ;
  17. char c = ;
  18. int p = ;
  19. while (c < '' || c > '') {
  20. if (c == '-') {
  21. p = -;
  22. }
  23. c = getchar();
  24. }
  25. while (c >= '' && c <= '') {
  26. v = (v << ) + (v << ) + c - '';
  27. c = getchar();
  28. }
  29. v *= p;
  30. }
  31. int main()
  32. {
  33. ll T;
  34. read(T);
  35. while (T--) {
  36. ll n, x, y, d;
  37. read(n), read(x), read(y), read(d);
  38. ll cha = abs(x - y);
  39. if (cha % d == ) {
  40. ll ans = cha / d;
  41. printf("%I64d\n", ans);
  42. continue;
  43. } else {
  44. ll anser = LLONG_MAX;
  45. ll ans1, ans2;
  46. ans1 = ans2 = LLONG_MAX;
  47. if ((y - ) % d == ) {
  48. ans1 = (x - ) / d;
  49. if ((x - ) % d) {
  50. ans1++;
  51. }
  52. ans1 += (y - ) / d;
  53. }
  54. if ((n - y) % d == ) {
  55. ans2 = (n - x) / d;
  56. if ((n - x) % d) {
  57. ans2++;
  58. }
  59. ans2 += (n - y) / d;
  60. }
  61. anser = min(anser, min(ans1, ans2));
  62. if (anser == LLONG_MAX) {
  63. printf("-1\n");
  64. } else {
  65. printf("%I64d\n", anser);
  66. }
  67. }
  68. }
  69. }

B

注意一下坑点即可

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int MAXN = , MAXM = ;
  5. //int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], ed = 1;
  6. //int cost[MAXM << 1];
  7. //inline void addedge(int u, int v, int c)
  8. //{
  9. // to[++ed] = v;
  10. // nxt[ed] = Head[u];
  11. // cost[ed] = c;
  12. // Head[u] = ed;
  13. //}
  14. inline void read(int &v)
  15. {
  16. v = ;
  17. char c = ;
  18. int p = ;
  19. while (c < '' || c > '') {
  20. if (c == '-') {
  21. p = -;
  22. }
  23. c = getchar();
  24. }
  25. while (c >= '' && c <= '') {
  26. v = (v << ) + (v << ) + c - '';
  27. c = getchar();
  28. }
  29. v *= p;
  30. }
  31. vector<pair<int, char> > anss;
  32. queue<pair<int, char> > que;
  33. int main()
  34. {
  35. ios_base::sync_with_stdio();
  36. cin.tie();
  37. int n;
  38. cin >> n;
  39. string a;
  40. cin >> a;
  41. pair<int, char> cnt, zz;
  42. cnt.first = cnt.second = ;
  43. int sum = ;
  44. for (int i = ; i <= n; i++) {
  45. if (i == n) {
  46. anss.push_back(cnt);
  47. break;
  48. }
  49. if (a[i] != cnt.second) {
  50. if (cnt.first != ) {
  51. anss.push_back(cnt);
  52. }
  53. cnt.first = ;
  54. cnt.second = a[i];
  55. } else {
  56. cnt.first++;
  57. }
  58. }
  59. int sz = anss.size();
  60. for (int i = ; i < sz; i++) {
  61. if (anss[i].second == 'G') {
  62. sum += anss[i].first;
  63. }
  64. }
  65. int ans = ;
  66. for (int i = ; i < sz; i++) {
  67. cnt = anss[i];
  68. if (cnt.second == 'G') {
  69. if (cnt.first == sum) {
  70. ans = max(ans, cnt.first);
  71. } else {
  72. ans = max(ans, cnt.first + );
  73. }
  74. } else {
  75. if (cnt.first == ) {
  76. if (i > && i < sz - ) {
  77. ans = max(ans, anss[i - ].first + anss[i + ].first);
  78. if (anss[i - ].first + anss[i + ].first != sum) {
  79. ans = max(ans, anss[i - ].first + anss[i + ].first + );
  80. }
  81. }
  82. }
  83. }
  84. }
  85. cout << ans << endl;
  86. }

C

sort一下算下贡献即可

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int MAXN = , MAXM = ;
  5. //int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], ed = 1;
  6. //int cost[MAXM << 1];
  7. //inline void addedge(int u, int v, int c)
  8. //{
  9. // to[++ed] = v;
  10. // nxt[ed] = Head[u];
  11. // cost[ed] = c;
  12. // Head[u] = ed;
  13. //}
  14. inline void read(int &v)
  15. {
  16. v = ;
  17. char c = ;
  18. int p = ;
  19. while (c < '' || c > '') {
  20. if (c == '-') {
  21. p = -;
  22. }
  23. c = getchar();
  24. }
  25. while (c >= '' && c <= '') {
  26. v = (v << ) + (v << ) + c - '';
  27. c = getchar();
  28. }
  29. v *= p;
  30. }
  31. int pre[];
  32. vector<int> num[];
  33. int main()
  34. {
  35. ios_base::sync_with_stdio();
  36. cin.tie();
  37. int n, m;
  38. cin >> n >> m;
  39. int u, v;
  40. for (int i = ; i <= n; i++) {
  41. cin >> u >> v;
  42. num[u].push_back(v);
  43. }
  44. for (int i = ; i <= m; i++) {
  45. if (num[i].size()) {
  46. sort(num[i].begin(), num[i].end());
  47. }
  48. }
  49. int ans = ;
  50. for (int i = ; i <= m; i++) {
  51. int len = num[i].size();
  52. if (len) {
  53. int sum = ;
  54. for (int j = ; j < len; j++) {
  55. sum += num[i][len - j - ];
  56. //cout<<i<<" "<<j<<" "<<sum<<endl;
  57. if (sum > ) {
  58. pre[j + ] += sum;
  59. } else {
  60. break;
  61. }
  62. }
  63. }
  64. }
  65. for (int i = ; i <= ; i++) {
  66. ans = max(ans, pre[i]);
  67. }
  68. cout << ans << endl;
  69. }

D

构造题 毛毛虫图

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = ;
  4. inline void read(int &v) {
  5. v = ;
  6. char c = ;
  7. int p = ;
  8. while (c < '' || c > '') {
  9. if (c == '-') {
  10. p = -;
  11. }
  12. c = getchar();
  13. }
  14. while (c >= '' && c <= '') {
  15. v = (v << ) + (v << ) + c - '';
  16. c = getchar();
  17. }
  18. v *= p;
  19. }
  20. int n, m, a[MAXN], b[MAXN], f[MAXN], s[MAXN], t[MAXN], an, sm, T, z;
  21. int main() {
  22. int i, j = , a1, a2, e = ;
  23. read(n);
  24. for (int i = ; i <= n; i++) {
  25. read(a[i]);
  26. sm += a[i];
  27. }
  28. if (sm < n * - ) {
  29. cout << "NO" << endl;
  30. return ;
  31. }
  32. for (int i = ; i <= n; i++) {
  33. if (a[i] >= ) {
  34. f[i] = ;
  35. b[++z] = i;
  36. if (z >= ) {
  37. s[z] = b[z - ];
  38. t[z] = i;
  39. }
  40. }
  41. }
  42. for (int i = ; i <= z; i++) {
  43. a[b[i]] -= (i != ) + (i != z);
  44. }
  45. cout << "YES " << min(z + , n - ) << endl << n - << endl;
  46. for (int i = ; i <= n; i++) {
  47. if (a[i] == && !f[i]) {
  48. if (!e) {
  49. e = ;
  50. a[b[z]]--;
  51. s[++z] = i;
  52. t[z] = b[z - ];
  53. } else {
  54. for (; !a[b[j]]; j++);
  55. a[b[j]]--;
  56. s[++z] = i;
  57. t[z] = b[j];
  58. }
  59. }
  60. }
  61. for (int i = ; i <= n; i++) {
  62. cout << s[i] << " " << t[i] << endl;
  63. }
  64. }

G

把每条边当做一个点 搞最大权闭合子图即可

  1. //Netflow dumpling
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. typedef long long ll;
  5. const int MAXN = ;
  6. const int MAXM = ;
  7. const ll INF = ;
  8. ll Head[MAXN], cur[MAXN], lev[MAXN], to[MAXM << ], nxt[MAXM << ], ed, S, T;
  9. ll f[MAXM << ];
  10. inline void addedge(int u, int v, ll cap)
  11. {
  12. to[++ed] = v;
  13. nxt[ed] = Head[u];
  14. Head[u] = ed;
  15. f[ed] = cap;
  16. to[++ed] = u;
  17. nxt[ed] = Head[v];
  18. Head[v] = ed;
  19. f[ed] = ;
  20. return;
  21. }
  22. inline bool BFS()
  23. {
  24. int u;
  25. memset(lev, -, sizeof(lev));
  26. queue<int>q;
  27. lev[S] = ;
  28. q.push(S);
  29. while (q.size()) {
  30. u = q.front();
  31. q.pop();
  32. for (int i = Head[u]; i; i = nxt[i])
  33. if (f[i] && lev[to[i]] == -) {
  34. lev[to[i]] = lev[u] + ;
  35. q.push(to[i]);
  36. /*
  37. if (to[i] == T)
  38. {
  39. return 1;
  40. }
  41. magic one way optimize
  42. */
  43. }
  44. }
  45. memcpy(cur, Head, sizeof Head);
  46. return lev[T] != -;
  47. }
  48. inline ll DFS(int u, ll maxf)
  49. {
  50. if (u == T || !maxf) {
  51. return maxf;
  52. }
  53. ll cnt = ;
  54. for (ll &i = cur[u], tem; i; i = nxt[i])
  55. if (f[i] && lev[to[i]] == lev[u] + ) {
  56. tem = DFS(to[i], min(maxf, f[i]));
  57. maxf -= tem;
  58. f[i] -= tem;
  59. f[i ^ ] += tem;
  60. cnt += tem;
  61. if (!maxf) {
  62. break;
  63. }
  64. }
  65. if (!cnt) {
  66. lev[u] = -;
  67. }
  68. return cnt;
  69. }
  70. ll Dinic()
  71. {
  72. ll ans = ;
  73. while (BFS()) {
  74. ans += DFS(S, INF);
  75. }
  76. return ans;
  77. }
  78. void init(int SS, int TT)
  79. {
  80. memset(Head, , sizeof(Head));
  81. ed = ;
  82. S = SS;
  83. T = TT;
  84. return;
  85. }
  86. int main()
  87. {
  88. ios_base::sync_with_stdio();
  89. cin.tie();
  90. int n, m;
  91. ll u, v, c;
  92. cin >> n >> m;
  93. init(, n + m + );
  94. for (int i = ; i <= n; i++) {
  95. cin >> c;
  96. addedge(m + i, T, c);
  97. }
  98. ll summ = ;
  99. for (int i = ; i <= m; i++) {
  100. cin >> u >> v >> c;
  101. summ += c;
  102. addedge(S, i, c);
  103. addedge(i, m + u, INF);
  104. addedge(i, m + v, INF);
  105. }
  106. cout << summ - Dinic() << endl;
  107. return ;
  108. }

Codeforces 1082 毛毛虫图构造&最大权闭合子图的更多相关文章

  1. codeforces 1082G - Petya and Graph 最大权闭合子图 网络流

    题意: 让你选一些边,选边的前提是端点都被选了,求所有的边集中,边权和-点权和最大的一个. 题解: 对于每个边建一个点,然后就是裸的最大权闭合子图, 结果比赛的时候我的板子太丑,一直T,(不会当前弧优 ...

  2. 【洛谷P3410】拍照题解(最大权闭合子图总结)

    题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影.如果这一些人没带齐那么就不能拍照,小B也不会得到钱. 注意:带下属不是白带的 ...

  3. hdu 3879 hdu 3917 构造最大权闭合图 俩经典题

    hdu3879  base station : 各一个无向图,点的权是负的,边的权是正的.自己建一个子图,使得获利最大. 一看,就感觉按最大密度子图的构想:选了边那么连接的俩端点必需选,于是就以边做点 ...

  4. CodeForces 1082 G Petya and Graph 最大权闭合子图。

    题目传送门 题意:现在有一个图,选择一条边,会把边的2个顶点也选起来,最后会的到一个边的集合 和一个点的集合 , 求边的集合 - 点的集合最大是多少. 题解:裸的最大权闭合子图. 代码: #inclu ...

  5. bzoj 3232 圈地游戏 —— 01分数规划+最小割建图(最大权闭合子图)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 心烦意乱的时候调这道题真是...越调越气,就这样过了一晚上... 今天再认真看看,找出 ...

  6. 洛谷 P4174 [NOI2006]最大获利 && 洛谷 P2762 太空飞行计划问题 (最大权闭合子图 && 最小割输出任意一组方案)

    https://www.luogu.org/problemnew/show/P4174 最大权闭合子图的模板 每个通讯站建一个点,点权为-Pi:每个用户建一个点,点权为Ci,分别向Ai和Bi对应的点连 ...

  7. CF 103E Buying Sets 最大权闭合子图,匹配 难度:4

    http://codeforces.com/problemset/problem/103/E 这道题首先一看就很像是最大权闭合子图,但是我们可以认为现在有两种点,数字和集合点,我们需要消除数字点的影响 ...

  8. 【POJ 2987】Firing (最小割-最大权闭合子图)

    裁员 [问题描述] 在一个公司里,老板发现,手下的员工很多都不务正业,真正干事员工的没几个,于是老板决定大裁员,每开除一个人,同时要将其下属一并开除,如果该下属还有下属,照斩不误.给出每个人的贡献值和 ...

  9. Petya and Graph(最小割,最大权闭合子图)

    Petya and Graph http://codeforces.com/contest/1082/problem/G time limit per test 2 seconds memory li ...

随机推荐

  1. DRF视图-基类

    2个视图基类 REST framework 提供了众多的通用视图基类与扩展类,以简化视图的编写. 为了区分上面请求和响应的代码,我们再次创建一个新的子应用: python manage.py star ...

  2. PJzhang:如何缓解Mimikatz从Windows2008 R2内存中读取域控密码?

    猫宁!!! 参考: https://xz.aliyun.com/t/4180 https://www.anquanke.com/post/id/156299 https://www.cnblogs.c ...

  3. D3 GEO应用专题(一):绘制旋转的3D地球

    https://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all 雷达图 https://blog.csdn. ...

  4. PYTHON 100days学习笔记005:总结和练习

    目录 day005:总结和练习 1.寻找水仙花数 2.寻找"完美数" 3."百鸡百钱"问题 4.生成"斐波那契数列" 5.Craps赌博游戏 ...

  5. poj3122 Pie (二分)

    题目链接:https://vjudge.net/problem/POJ-3122 题意:有n块饼,m+1个人,将饼均分成m+1块,求每块最大的大小. 思路:水二分,显然每块的大小与可以给多少人吃具有单 ...

  6. [ZJOI2010]数字计数 题解

    题面 这道题是一道数位DP的模板题: 因为窝太蒟蒻了,所以不会递推,只会记忆化搜索: 首先,咋暴力咋来: 将一个数分解成一个数组,这样以后方便调用: 数位DP的技巧:(用1~b的答案)-(1~a的答案 ...

  7. PAT A1046 Shortest Distance (20 分)

    题目提交一直出现段错误,经过在网上搜索得知是数组溢出,故将数组设置的大一点 AC代码 #include <cstdio> #include <algorithm> #defin ...

  8. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  9. Ruby Rails学习中:有点内容的静态页面

    续上篇: 一. 有点内容的静态页面 rails new 命令创建了一个布局文件, 不过现在最好不用.我们重命名这个文件: $ mv app/views/layouts/application.html ...

  10. Django初步完成:登录、注册、退出

    python环境:python2.7 开发工具:pycharm 项目名称:mysite5 app名称:online settings:映射app路径 INSTALLED_APPS = [ 'djang ...