D唐纳德和他的数学老师(华师网络赛)(二分匹配,最大流)
Time limit per test: 1.0 seconds
Memory limit: 256 megabytes
唐纳德是一个数学天才。有一天,他的数学老师决定为难一下他。他跟唐纳德说:「现在我们来玩一个游戏。这个游戏总共 n轮,每一轮我都会给你一个数(第 i 轮给出的数是 ai)。你每次要回答一个数,是我给出的这个数的质因数,并且你说出的数不能重复。」
因为数学老师是刻意为难,所以这个游戏很有可能不可能进行到最后。但是聪明的数学老师早就已经知道这个游戏最多能进行几轮了。现在他把问题抛给了你,想看看你知不知道。
注意,1 不是质数。

Input
输入具有如下形式:
na1 a2 … an
第一行一个整数 n (1≤n≤3 000)。
第二行 n 个整数用空格隔开,a1,a2,…,an (2≤ai≤106)。
Output
输出游戏最多能进行几轮。
Examples
3
7 6 3
3
5
2 2 2 2 2
1
题意:
现在有一群数字,按顺序给出,对于每一个数字,回答一个素数因子,这次回答的素数因子下次不能再用,如果没有可以回答的素数因子,游戏结束。问游戏最多进行几轮。
思路:
1,匈牙利二分匹配是可以一个一个的加,满足顺序性。
2,网络流算法具有无序性,所以可以二分加最大流。
注意:
尽量少使用memset。这里代码用了时间戳,即代码里的“fa”。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=;
const int maxm=;
int p[maxn],b[],c[maxn],num[maxn],cnt,tot,ans;
int n;
void prime()
{
p[]=;
for(int i=;i<=;i++)
if(!p[i]){
b[++tot]=i;//素数
c[i]=tot;
for(int j=i+i;j<=;j+=i) p[j]=;
}
}
int Laxt[maxn],Next[maxm],To[maxm];
int linker[maxm],vis[maxn];
void add(int u,int v)
{
Next[++cnt]=Laxt[u];
Laxt[u]=cnt;
To[cnt]=v;
}
bool find(int u,int fa)
{ for(int i=Laxt[u];i;i=Next[i]){
int v=To[i];
if(vis[v]==fa) continue;
vis[v]=fa;
if(!linker[v]||find(linker[v],fa)){
linker[v]=u;
return true;
}
}
return false;
}
int main()
{
prime();
int i,j,x;
scanf("%d",&n);
for(i=;i<=n;i++){
scanf("%d",&x);
for(j=;j<=tot;j++){
if(x%b[j]==){
add(i,j);
}
}
if(!find(i,i)) break;
}
printf("%d\n",i-);
return ;
}
D唐纳德和他的数学老师(华师网络赛)(二分匹配,最大流)的更多相关文章
- A唐纳德先生和假骰子(华师网络赛)
Time limit per test: 1.0 seconds Memory limit: 256 megabytes 在进行某些桌游,例如 UNO 或者麻将的时候,常常会需要随机决定从谁开始.骰子 ...
- G 唐纳德与子串(easy)(华师网络赛---字符串,后缀数组)(丧心病狂的用后缀自动机A了一发Easy)
Time limit per test: 1.0 seconds Memory limit: 256 megabytes 子串的定义是在一个字符串中连续出现的一段字符.这里,我们使用 s[l…r] 来 ...
- E比昨天更多的棒棒糖(Easy+Hrad)(华师网络赛)(DP||母函数||背包优化)
Time limit per test: 2.0 seconds Memory limit: 512 megabytes 唐纳德先生的某女性朋友最近与唐纳德先生同居.该女性朋友携带一 baby.该 b ...
- C易位构词(华师网络赛)(错排)
Time limit per test: 2.0 seconds Memory limit: 256 megabytes 易位构词 (anagram),指将一个单词中的字母重新排列,原单词中的每个字母 ...
- 20145226夏艺华《网络对抗》第一次实验拓展:shellcode注入+return-to-libc
20145226夏艺华<网络对抗>第一次实验拓展:shellcode注入+return-to-libc shellcode注入实践 编写shellcode 编写shellcode已经在之前 ...
- 保姆级别学生党安装Clion IDE(面向华师同学)
保姆级别学生党安装Clion IDE(面向华师同学) 界面UI 废话不多说,直接上图 具备功能 UI美观 (下面会介绍) 基础的代码编写能力 大容量的IDE插件 (下面会介绍) 代码补全,以及搭配Ki ...
- 时间复杂度---我又要想起初中数学老师的脸了xxxxx
时间复杂度: 常用的时间复杂度有:常数级,对数级,线性级 线性对数级 平方级,立方级别,多项式级别,指数级别,阶乘级别 这里我们主要探讨对数级,线性级,平方级,指数级---为什么不讨论其他的?别的我也 ...
- hihoCoder 1584 Bounce 【数学规律】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1584 : Bounce 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 For Argo, it is very interesting watching a cir ...
- 【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现
当今K8s独霸天下之时,咱们站在更高的角度,好好的看看K8s网络是以什么理念构筑的.以及一个容器集群的好保姆,是如何分别照顾 南北流量和东西流量的. 一.简单介绍下Kubernetes 略..容器集群 ...
随机推荐
- web安全之SQL注入---第五章 如何预防SQL注入 ?
5-1严格检查输入变量的类型和格式总结:其实就是做一些判断正则表达式:验证密码:/^[a-zA-Z]{6,}$/5-1严格检查输入变量的类型和格式总结:其实就是做一些判断正则表达式:验证密码:/^[a ...
- F - 数论
F - 数论 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- (比赛)A - Simple String Problem
A - Simple String Problem Time Limit:10000MS Memory Limit:65536KB 64bit IO Format:%lld & ...
- iOS 添加震动效果
开发过程中,有时候会碰到点击按钮或者某个动画会配合震动效果:下面介绍iOS开发过程中的震动添加: 导入:#import <AudioToolbox/AudioToolbox.h> 在需要出 ...
- python 捕获异常详细信息
import os import sys import traceback BasePath = os.path.dirname(os.getcwd()) sys.path.append(BasePa ...
- 短时程突触可塑性(short-term synaptic plasticity)
介绍 神经元的突触可塑性一般被认为是大脑学习与记忆的分子生物学机制,它是指突触传递效率增强或减弱的变化现象.若这种变化只持续数十毫秒到几分,便称之为短时程突触可塑性,其中效率增强与减弱分别叫做短时程增 ...
- 培训笔记——Linux基本命令
在介绍命令之前,更重要的要先介绍一下快速输入命令的方法. 如果你能记住一些常用命令,毫无疑问,通过命令的操作方式比通过鼠标的操作方式要快. 但是有一些命令或是命令用到的参数如文件名特别复杂特别长,这时 ...
- 动态创建selectjs 操作select和option
1.动态创建select function createSelect(){ var mySelect = document.createElement("select"); myS ...
- 【leetcode刷题笔记】3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- python学习笔记20160413
1. type(val) #查看val的类型. 2. 出现错误的时候, 读懂错误信息.3. raw_input('xxx') #读取用户输入都是string类型数据.4. ValueError: in ...