糖果传递 HAOI 2008 tuyvj 1924
来源:互联网 发布:网络打假教程 编辑:程序博客网 时间:2024/06/06 06:44
洛谷 P2512 糖果传递
这有一篇博客分析的很好,就转载一下吧。
http://hzwer.com/2656.html
程序代码
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>using namespace std;int n,a[1000001],c[1000001],ave;long long sum,ans;int main(){ scanf("%d",&n); for(register int i=1;i<=n;++i) scanf("%d",&a[i]),sum+=a[i]; ave=sum/n; for(int i=1;i<=n;++i) c[i]=c[i-1]+a[i]-ave; sort(1+c,1+c+n); int mid=c[(n>>1)+1]; for(int i=1;i<=n;++i) ans+=abs(c[i]-mid); printf("%lld",ans); return 0;}
tyvj 1924 七夕祭
跟上面那一题差不多,只不过是二维的,但我们可以将二维转化成一维。
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<vector>#include<map>#include<cstdlib>#define pa pair<int,int>#define inf 1000000000#define linf 9000000000000000000LL#define ll long longusing namespace std;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*10+ch-'0';ch=getchar();} return x*f;}int n,m,T;int x[100005],y[100005];int a[100005],b[100005];ll s1[100005],s2[100005],ans;void solve(){ ll t; if(T%n==0) { for(int i=1;i<=n;i++) s1[i]=s1[i-1]+x[i]; sort(s1+1,s1+n+1); t=s1[(n+1)>>1]; for(int i=1;i<=n;i++) ans+=abs(t-s1[i]); } if(T%m==0) { for(int i=1;i<=m;i++) s2[i]=s2[i-1]+y[i]; sort(s2+1,s2+m+1); t=s2[(m+1)>>1]; for(int i=1;i<=m;i++) ans+=abs(t-s2[i]); }}int main(){ freopen("romantic6.in","r",stdin); freopen("romantic.out","w",stdout); n=read();m=read();T=read(); for(int i=1;i<=T;i++) { int a=read(),b=read(); x[a]++;y[b]++;//分别转化成行,列的一维即可 } if(T%n&&T%m) { puts("impossible"); return 0; } for(int i=1;i<=n;i++)x[i]-=T/n; for(int i=1;i<=m;i++)y[i]-=T/m; solve(); if(T%n==0&&T%m==0)printf("both "); //两个都行的情况就是将上面两个所得到的之都相加即可 else if(T%n==0)printf("row "); else printf("column "); printf("%lld\n",ans); return 0;}
小结:反正我当时考试的时候想到了转一维,但是不会上面那道题,所以就按照洛谷均分纸牌(为加强版的做法做了),对的点很少(这都过了?数据太水了吧)。
阅读全文
0 0
- 糖果传递 HAOI 2008 tuyvj 1924
- BZOJ 1045 HAOI 2008 糖果传递 数学推导
- [BZOJ 1045] HAOI 2008 糖果传递 & [BZOJ 3293] CQOI 2011 分金币 · 数学
- 糖果传递
- 糖果传递
- 糖果传递
- 糖果传递
- HAOI 2008 木棍分割
- 糖果传递问题
- [HAOI2008][CQOI2011]糖果传递
- [HAOI2008] 糖果传递
- 糖果传递 (数学题)
- BOJ 27590 糖果传递
- BZOJ1045 HAOI2008糖果传递
- 1045: [HAOI2008] 糖果传递
- bzoj 1465: 糖果传递
- bzoj1045: [HAOI2008] 糖果传递
- Sicily 2505. 糖果传递
- Javassist基础与实践
- JUnit4第一章
- Java 中的陷阱题
- [HNOI2001]洗牌机
- Spring IOC SpEL 表达式
- 糖果传递 HAOI 2008 tuyvj 1924
- React学习笔记_react-redux原理分析
- JavaSE———类与对象
- 编译安装redis报错zmalloc.h
- Gin开发01
- 说说大型网站可伸缩性架构的设计原理
- zookeeper+dubbo管理控制台实践
- 解决页面使用overflow: scroll在iOS上滑动卡顿的问题
- AJAX基础XMLHttpReqiest