当前位置: 首页 > 编程日记 > 正文

FCS省选模拟赛 Day5

传送门

Solution


Code 

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return x*f;
}
const int inf=0x3f3f3f3f,MN=105,T=235,S=0,TT=245;
int n,m,k,nx[MN],ny[MN],ans;
bool mp[MN][MN];
int d[TT],q[TT],top;
struct edge{int to,w,nex;}e[MN*MN*2];int hr[TT],cur[TT],en=1;
inline void ins(int f,int t,int w)
{e[++en]=(edge){t,w,hr[f]};hr[f]=en;e[++en]=(edge){f,0,hr[t]};hr[t]=en;
}
bool bfs(){memset(d,0,sizeof d);register int i,j;for(d[q[top=i=1]=S]=1;i<=top;i++)for(j=hr[q[i]];j;j=e[j].nex)if(e[j].w&&!d[e[j].to])d[q[++top]=e[j].to]=d[q[i]]+1;return d[T];
}
int dfs(int x,int f){if(x==T) return f;int used=0;for(int &i=cur[x];i;i=e[i].nex)if(e[i].w&&d[e[i].to]==d[x]+1){int w=dfs(e[i].to,min(e[i].w,f-used));used+=w;e[i].w-=w;e[i^1].w+=w;if(used==f) return used;}return d[x]=-1,used;
}
inline void dinic()
{while(bfs()){memcpy(cur,hr,sizeof cur);ans-=dfs(S,inf);}
}
int main()
{register int i,j,x,y;n=read();m=read();k=read();for(i=1;i<=n;++i) nx[i]=m-read();for(i=1;i<=m;++i) ny[i]=n-read();for(i=1;i<=k;++i) x=read(),y=read(),--nx[x],--ny[y],mp[x][y]=true;for(i=1;i<=n;++i) if(nx[i]<0) return 0*puts("IIllIIll1!");for(i=1;i<=m;++i) if(ny[i]<0) return 0*puts("IIllIIll1!");for(i=1;i<=n;++i) ins(S,i,nx[i]);for(i=1;i<=m;++i) ins(i+MN,T,ny[i]);for(i=1;i<=n;++i)for(j=1;j<=m;++j) if(!mp[i][j]) ins(i,j+MN,1);ans=n*m-k;dinic();return 0*printf("%d\n",ans);
}


/*
rongchi : f_n=d_n-a_n a_n:num of n's factor that is not QQn
\Sum d_i easy = \sum (N/i)
\sum a_n =\sum mu[i]^2 * (n/i)
mobi : \sum mu[i]^2 = \sum mu[i]*N/(i^2)
*/
#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return x*f;
}
const int MN=35000;
ll mu[MN],prime[MN],tot;
bool mk[MN]; 
inline void init()
{mu[1]=1;register int i,j;for(i=2;i<MN;++i){if(!mk[i]){prime[++tot]=i;mu[i]=-1;}for(j=1;j<=tot&&i*prime[j]<MN;++j){mk[i*prime[j]]=true;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}else mu[i*prime[j]]=-mu[i];}}
}
ll get_d(int N)
{ll ans=0;register int l=1,r;for(;l<=N;l=r+1){r=N/(N/l);ans+=1ll*(N/l)*(r-l+1);}return ans;
}
ll Pre(int N)
{register int i;ll ans=0;for(i=1;i*i<=N;++i) ans+=1ll*mu[i]*(N/i/i);return ans;
}
ll get_a(int N)
{register int l=1,r;ll ans=0;for(;l<=N;l=r+1){r=N/(N/l);ans+=1ll*(Pre(r)-Pre(l-1))*(N/l);}return ans;
}
ll get(int N)
{if(!N) return 0ll;return get_d(N)-get_a(N);
}
int main()
{ll L,R;init();L=read(),R=read();printf("%lld\n",get(R)-get(L-1));
}


