题意: 输入一个n,后面输入n行,每一行两个数a.b.你可以对a.b进行三种操作:+.-.* 你需要保证对每一行a.b选取一个操作得到一个结果 你要保证这n行每一个式子选取的操作之后得到的结果都不一样.如果找不到就输出impossible Sample Input 1 1 4 1 5 3 3 4 5 -1 -6 Sample Output 1 + 5 = 6 3 * 3 = 9 4 - 5 = -1 -1 - -6 = 5Sample Input 2 2 4 -4 2 -4 2 -4 2 -4…
#1393 : 网络流三·二分图多重匹配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 学校的秋季运动会即将开始,为了决定参赛人员,各个班又开始忙碌起来. 小Hi和小Ho作为班上的班干部,统计分配比赛选手的重任也自然交到了他们手上. 已知小Hi和小Ho所在的班级一共有N名学生(包含小Hi和小Ho),编号依次为1..N. 运动会一共有M项不同的比赛,编号为1..M.第i项比赛每个班需要派出m[i]名选手参加. 根据小Hi和小Ho的统计,编号为i的学生表示最多同时参加…
[BZOJ4429][Nwerc2015] Elementary Math小学数学 Description Ellen给她的学生教小学数学.期末考试已经来临了.考试有n个题目,每一个题目学生们都要对一对数字进行加(+),减(-),乘(*)运算. Ellen已经选好了n对数.剩下的是决定学生们应该对每对数执行什么运算.为了不让学生们感到厌烦,Ellen想确保n个正确答案都不一样. 请帮助Ellen自动化地构建考试. Input 输入包括: 第一行是一个整数n(1<=n<=2500),表示共有n道…
http://acm.bnu.edu.cn/v3/external/gym/101485.pdf #include<bits/stdc++.h> using namespace std; typedef long long ll; ; struct node { ll x; ll y; int id; }a[maxn]; int n; ll b[maxn*]; int cnt; struct Edge { int to; int nxt; int w; }e[maxn*]; int tot;…
[题目链接] http://codeforces.com/gym/101128/attachments [题目大意] 给出一张地图,分为高地和低地,高低地的交界线上划有红线, 现在要开小车跨过每条红线,当改变小车开的地形的时候,比如从高地开往低地, 就需要多耗油A单位,也可以花B的耗油量抬高地形或者降低地形, 问跨越所有红线所用的最少耗油量 [题解] 我们发现对于每条红线,我们需要花A去跨越地形或者花B去抬高或者降低地形, 所以我们将不同地形划分为两个集合,构成二分图, 红线左右块连流量为A的边…
The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22539   Accepted: 10072 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering p…
http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #include<cstdio> #include<cstring> #define maxm 410 using namespace std; int p,n; int master[maxm]; int linking[maxm][maxm]; int has[maxm]; int sol…
题目大意: 班级有$N$名学生,运动会有$M$项不同的比赛,第$i$项比赛每个班需要派出$m_i$名选手参加,编号为i的学生最多同时参加给定的$b_i$项比赛中的任意$a_i$项比赛.根据统计的结果,想知道能否有一个合适的安排,同时满足这些条件. 思路: 最大流求二分图多重匹配.建立超级源点$S$.超级汇点$T$.对于每一个学生$s_i$,连一条从$S$到$s_i$的容量为$a_i$的边.对于每一项比赛$c_i$,连一条从$c_i$到$T$的容量为$m_i$的边.对于每一个学生$s_i$和其所擅…
把'I'拆成容量为1一条边,一个入点一个出点,入点和相邻的'W'连一条容量为1的边,出点和相邻的'N'连一条容量为1,所有的'W'和源点连一条容量为1边,所有的'N'和汇点连一条容量为1的边,表示只能用一次.一发网络流就过了. 写了4000B+的贪心,然并卵 #include<bits/stdc++.h> using namespace std; const int INF = 0x3fffffff; ; #define PB push_back struct Edge { int from,…
题目链接:http://hihocoder.com/problemset/problem/1393 把项目到汇点的边权值都加起来,跑完最大流后看是否最大流=权值和.如果等于权值和说明所有项目都有足够的人参与. #include <bits/stdc++.h> using namespace std; typedef struct Edge { int u, v, w, next; }Edge; const int inf = 0x7f7f7f7f; ; ; int cnt, dhead[max…