博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 12520 Square Garden
阅读量:5032 次
发布时间:2019-06-12

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

 

题意:n*n网格中染色m个格子,染色格子的最长轮廓线

 

贪心

将格子分为4类

1、隔一个选一个,互不相邻的格子

2、4个角上的格子

3、边界除角的格子

4、内部的格子

 

4类从上到下依次选

1对答案有4的贡献

2对答案无贡献

3对答案有-2的贡献

4对答案有-4的贡献

 

对n奇偶分类讨论

当n为奇数时,在分左上角的格子在第1类还是第2类讨论

 

#include
#include
using namespace std;int main(){ freopen("data.txt","r",stdin); freopen("my.txt","w",stdout); long long ans1,ans2,n,sum,rest,now,tmp; while(scanf("%lld%lld",&n,&sum)!=EOF) { if(!n) return 0; if(n&1) { if(sum<=n*n>>1 || sum<=n*n/2+1) { printf("%lld\n",sum<<2); continue; } if(sum<=n*n/2+4) ans1=n*n/2*4; else { tmp=sum-4-n*n/2; ans1=n*n/2<<2; rest=n/2-1<<2; if(tmp<=rest) ans1-=tmp<<1; else { ans1-=rest<<1; tmp-=rest; ans1-=tmp<<2; } } ans2=n*n/2+1<<2; now=n*n/2+1; rest=n/2<<2; if(sum-now<=rest) ans2-=sum-now<<1; else { ans2-=rest<<1; now+=rest; ans2-=sum-now<<2; } printf("%lld\n",max(ans1,ans2)); } else { if(sum<=n*n>>1) { printf("%lld\n",sum<<2); continue; } if(sum<=n*n/2+2) { printf("%lld\n",n*n/2*4); continue; } ans1=n*n>>1<<2; tmp=sum-n*n/2-2; rest=n/2-1<<2; if(tmp<=rest) ans1-=tmp<<1; else { ans1-=rest<<1; tmp-=rest; ans1-=tmp<<2; } printf("%lld\n",ans1); } }}

 

 

同一种思路大佬的写法就是短

#include
#include
using namespace std;typedef long long ll;ll l,n,a,b,c,ans;ll cal(){ if(n<=a) return n*4; if(n<=a+b) return a*4; if(n<=a+b+c) return a*4-(n-a-b)*2; return a*4-c*2-(n-a-b-c)*4;}int main(){ freopen("data.txt","r",stdin); freopen("std.txt","w",stdout); while(cin>>l>>n,l||n) { if(l%2==0) { a=l*l/2; b=2; c=l/2-1<<2; ans=cal(); } else { a=l*l/2; b=l==1 ? 1:4; c=l==0 ? 0:(l-3)/2*4; ans=cal(); a=l*l/2+1; b=0; c=(l-1)/2*4; ans=max(ans,cal()); } cout<
<

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7465031.html

你可能感兴趣的文章
vim如何配置go语言环境
查看>>
机器学习好网站
查看>>
解题:国家集训队 Middle
查看>>
响应者链
查看>>
redhat 7 源码安装 mysql5.5.49
查看>>
技术项目,问题
查看>>
Learning to rank (software, datasets)
查看>>
git常见问题
查看>>
.NETFramework:template
查看>>
HM16.0之帧内模式——xCheckRDCostIntra()函数
查看>>
Jmeter性能测试 入门
查看>>
安卓动画有哪几种?他们的区别?
查看>>
ssh 连接原理及ssh-keygen
查看>>
vs2013编译qt程序后中文出现乱码
查看>>
【转】IOS数据库操作SQLite3使用详解
查看>>
Android官方技术文档翻译——ApplicationId 与 PackageName
查看>>
【转】ButterKnife基本使用--不错
查看>>
【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”...
查看>>
函数中关于const关键字使用的注意事项
查看>>
js随机数的取整
查看>>