[JZOJ4603] 颜料大乱斗
来源:互联网 发布:php源码怎么搭建网站 编辑:程序博客网 时间:2024/04/20 07:55
Description
Solution
区间修改区间求种数。
维护
直接修改每次情况。
查询时只要这个区间内有就答案+1
注意修改和查询时如果已经是0了可以直接退出。(否则会炸时间)
Code
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>#include<iostream>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)#define ws 100000000using namespace std;struct arr{ int a[1005];}f[1805];int n,k;arr pl(arr a,arr b){ arr c; int l1=a.a[0],l2=b.a[0]; int i; memset(c.a,0,sizeof(c.a)); fo(i,1,max(l1,l2)) { c.a[i]+=a.a[i]+b.a[i]; c.a[i+1]=c.a[i]/ws; c.a[i]%=ws; } c.a[0]=max(l1,l2); if (c.a[c.a[0]+1]>0) c.a[0]++; return c;} arr ti(arr a,int b){ arr c; int l1=a.a[0]; int i,x=0; memset(c.a,0,sizeof(c.a)); fo(i,1,l1) { c.a[i]=a.a[i]*b+x; x=c.a[i]/ws; c.a[i]%=ws; } c.a[l1+1]=x; c.a[0]=l1; if (c.a[l1+1]>0) c.a[0]++; return c;}int main(){ cin>>n>>k; if(n==0) { cout<<0; return 0; } if (n==1) { cout<<k; return 0; } f[1].a[1]=k-1; f[1].a[0]=1; f[0].a[0]=1; int i,j; fo(i,2,n) f[i]=ti(pl(f[i-1],f[i-2]),k-1); arr ans=pl(f[n],f[n-1]); fod(i,ans.a[0],1) { j=ws/10; while (i!=ans.a[0]&&ans.a[i]<j) printf("0"),j/=10; printf("%d",ans.a[i]); }}
0 0
- 【JZOJ4603】颜料大乱斗
- [JZOJ4603] 颜料大乱斗
- Jzoj4603 颜料大乱斗
- 【jzoj4603】【颜料大乱斗】【线段树】
- [jzoj4603]【NOIP2016提高A组模拟7.15】颜料大乱斗
- 【JZOJ 4603】颜料大乱斗
- 【JZOJ 4603】颜料大乱斗
- 【NOIP模拟】颜料大乱斗
- 【NOIP2016提高A组模拟7.15】颜料大乱斗 题解+代码
- JZOJ 4603 颜料大乱斗【NOIP2016提高A组模拟7.15】
- 颜料大乱斗【NOIP2016提高A组模拟7.15】
- 【NOIP2016提高A组模拟7.15】颜料大乱斗
- 最少颜料
- 混合颜料
- 混合颜料
- 混合颜料
- 混合颜料
- 怎么洗掉衣服上的水粉颜料、丙烯颜料、水彩颜料、油画颜料
- 定时任务10秒刷新
- 数据库锁有几种
- 使用二分法Arrays.binarySearch()与list.contains()进行元素比较的效率分析
- 希尔(shell)排序算法
- js拼接html多参数传递转义
- [JZOJ4603] 颜料大乱斗
- imageLoader 加载图片错位问题解决方案
- Android开源项目
- github 的文件忽略
- leetcode 216 Combination Sum III java 算法
- C++11带来的优雅语法
- UIScrollView的属性总结
- http header
- ThinkPHP单字母函数总结