博客
关于我
Codeforces Round 89 (Rated for Div. 2)
阅读量:336 次
发布时间:2019-03-04

本文共 2354 字,大约阅读时间需要 7 分钟。

A. Shovels and Swords

题解:

假设第一种工具买了x个,第二种买了y个。
那么由题可知
0 ≤ 2 x + y ≤ a {0≤2x+y≤a} 02x+ya
0 ≤ x + 2 y ≤ b {0≤x+2y≤b} 0x+2yb
求(x+y)max,高中线性规划可以求解。

int main(){   	int t;	cin >> t;	while(t--)	{   		ll a,b;		cin >> a >> b;		if(2*min(a,b)<=max(a,b))			cout << min(a,b) << endl;		else cout << (a+b)/3 << endl;	}}

B. Shuffle

题解:区间合并,如果有交集就不断扩大左右边界,最后求区间长度即可。

int main(){   	int t;	cin >> t;	while(t--)	{   		ll n,m,x;		cin >> n >> x >> m;		ll L=x,R=x;		for(int i=0;i
> l >> r; if(l<=R && L<=r) { L=min(L,l); R=max(R,r); } } cout << R-L+1 << endl; }}

C. Palindromic Paths

题解:

emmm,找规律吧,由于从(1,1)到达(n,m)的路径必须是回文串,那么可以理解为从(1,1)出发第m步全部能到达的点必须全部等于从(n,m)出发往(1,1)走时第m步全部能到达的点,那么很容以得出一个结论:就是(1,1)出发第m步全部能到达的点和从(n,m)出发往(1,1)走时第m步全部能到达的点必须全部一致,倘若有一个不一致,那么去时在第m步选择为0,距离终点m步时选择为1的点就不满足回文串要求,知道这个去模拟即可。

int a[35][35];//map
mp,mp1;int mp[10005],mp1[10005];int main(){ int t; cin >>t; while(t--) { memset(mp, 0, sizeof(mp)); memset(mp1, 0, sizeof(mp1)); int n,m; cin >> n >> m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin >> a[i][j]; int ans=0,sum=2+n+m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if((n+m)%2==0 && i+j==(n+m)/2+1) continue; if(a[i][j]) { if(i+j>sum/2) mp[sum-(i+j)]++; else mp[i+j]++; } else { if(i+j>sum/2) mp1[sum-(i+j)]++; else mp1[i+j]++; } } for(int i=2;i<=sum/2;i++) ans+=min(mp[i],mp1[i]); cout << ans << endl; }}

D. Two Divisors

题解:

这题很坑,以至于好多人被叉了(包括我),这个题貌似只能用唯一分解定理去搞,由于a[i]≤1e7,即使 n ∗ n 时 间 复 杂 度 也 会 超 时 {n*\sqrt{n}}时间复杂度也会超时 nn .
题目要求找一个数的2个>1的因子,使得gcd(d1+d2,a)==1,其实由裴蜀定理可知
gcd(d1+d2,a)==1 ⇒ k1*(d1+d2)+k2*a=1 (k1,k2为整数)
易知a=k3*d1 (k3为整数)
(k1+k2*k3)d1+k1*d2=1 ⇒ k’*d1+k’’*d2=1 (其中k’=(k1+k2*k3),k’’=k1)
由裴蜀逆定理可知
gcd(d1,d2)=1即可
言外之意,找两个大于1且互质的因子即可。
这里有个技巧在欧拉筛完素数时,可以用一个数组mp记录每一个数最小质因子p,将一个数可以表示为x= p k ∗ p 1 , 此 时 d 1 = p k , d 2 = p 1 , 判 断 d 1 , d 2 是 否 为 1 即 可 。 {p^k*p1},此时d1=p^k,d2=p1,判断d1,d2是否为1即可。 pkp1d1=pk,d2=p1d1,d21

pii d[maxn];int vis[maxm];int prime[maxm];int mp[maxm];void getprime(){   	vis[0]=vis[1]=1;	for(int i=2;i
1) { while(a%tmp==0) { a/=tmp; y*=tmp; } } if(a>1 && y>1) { d[i].fi=a;d[i].se=y; } else{ d[i].fi=-1; d[i].se=-1; } } for(int i=1;i<=n;i++) printf("%d ",d[i].first); printf("\n"); for(int i=1;i<=n;i++) printf("%d ",d[i].second);}

转载地址:http://comh.baihongyu.com/

你可能感兴趣的文章
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>