zoj3929 Deque and Balls 【找规律】
2016-04-13 12:02
363 查看
比赛的时候以为是找逆序数,浪费了两个小时。
1. 首先不考虑相等的情况,当放入第k个时,第1、2、3、4、5。。。个数对他的贡献分别是1、1、2、4、8、16。。。即放入第k个数时,结果增加2的k-2次,
2. 考虑相等时的情况,假设第i个数相等,那么只有i为第一个或者为最后一个才有影响,第i+1到k-1的数字排列方式唯一,即将结果减去2的i-2,维护一个数组记录相同需要减去的值即可
1. 首先不考虑相等的情况,当放入第k个时,第1、2、3、4、5。。。个数对他的贡献分别是1、1、2、4、8、16。。。即放入第k个数时,结果增加2的k-2次,
2. 考虑相等时的情况,假设第i个数相等,那么只有i为第一个或者为最后一个才有影响,第i+1到k-1的数字排列方式唯一,即将结果减去2的i-2,维护一个数组记录相同需要减去的值即可
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll ans,c[123456],a[123456],sum[123456]; const ll m=1e9+7; int main() { int _,i,n; scanf("%d",&_); while(_--) { scanf("%d",&n); c[0]=1; for(i=1;i<=n;i++) { scanf("%lld",&a[i]); c[i]=c[i-1]*2%m; } ans=0; memset(sum,0,sizeof(sum)); sum[a[1]]=1; for(i=2;i<=n;i++) { ans=(ans+c[i-2])%m; ans=(ans-sum[a[i]]+m)%m; sum[a[i]]=(sum[a[i]]+c[i-2])%m; ans=ans*2%m; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- 修改UITabBarButton位置等
- pod安装AFNetworking3.0遇到dependency were found, but they required a higher minimum deployment target
- WPF 实现指定UI控件截图
- String.valueOf() 方法的使用
- C#新开一个线程取到数据,如何更新到主线程UI上面
- 第三方开源库:nineoldandroid:ValueAnimator 动态设置textview的高
- 解决UINavigationController 自定义LeftBarButtonItem左边空隙问题
- iOS UITextField控件
- Java并发包中的同步队列SynchronousQueue实现原理
- LeetCode 95, 96. Unique Binary Search Trees i. ii
- [LeetCode] Word Frequency 单词频率
- 【View】之【SimpleWaveView】可多色可刷新的加速球、进度球【demo】
- WebSphere+db2使用PROPAGATION_REQUIRES_NEW事务策略因为的系
- 【View】之【SimplePillarsView】可多色可圆角柱状图【demo】
- c 语言unique 实现
- IOS生成GUID
- sdk23_EditText:singleLine="true"过时及引发inputType="textPassword"失效
- 服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
- break ,continue ,return 的区别及作用?
- iOS-OC-UITextField首行缩进