「BJOI2012」连连看
2024-09-30 01:58:07
题目链接
\(Solution\)
我们首先进行拆点操作,将每个点都拆成\(x\)和\(y\),将满足条件的两个点连起来就好了(记得要将\(x\)连\(y'\)的同时要将\(y\)联向\(x'\))
code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9')
x=x*10+c-'0',c=getchar();
return x*f;
}
struct node{
int to,next,v,w;
}a[1000001];
int dis[10001],f[10001],pre[10001],fa[10001],s,t,n,head[10001],cnt,x,y,z,c;
void add(int x,int y,int c,int v){
a[++cnt].to=y;
a[cnt].next=head[x];
a[cnt].v=c;
a[cnt].w=v;
head[x]=cnt;
}
queue < int > q;
int spfa(){
q.push(s);
memset(dis,127,sizeof(dis));
memset(f,0,sizeof(f));
f[s]=1,dis[s]=0;
int inf=dis[s+1];
while(!q.empty()){
int now=q.front();
q.pop();
f[now]=0;
for(int i=head[now];i;i=a[i].next){
int v=a[i].to;
if(dis[v]>dis[now]+a[i].w&&a[i].v){
dis[v]=dis[now]+a[i].w,pre[v]=i,fa[v]=now;
if(!f[v])
f[v]=1,q.push(v);
}
}
}
if(dis[t]!=inf)
return 1;
return 0;
}
int ans1,ans;
void anser(){
while(spfa()){
int minx=2147483647;
for(int i=t;i!=s;i=fa[i])
minx=min(minx,a[pre[i]].v);
ans+=minx,ans1+=dis[t]*minx;
for(int i=t;i!=s;i=fa[i])
a[pre[i]].v-=minx,(pre[i]%2)?a[pre[i]+1].v+=minx:a[pre[i]-1].v+=minx;
}
}
int main(){
int A=read(),B=read();
n=B,s=0,t=B+1;
for(int i=A;i<=B;i++)
add(s,i,1,0),add(i,s,0,0);
for(int i=A+B;i<=B+B;i++)
add(i,t,1,0),add(t,i,0,0);
for(int i=A;i<=B;i++)
for(int j=A;j<i;j++){
int l=i*i-j*j,p=sqrt(l);
if(p*p==l&&__gcd(j,p)==1){
add(i,j+B,1,-i-j),add(j+B,i,0,i+j);
add(j,i+B,1,-i-j),add(i+B,j,0,i+j);
}
}
anser();
printf("%d %d",ans/2,-1*ans1/2);
}
最新文章
- Network
- ubuntu vps 安装 jdk
- 匈牙利算法与KM算法
- fcntl函数
- Activity生命周期 onCreate onResume onStop onPause (转)
- MYSQL select时锁定记录问题
- 更靠谱的js判断浏览器及其版本
- OpenJDK和Sun/OracleJDK 区别 与联系
- 【转】数据库分页Java实现
- Unity3D环境GLSL shaders书面 — 固体参数
- jquery mobile扁平化设计样式--Jquery mobile Flat UI介绍
- GridView等表格模板列绑定数据的方法
- PHP7链接MySQL
- NBIoT三种部署方式【转】
- 把Catalina的字符串格式转化为日期格式
- spring boot(七)mybatis多数据源解决方案
- elk之elasticsearch安装
- jvm运行机制和volatile关键字详解
- python下载安装搭建
- 使用 Laravel 数据填充生成 中文 测试数据
热门文章
- java成神之——文件IO
- in not in 和 null , in 判断范围中可以包含null,而not in判断不能包括null
- Swift 添加自定义响应事件
- 【整理】Android中的gravity和layout_gravity区别
- windows 共存多个位数不同的jdk时,eclipse的报错对应措施
- java Web JSTL介绍及基本应用
- PHP网站
- POJ 3169 C - Layout
- mysql 纸 mysql_fetch_array OR mysql_fetch_assoc OR mysql_fetch_row
- 70个HR面试题