/*
后缀自动机+线段树合并
对Fail树进行dfs
每个点的level应该是祖先中满足出现次数大于1的最大lev+1
如果没有,level等于祖先中最大的lev
判断出现次数,用线段树区间求和
为什么实现是每个节点只需考虑它的最大len?
如果有小的len,它每次出现时必然伴随最大的len一同出现,所以不影响
2019/3/20 by pac
*/
#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
const int MN=2e5+5,MX=4e5+5,MS=1e7+5;
char s[MN+5];
int len;
class Seg
{int ls[MS],rs[MS],v[MS],root[MX],tot;void Md(int &x,int l,int r,int a,int ad){if(!x) x=++tot;if(l==r){v[x]+=ad;return;}int mid=(l+r)>>1;if(a<=mid) Md(ls[x],l,mid,a,ad);else Md(rs[x],mid+1,r,a,ad);v[x]=v[ls[x]]+v[rs[x]];}int Qy(int x,int l,int r,int a,int b){if(!x) return 0;if(l==a&&r==b){return v[x];}int mid=(l+r)>>1;if(b<=mid) return Qy(ls[x],l,mid,a,b);if(a>mid) return Qy(rs[x],mid+1,r,a,b);return Qy(ls[x],l,mid,a,mid)+Qy(rs[x],mid+1,r,mid+1,b);}int Merge(int x,int y,int l,int r){if(!x||!y) return x|y;int o=++tot;v[o]=v[x]+v[y];int mid=(l+r)>>1;ls[o]=Merge(ls[x],ls[y],l,mid);rs[o]=Merge(rs[x],rs[y],mid+1,r);return o;}public:void md(int x,int k){Md(root[x],1,len,k,1);}bool qy(int x,int l,int r){return Qy(root[x],1,len,l,r)>=2;}int merge(int x,int y){root[x]=Merge(root[x],root[y],1,len);}
}T;
class SAM
{int c[MX][26],fa[MX],step[MX],pos[MX];int last,cnt,n;int ans=0,lev[MX];struct ed{int to,nex;}e[MX<<1];int en,hr[MX];void ins(int x,int y){e[++en]=(ed){y,hr[x]};hr[x]=en;}void pre_dfs(int x){register int i;for(i=hr[x];i;i=e[i].nex)pre_dfs(e[i].to),pos[x]=max(pos[x],pos[e[i].to]),T.merge(x,e[i].to);}void dfs(int x,int mx){if(x!=1&&(T.qy(mx,pos[x]-step[x]+step[mx],pos[x])||step[x]==1)) lev[x]=lev[mx]+1,mx=x;else lev[x]=lev[mx];register int i;for(i=hr[x];i;i=e[i].nex) dfs(e[i].to,mx);ans=max(ans,lev[x]);}public:inline void init(){cnt=last=1;n=0;for(int i=1;i<=n<<1;++i)memset(c[i],0,sizeof c[i]),lev[i]=step[i]=fa[i]=0;}void Insert(int x){int p=last,np=++cnt;step[np]=step[p]+1;T.md(np,pos[np]=++n);for(;p&&!c[p][x];p=fa[p]) c[p][x]=np;if(!p) fa[np]=1;else {int q=c[p][x];if(step[q]==step[p]+1) fa[np]=q;else {int nq=++cnt;step[nq]=step[p]+1;memcpy(c[nq],c[q],sizeof c[q]);fa[nq]=fa[q];fa[np]=fa[q]=nq;for(;c[p][x]==q;p=fa[p]) c[p][x]=nq;}    }last=np;}void solve(){register int i;for(i=2;i<=cnt;++i) if(fa[i]) ins(fa[i],i);pre_dfs(1);dfs(1,1);printf("%d\n",ans);}
}sam;
int main()
{scanf("%s",s+1);len=strlen(s+1);sam.init();register int i;for(i=1;i<=len;++i) sam.Insert(s[i]-'a');sam.solve();return 0;
}



Blog来自PaperCloud,未经允许,请勿转载,TKS!

转载于:https://www.cnblogs.com/PaperCloud/p/FCS_noi2019_mn_d5.html

相关文章:

python中的单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中&#xff0c;某个类只能出现一个实例时&#xff0c;单例对象就能派上用场。 比如&#xff0c;某个服务器程序的…

JavaScript 数据类型转换

1. typeof 操作符 使用typeof操作符来检测变量的数据类型。 使用方式&#xff1a;typeof 变量名 或者 typeof(变量名) 返回结果&#xff1a; number、string、boolean、object、undefined、function typeof {} // 返回object typeof [] // 返回object typeof null // 返回o…

Cisco asa 5510升级IOS和ASDM

Cisco asa <?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" />5510升级IOS和ASDMshow version 查看当前运行的系统信息&#xff0c;包括启动文件&#xff08;即IOS)等 show boot 查看当…

Angular 服务

服务的概念 服务是在多个“互相不知道”的类之间共享信息的好办法。—— 官方文档 可以理解为组件中需要的数据源是由服务提供的&#xff0c;也可以理解为组件类中的方法通过调用服务中的方法向服务器请求数据。 Injectable() 服务 服务类需要导入Injectable符号并需要加上Inj…

[Linux] 029 脚本安装包

