【不可能的任务24/200】洛谷1640 bzoj1854游戏 匈牙利就是又短又快

bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个“大牛分站”,就转回洛谷做题了

水题先行,一道傻逼匈牙利

其实本来的思路是搜索然后发现写出来类似于匈牙利(⊙o⊙)

(匈牙利的复杂度惊人,1e6秒过)

 1 #include <cstdio>
 2 bool b[3000001];
 3 int c[3000001],fir[3000001],to[3000001],nex[3000001];
 4 int N,n,p,q;
 5 void add(int p,int q)
 6 {
 7     nex[++N]=fir[p];to[N]=q;fir[p]=N;
 8 }
 9 bool find(int k)
10 {
11     b[k]=true;
12     for(int i=fir[k];i;i=nex[i])
13     if(!c[to[i]]) {    c[to[i]]=k;b[k]=false;return true;}
14     else
15     if(!b[c[to[i]]] && find(c[to[i]]))
16     {
17         c[to[i]]=k;b[k]=false;return true;
18     }
19     b[k]=false;
20     return false;
21 }
22 int main()
23 {
24     scanf("%d",&n);
25     for(int i=1;i<=n;i++)
26     {
27         scanf("%d%d",&p,&q);
28         if(p<=n)    add(p,i+n);
29         if(q<=n)    add(q,i+n);
30     }
31     for(int i=1;i<=n;i++)
32         if(!find(i))
33         {
34             printf("%d",i-1);
35             return 0;
36         }
37     printf("%d",n);
38     return 0;
39 }

现在感觉洛谷的界面比bzoj不知道友好到哪里去了

时间: 2024-07-29 05:47:38

【不可能的任务24/200】洛谷1640 bzoj1854游戏 匈牙利就是又短又快的相关文章

洛谷P1199 三国游戏 博弈论 数学

洛谷P1199 三国游戏博弈论 数学 这道题 其实 人是必胜的 能取到的最大值 为 每行第二大值中的最大值 为什么呢 假使第一次我们取到了我们心中的那个答案的所在行 那么接着电脑会取 这一行最大值的对应行 那么我们来分析一下电脑取的那个数在他取的那行的特点 首先我们假设其不是最大值,因为矩阵中任意两个数不相同 所以也就是说还有个数比他大,然后就是说电脑取的第二大或者第n大值就已经比我们取的第一大值要大了,说明我们取的行并不是每行第二大值中的最大值所在的行2.也就是说这个数必定为该行中的最大值 那

洛谷P1080 国王游戏 高精度 贪心 数学推公式

洛谷P1080 国王游戏        数学推公式      高精度    贪心 然而这并不是我打出来的,抄题解... 将左手与右手的乘积从小到大排序,然后计算求最大值即可.(需要高精度) 证明: 1)知道,如果相邻的两个人交换位置,只会影响到这两个人的值,不会影响他人 2)假设相邻的两个人i, i + 1.设A[i] B[i] <= A[i + 1] B[i + 1],i之前所有人的左手乘积为S. 则,ans1 = max{S / B[i], S * A[i] / B[i + 1]} 若交换

洛谷1558 色板游戏 线段树

我先立个Flag 我,这几天,要过1W道线段树题. 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, ... L.现在色板上只有一个颜色,老师告诉阿宝在色板上只能做两件事:1. "C A B C" 指在A到 B 号方格中涂上颜色 C.2. "P A B" 指老师的提问:A到 B号方格中有几种颜色.学校的颜料盒中一共有 T 种颜料.为简便起见,我

网络流24题 洛谷 2756 飞行员配对方案

代码风格迥异 -- 1 #include<bits/stdc++.h> 2 3 const int N=1000+5; 4 5 using namespace std; 6 7 int link[N],g[N][N],ansx[N]; 8 int n,m,u,v,ans; 9 bool vis[N]; 10 11 inline void read( int&x ) { 12 int f=1;x=0;char c=getchar(); 13 while(c>'9'||c<'0

网络流24题 洛谷 3355 骑士共存

转换成最小割: #include <bits/stdc++.h> using namespace std ; const int mx [ 9 ] = { 2 , 2 , -2 , -2 , -1 , 1 , -1 , 1 } ; const int my [ 9 ] = { -1 , 1 , -1 , 1 , 2 , 2 , -2 , -2 } ; const int N = 100000 + 10 , inf = 1e8 + 7 ; queue < int > q ; int

网络流24题 洛谷 4014 分配问题

代码风格迥异 -- #include<bits/stdc++.h> const int N=100+10,M=100000+10; using namespace std; queue<int> q; int head[M],dis[M],flt[M],to[M],nxt[M],cn=1; int c[N],pree[N],pred[N],a[N][N]; int maxcost,mincost,src,sink,tmp,n,x; bool vis[N]; void create(

洛谷P1199 三国游戏

题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之间有一个"默契值",表示若此两位武将作为一对组合作战时,该组合的威力有多大.游戏开始前,所有武将都是自由的(称为自由武将,一旦某个自由武将被选中作为某方军队的一员,那么他就不再是自由武将了),换句话说,所谓的自由武将不属于任何一方. 游戏开始,小涵和计算机要从自由武将中挑选武将组成自己的军

洛谷P1070 道路游戏

P1070 道路游戏 题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 n 个机器人工厂编号为1~n,因为马路是环形的,所以第 n 个机器人工厂和第 1 个机器人工厂是由一段马路连接在一起的.小新将连接机器人工厂的这 n 段马路也编号为 1~n,并规定第 i 段马路连接第 i 个机器人工厂和第 i+1 个机器人工厂(1≤i≤n-1),第 n 段马路连接第 n 个机器

洛谷——P1965 转圈游戏

https://www.luogu.org/problem/show?pid=1965 题目描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推.游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n − m号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