考完试的晚上,打了场codeforces,主要感觉由于睡眠不够,最后差了点劲啊,C题基本上都过了,但忙中出错最后把数组调小易于debug后再提交又忘记改回来了,看到Runtime Error自己竟没反应过来,以为是超时了2333。

A题、B题都很水,略过。

C题的题意是给你n个点m条边,要求找出两个集合来划分顶点,使得每条边的两个顶点分别落于这两个集合中。
一开始,我想的是对于每条边的两个顶点,如果还没填就去更新它和它的相邻顶点,但是却有Bug。然后就想到dfs,死命地去更新一个点,紧接着是它的相邻点。早上起来把当时交的那个RE的代码数组调大就过了啊啊啊悲伤。

//
//  main.cpp
//  codeforces 360
//
//  Created by 赵奕 on 16/6/30.
//  Copyright © 2016年 赵奕. All rights reserved.
//#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
int ans,tot,n,m,k,x[1000010],y[1000010],a[1000010];
bool b[1000010];
using namespace std;
vector<int> v[1000010];
bool work(int k)
{int i,j;for (i = 0; i < v[k].size(); ++i)//先更新相邻点的信息{j = v[k][i];if (a[j]&&a[j]==a[k])return false;a[j] = -1*a[k];}b[k] = true;for (i = 0; i < v[k].size(); ++i)//再对还没有访问过的相邻点dfs{j = v[k][i];if (!b[j]&&!work(j))return false;}return true;
}
int main()
{int i,j,l;memset(a,0,sizeof(a));memset(b,false,sizeof(b));cin >> n >> m;for (i = 1; i <= n; ++i)v[i].clear();for (i = 1; i <= m; ++i){scanf("%d%d",&x[i],&y[i]);v[x[i]].push_back(y[i]);v[y[i]].push_back(x[i]);}for (i = 1; i <= m; ++i){if (!b[x[i]])//如果x结点尚未访问,dfs,显然y就不需要了{a[x[i]] = 1;if (!work(x[i])){printf("-1\n");return 0;}}}int tot1,tot2;tot1 = tot2 = 0;for (i = 1; i <= n; ++i){tot1+=(a[i]==1);tot2+=(a[i]==-1);}cout << tot1 << endl;for (i = 1; i <= n; ++i)if (a[i]==1){cout << i << " ";}cout << endl;cout << tot2 << endl;for (i = 1; i <= n; ++i)if (a[i]==-1){cout << i << " ";}cout << endl;return 0;
}

D
一道数论题,中国剩余定理(孙子定理),暂时不想接触数论,先放这儿

E
DP
有n个硬币,然后每个有价值ai,要求用这之间的部分构成总和为k的硬币,同时用来构成其它币值,能构成哪些。(可能有很多构成k的方法)
直接贴上tutorial,写的很清晰。

Let dpi, j, k be true if and only if there exists a subset of the first i coins with sum j, that has a subset with sum k. There are 3 cases to handle:
The i-th coin is not used in the subsets.
The i-th coin is used in the subset to make j, but it’s not used in the subset of this subset.
The i-th coin is used in both subsets.
So dpi, j, k is equal to dpi - 1, j, k OR dpi - 1, j - ci, k OR dpi - 1, j - ci, k - ci.

//
//  main.cpp
//  Codeforces #360 E DP
//
//  Created by 赵奕 on 16/7/8.
//  Copyright © 2016年 赵奕. All rights reserved.
//#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
int ans,tot,n,m,a[510],sum[510];
bool f[510][510][510];
using namespace std;
int main()
{int i,j,k;cin >> n >> m;for (i = 1; i <= n; ++i)cin >> a[i];memset(f,false,sizeof(f));sum[0] = 0;for (i = 1; i <= n; ++i)sum[i] = sum[i-1]+a[i];for (i = 0; i <= n; ++i)for (j = 0; j <= min(sum[i],m); ++j)f[i][j][0] = true;for (i = 1; i <= n; ++i)for (j = 0; j <= m; ++j)for (k = 0; k <= j; ++k){f[i][j][k] = f[i-1][j][k];if (j>=a[i]){f[i][j][k] |= f[i-1][j-a[i]][k];if (k >= a[i])f[i][j][k] |= f[i-1][j-a[i]][k-a[i]];}}int ans = 0;for (i = 0; i <= m; ++i)ans+=(f[n][m][i]==true);cout << ans << endl;for (i = 0; i <= m; ++i)if (f[n][m][i])cout << i << " ";return 0;
}

Codeforces Round #360(div2)相关推荐

  1. codeforces Round#429 (Div2)

    2017-08-20 10:00:37 writer:pprp 用头文件#include <bits/stdc++.h>很方便 A. Generous Kefa codeforces 84 ...

  2. Codeforces Round#310 div2

    C题:这题说的是套娃,如果做题的时候知道是套娃,那就好理解多了 规则1:套娃A可以放到套娃B里面,当且仅当套娃B没有放在其他套娃里面 规则2:套娃A放在套娃B里面,且套娃B没有放在其他套娃里面,那么可 ...

  3. Codeforces Round #359 div2

    Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...

  4. Codeforces Round #360 (Div. 2) C. NP-Hard Problem 水题

    C. NP-Hard Problem 题目连接: http://www.codeforces.com/contest/688/problem/C Description Recently, Pari ...

  5. Codeforces Round 361 div2

    雪崩,全错掉了GG.前两道题相对之前的难度大一点啊,不过A题有个循环应该是从0开始而不是1开始这样的低级错误不应该犯.B题差不多是一个BFS,但是我当时始终绕着最短路径写来写去,一直各种TLE与WA. ...

  6. codeforces round 416 div2补题

    第一题,水题 A. Vladik and Courtes #include<bits/stdc++.h> using namespace std; int main() {long lon ...

  7. codeforces round 421 div2 补题 CF 820 A-E

    A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef lon ...

  8. codeforces round #576 div2 D Welfare State(线段树)[单点修改+区间修改]

    题意:有一些数字,以及一些操作.操作一是单点修改,输入1 b c,将位置b改成c,操作二是输入2 a,将不大于a的数全部改成a.求更改完毕后的数. tag的运用:tag是对被覆盖区间上加一个标记,那么 ...

  9. codeforces round 418 div2 补题 CF 814 A-E

    A An abandoned sentiment from past 水题 #include<bits/stdc++.h>using namespace std;int a[300],b[ ...

最新文章

  1. 用c语言 编写桌面应用程序,谁能帮我用C语言编写“动态桌面啊”!!!急呀!!!...
  2. 因女友的一句话,他做了个10亿美元的App!网友评:万事俱备,就差个女友了~...
  3. ArcGIS10.2 网络分析之路径分析(二)---构建网络数据集
  4. 戴尔塔式服务器各型号,戴尔_PowerEdge T440_塔式服务器_网络存储服务器_服务器 | Dell 中国大陆...
  5. mysql delete exists用法_自学MySQL第五天
  6. 从内容云到一云多屏 云计算助力传统媒体转型
  7. 3.注释(代码的整洁之道)
  8. 检查Red Hat JBoss BRMS部署架构的规则和事件(第二部分)
  9. AUTOSAR从入门到精通100讲(九)-汽车Tbox
  10. mysql 查询排序位置_MySQL-基础查询与排序
  11. 老板看似表面风光,可能还没有员工赚得多
  12. 协同过滤工具源码下载
  13. jQuery插件开发精品教程,让你的jQuery提升一个台阶
  14. python实现sm3加密算法
  15. 高性能跳频抗干扰宽带自组网电台
  16. 抢红包算法 c++_“抠抠族”的出行利器,斤斤计较的几何C为了节能果然够拼
  17. Win10安装cuda、cudnn检测是否安装成功
  18. 看服务器被入侵如何排查?如何防止服务器被入侵?
  19. 学习下win7任务栏个性化设置!
  20. ViewPager 系列之 打造一个通用的 ViewPager

热门文章

  1. 手中无剑,心中有剑,无剑胜有剑
  2. 侠客行:一技压身,天下行走
  3. java变量重名问题
  4. 不懂算法,还想进大厂?做梦吧(转载自微信公众号 -- 大飞码字)
  5. 反幂法matlab程序,数值分析幂法和反幂法.doc
  6. 小鹏G3 XPilot ---APA自动泊车系统
  7. Qt5学习 模仿qq音乐播放器样式(2)——点击动画效果+歌词颜色变换展示
  8. 一个barcode 多个 sku号_互联网洪流之下:美的已悄悄变成一个科技集团|36氪专访...
  9. 神经网络中的梯度爆炸
  10. 使用 dotnet *.dll启动项目,修改产品模式为开发模式