1. 脚本安装包 脚本安装包并不是独立的软件包类型&#xff0c;常见安装的是源码包是人为把安装过程写成了自动安装的脚本&#xff0c;只要执行脚本&#xff0c;定义简单的参数&#xff0c;就可以完成安装非常类似于 Windows 下软件的安装方式2. Webmin 的作用 Webmin 是一个基于…

基于Android平台扫码识别并链接服务器demo

资料在我的网盘&#xff1a;Android文件夹   第一&#xff1a;开发平台搭建。 本项目采用Android studio&#xff08;android-studio-bundle-162.4069837-windows.exe&#xff09;作为开发平台&#xff0c;安装JDK&#xff08;jdk-8u144-windows-x64.exe&#xff09;。 下载对…

WCF学习笔记(二):在WCF中使用集合传输数据

最近的开发&#xff0c;一直被DataContract头疼&#xff0c;微软为了更好的通用性和代码无关性&#xff0c;将DataContract进行了一系列的优化&#xff0c;使作为DataContract的类在进行Serialize的时候会被序列化成非常通用的数据格式&#xff0c;可以在任何开发语言中调用。但…

如何面对“大概什么时候能完成?”

你在听着经理、上级或是公司内部的某类用户滔滔不绝的给你讲需求&#xff0c;这里面常常能听到“最好能加上……”&#xff0c;“我希望……”&#xff0c;你一边听着&#xff0c;一边心里盘算着这些需求背后需要怎样的技术支撑&#xff0c;要采纳的方案&#xff0c;然后你看到…

Angular Http

Http服务 HttpClient 是 Angular 通过 HTTP 与远程服务器通讯的机制。 启用Http服务的准备工作 要让 HttpClient 在应用中随处可用&#xff0c;需要在根模块的NgModule.imports 数组中加入 HttpClientModule。 Http方法返回单个值 HTTP 是一个请求/响应式协议。你发起请求&am…

2019第四周作业(基础作业+挑战作业)

基础题1&#xff1a; 输入一个正整数 n (1≤n≤10)和n 阶方阵a的元素&#xff0c;如果方阵a中的所有元素都沿主对角线对称&#xff0c;输出“Yes”, 否则&#xff0c;输出“No”。主对角线为从矩阵的左上角至右下角的连线&#xff0c;方阵a中的所有元素都沿主对角线对称指对所有…

Taglib原理和实现:再论El和JST

作者&#xff1a; WalkingWithJava 出处&#xff1a; Java研究组织 问题&#xff1a;你想和JSTL共同工作。比如&#xff0c;在用自己的标签处理一些逻辑之后&#xff0c;让JSTL处理余下的工作。 看这个JSP例子&#xff1a; &#xff1c;% String name"diego"; reque…

UWP Windows10开发获取设备位置(经纬度)

UWP Windows10开发获取设备位置&#xff08;经纬度&#xff09; 原文:UWP Windows10开发获取设备位置&#xff08;经纬度&#xff09;1.首先要在UWP项目的Package.appxmanifest文件中配置位置权限&#xff0c;如下图所示&#xff1a; 2.Package.appxmanifest后选择第三个选项卡…

[零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](1)

MIS信息管理系统实战开发之使用MySQL实现保存开发背景ID、姓名、年龄为公共信息&#xff0c;而学生有成绩&#xff0c;工人有工资定义一个抽象类Person&#xff08;ID、姓名、年龄&#xff09;&#xff0c;学生是其子类&#xff0c;有成绩&#xff0c;工人是其子类有工资ID如何…

【数论总结】-----励志写好一篇数论总结↖(^ω^)↗//正在施工...未完工

近期学了学数论&#xff0c;来写一波总结吧。 &#xff08;1&#xff09;排列组合&#xff0c;比较基础的东西了吧。//只写个概念吧,(逃&#xff1a; 概念&#xff1a;就是从n个不同元素中&#xff0c;任取m(m≤n)个元素并成一组&#xff0c;叫做从n个不同元素中取出m个元素的一…

