HDU4669_Mutiples on a circle
题目的意思是给你一些数字a[i](首位相连),现在要你选出一些连续的数字连续的每一位单独地作为一个数位。现在问你有多少种选择的方式使得选出的数字为k的一个倍数。
其实题目是很简单的。由于k不大(200),总共的数字个数为50000,所以我们对于当前走到的每一个数字最多的状态数目也只有50000*200个。
同时由于是循环的,我们可以使长度增倍,这样就可以保证序列是循环的了。
不过注意,增倍后空间是开不下的,所以需要使用循环的滚动数组。
同时注意递推的细节,还有有的a[i]不止一位数,不能直接取模。
#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 50050
typedef long long ll;
using namespace std; int a[*maxn],f[*maxn],n,m,k,tep,cur,w[*maxn];
int s[maxn][];
ll ans; void init_(int x)
{
for (int i=; i<k; i++) s[x][i]=;
} int count(int x)
{
if (x<) return ;
if (x<) return ;
if (x<) return ;
return ;
} int get(int x)
{
if (x==) return ;
if (x==) return %k;
if (x==) return %k;
return %k;
} int power(int x,int y)
{
int tot=;
while (y)
{
if (y&) tot=(tot*x)%k;
y>>=;
x=(x*x)%k;
}
return tot;
} int main()
{
while (scanf("%d%d",&n,&k)!=EOF)
{
ans=;
w[]=,f[]=;
for (int i=; i<=n; i++)
{
scanf("%d",&a[i]);
a[i+n]=a[i];
w[i]=count(a[i]);
w[i+n]=count(a[i+n]);
}
for (int i=; i<=*n; i++) f[i]=(f[i-]*get(w[i])+a[i])%k;
for (int i=; i<=*n; i++) w[i]+=w[i-];
for (int i=; i<=n; i++)
{
init_(i);
s[i][a[i]%k]++;
for (int j=; j<k; j++) s[i][(get(w[i]-w[i-])*j+a[i])%k]+=s[i-][j];
}
for (int i=n+; i<=*n; i++)
{
int qq=i-n-;
if (qq==) qq=n;
init_(i-n);
s[i-n][a[i]%k]++;
for (int j=; j<k; j++) s[i-n][(get(w[i]-w[i-])*j+a[i])%k]+=s[qq][j];
cur=(f[i-n-]*power(,w[i]-w[i-n-]))%k;
cur=((f[i]-cur)%k+k)%k;
s[i-n][cur]--;
ans+=s[i-n][];
}
printf("%I64d\n",ans);
}
return ;
}
HDU4669_Mutiples on a circle的更多相关文章
- [翻译svg教程]svg中的circle元素
svg中的<circle> 元素,是用来绘制圆形的,例如 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink= ...
- 设计一个程序,程序中有三个类,Triangle,Lader,Circle。
//此程序写出三个类,triangle,lader,circle:其中triangle类具有类型为double的a,b,c边以及周长,面积属性, //具有周长,面积以及修改三边的功能,还有判断能否构成 ...
- c++作业:Circle
Circle Github链接
- Modified Least Square Method and Ransan Method to Fit Circle from Data
In OpenCv, it only provide the function fitEllipse to fit Ellipse, but doesn't provide function to f ...
- [javascript svg fill stroke stroke-width circle 属性讲解] svg fill stroke stroke-width circle 属性 绘制圆形及引入方式讲解
<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...
- (1)编写一个接口ShapePara,要求: 接口中的方法: int getArea():获得图形的面积。int getCircumference():获得图形的周长 (2)编写一个圆类Circle,要求:圆类Circle实现接口ShapePara。 该类包含有成员变量: radius:public 修饰的double类型radius,表示圆的半径。 x:private修饰的double型变量x,
package com.hanqi.test; //创建接口 public interface ShapePara { //获取面积的方法 double getArea(); //获取周长的方法 do ...
- 东大oj-1591 Circle of friends
题目描述 Nowadays, "Circle of Friends" is a very popular social networking platform in WeChat. ...
- svg学习(四)circle
<circle> 标签 < <?xml version="1.0" standalone="no"?> <!DOCTYPE ...
- 后缀数组 --- WOj 1564 Problem 1564 - A - Circle
Problem 1564 - A - Circle Problem's Link: http://acm.whu.edu.cn/land/problem/detail?problem_id=156 ...
随机推荐
- WPF RoutedEvent and HitTest - 简书
原文:WPF RoutedEvent and HitTest - 简书 学习的时候切忌心浮气躁,慢慢的过每一个知识点,不要漏掉任何细节.不然当遇到细节问题的时候,会恼,会闹,会悔不该当初--花一下午调 ...
- [arc062E]Building Cubes with AtCoDeer
Description 传送门 Solution 这道题直接暴力就好..毕竟只要枚举了前后两个瓷砖的方向和编号,其他瓷砖的颜色就是确定的了. 然而场上我的去重除了问题qaq. 我们钦定在立方体最前面的 ...
- 【MongoDB】NoSQL Manager for MongoDB 教程(基础篇)
前段时间,学习了一下mongodb,在客户端工具方面,个人认为 NoSQL Manager for MongoDB 是体验比较好的一个,功能也较齐全.可惜在找教程的时候,发现很难找到比较详细的教程,也 ...
- SRM 698 div1 RepeatString
250pts RepeatString 题意:问最少修改多少次将一个字符串修改为AA的形式.可以插入一个字符,删除一个字符,修改字符. 思路:枚举分界点,然后dp一下. /* * @Author: m ...
- 洛谷P2831 愤怒的小鸟
洛谷P2831 愤怒的小鸟 原题链接 题解 首先简单数学公式送上. \(ax_1^2+bx_1=y_1\) \(ax_2^2+bx_2=y_2\) \(ax_1^2x_2+bx_1x_2=y_1x_2 ...
- cookie和session在Django中的应用
1 会话跟踪技术 什么是会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而1008 ...
- MySQL授权root
1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...
- Angular开发者手册重点翻译之指令(一)
创建自定义的指令 这个文章将解释什么需要在自己的angularjs应用中创建自己的指令,以及如何实现它. 什么是指令 在高的层面上讲,指令是DOM元素中的标记(例如一个属性,一个节点名,注释或者CSS ...
- 【MySQL数据库权限】RDS for MySQL创建高权限账号
原文转自:https://help.aliyun.com/document_detail/26130.html?spm=5176.2020520104.201.1.580be8abjlGorJ 为满足 ...
- Linux 防火墙设置(转)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...