遍历Treeview每个节点并初始化(C#)

搞了好久&#xff0c;哎&#xff0c;C#的一些控件用起来还没习惯&#xff0c;所以折腾啊。 TreeView的形成&#xff0c;必然要初始化&#xff0c;数据记录是从数据库中取得的&#xff0c;那么要先取再遍历。介绍下心得吧。 首先&#xff0c;数据预期显示结果如下 其次&#xff…

codeforces3A

Shortest path of the king CodeForces - 3A 棋盘上的国王被单独放置。尽管他是孤独的&#xff0c;但并未伤心&#xff0c;因为他有事关全局的重要性。例如&#xff0c;他必须正式访问方格 t 。由于国王不习惯于浪费自己的时间&#xff0c;因此他想用最小的移动步数&#xff0…

for...in和 for...of

在对数据或者对象进行遍历时&#xff0c;经常使用的两种方法是 for...in和 for...of&#xff0c;那么这两种方法有什么区别呢&#xff1f; for…in for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。 语法&#xff1a; for (variable in object) {// statem…

J2EE复习(二)XML

2019独角兽企业重金招聘Python工程师标准>>> XML&#xff08;eXtensible Markup Language&#xff09;简介XML 可扩展标记语言XML是一种您可以用来创建自己的标记的标记语言。XML由万维网协会&#xff08;W3C&#xff09;创建 XML和Html比较比较内容 …

Angular 路由

Angular 路由 简单路由配置 每个带路由的 Angular 应用都有一个Router&#xff08;路由器&#xff09;服务的单例对象。 当浏览器的 URL 变化时&#xff0c;路由器会查找对应的 Route&#xff08;路由&#xff09;&#xff0c;并据此决定该显示哪个组件。 路由器需要先配置才…

leecode第二十题(有效的括号)

class Solution { public:bool isValid(string s) {int start0,ends.size()-1;if(end-1)//万万没想到&#xff0c;他把空字符串当成true了return true;int ss[end1];//歪方法&#xff0c;把左括号全部<0&#xff0c;右括号都>0&#xff0c;且同类型符号绝对值一样for(int…

开始Hibernate介绍

1.介绍 一个框架 一个Java领域内的持久化框架 一个ORM框架 2.持久化 和数据库相关的各种操作 保存 更新 删除 查询 加载&#xff1a;根据特定的OID&#xff0c;把一个对象从数据库加载到你内存中。 OID&#xff1a;为了在系统中找到所需的对象&#xff0c;需要为每一个对象分配…

STL容器[06]

Linux文件锁学习笔记 转载于:https://www.cnblogs.com/motadou/archive/2009/11/25/1610328.html

ASP.NET 2.0在SQL Server 2005上自定义分页

这篇文章讲述了如何利用SQL Server 2005的新特性来简单高效的实现分页。对于那些暂时还没用到SQL Server2005的人们,请看在大规模数据中的高效分页方法。如果需要&#xff0c;这篇文章会补上这里讲到的内容。 出处&#xff1a;http://aspnet.4guysfromrolla.com/demos/printPag…

简单安装与使用composer

1、下载composer.exe工具&#xff0c;然后进行安装 这一步需要找到你使用的php版本文件 2、windowsr cmd 输入composer 安装中国镜像&#xff0c;提高使用效率 https://pkg.phpcomposer.com/ 赋值到cmd中执行即可。 1、找到自己的php环境地址并进入&#xff0c;如&#xf…

[推荐]C#快速开发3d游戏工具--Unity3d

最近有幸接触了一点Unity3d的东西&#xff0c;和大家分享一下。 Unity3d 简介 是一款可视化的&#xff0c;3d游戏开发软件。可以进行手动绘制3d场景&#xff0c;自己添加摄像机角度&#xff0c;3d模型设计&#xff0c;事件触发&#xff0c;对于园子里大家很感兴趣的地方在于&am…

Angular 可观察对象(Observable)

可观察对象(Observable) 可观察对象支持在应用的发布者和订阅者之间传递消息。 可观察对象是声明式的 —— 即定义的用于发布值的函数&#xff0c;在有消费者订阅它之前&#xff0c;这个函数不会实际执行。 可观察对象可能会发出的三种通知&#xff1a; 通知类型说明next必要…

select框高度问题

<div class"article-start-box"> <span class"categery">分类栏目</span> <select style"position: absolute;z-index: 1;margin-left: 40px;" class"choose" οnmοusedοwn"if(this.options.length>6)…

c#技巧教程(连载)

c#技巧教程系列_1 http://www.rayfile.com/files/e03d922e-2418-11de-858a-0019d11a795f/ 转载于:https://www.cnblogs.com/manwu2008/archive/2009/04/08/1431823.html

JavaScript 数据拷贝

JavaScript 数据类型 基本数据类型&#xff1a;字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、对空&#xff08;Null&#xff09;、未定义&#xff08;Undefined&#xff09;、Symbol。引用数据类型&#xff1a;对象( Object )、数组( Array ) 和 方法…

Java链表和递归

删除链表的指定元素&#xff1a; public class ListNode {public int val;public ListNode next;public ListNode(int x){valx;}//链表节点的构造函数//使用arr为参数&#xff0c;创建一个链表&#xff0c;当前的ListNode为链表头节点public ListNode(int arr[]){if(arrnull||a…