luoguP2267 琪琪的项链

题目:http://www.luogu.org/problem/show?pid=2267

题解:这题略吊。

看了之后发现不能用组合数学直接得出公式,然后如果直接暴力也不知道如何去排除两个颜色序列相同的情况。

然后去膜拜题解

---------------------------------------------------------------------------------------------------

令f[i]表示结尾 i 必选的DIY方法的种数。所有珠子颜色不一样的话:f[i] = f[0] + f[1] + ... + f[i-1]

对于颜色不同的话,假设珠子i颜色为c,颜色c在i之前出现的位置为j,那么在式子:f[i] = f[0] + f[1] + ... + f[i-1] 中,我们多算了f[0] + f[1] + ... + f[j-1]。

所以对于此时的f[i] = f[j] + ... +f[i-1],最后 ans = sum(f[i] , 1 <= i <= n)。

----------------------------------------------------------------------------------------------------

说到这里应该就很明显了,搞个前缀和就行了。

这种与颜色序列有关的题貌似记录一下该颜色上一次出现的位置是个不错的想法?@HH的项链 @采花

代码:

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<string>
 7 #include<set>
 8 #include<map>
 9 #include<vector>
10 #include<algorithm>
11 #include<queue>
12 #define for0(i,n) for(int i=0;i<=n;i++)
13 #define for1(i,n) for(int i=1;i<=n;i++)
14 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
15 #define for3(i,y,x) for(int i=(y);i>=(x);i--)
16 #define maxn 500000+100
17 using namespace std;
18 inline int read()
19 {
20     int x=0,f=1;char ch=getchar();
21     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
22     while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}
23     return x*f;
24 }
25 int n,m,tot,f[maxn],g[maxn],a[maxn],b[maxn],c[maxn],pre[maxn],head[maxn];
26 inline bool cmp(int x,int y){return a[x]<a[y];}
27 int main()
28 {
29     freopen("input.txt","r",stdin);
30     freopen("output.txt","w",stdout);
31     n=read();m=read();
32     for1(i,n)a[i]=read(),c[i]=i;
33     sort(c+1,c+n+1,cmp);
34     for1(i,n)
35     {
36         if(i==1||a[c[i]]!=a[c[i-1]])tot++;
37         b[c[i]]=tot;
38     }
39     for1(i,n)
40     {
41         pre[i]=head[b[i]];head[b[i]]=i;
42     }
43     g[0]=f[0]=1;
44     for1(i,n)
45     {
46         f[i]=g[i-1];if(pre[i])f[i]=(f[i]-g[pre[i]-1]+m)%m;
47         g[i]=(g[i-1]+f[i])%m;
48     }
49     printf("%d\n",g[n]-1);
50     return 0;
51 }

时间: 2024-08-21 07:08:10

luoguP2267 琪琪的项链的相关文章

HDOJ--2680--Choose the best route

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10372    Accepted Submission(s): 3342 Problem Description One day , Kiki wants to visit one of her friends. As she is liabl

mybatis-注解实现crud

1.在接口上注解sql package com.java1234.mappers; import java.util.List; import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import o

【读书札记】《怦然心动——情感化交互设计指南》

近期频频有曾经的同学,朋友的朋友托我帮忙给他们做一个站点.我想一个站点嘛,他们要求的也不高,就是简简单单给他们布个局,搞点动态效果,炫一点即可了. 但是随着不断的构思,我越发的感到做一个好的站点,用户友好,界面干净.信息能良好呈现的站点是花费一点时间和精力的. 说到这里也谈到我所示这本书,为什么会看到这本书,我近期突然想到了我第一天看到这本书的情形. 情景:趁着闲暇的时间我来到了图书馆,琪琪(公司的女同事)那天一直在搞论文,我一直在看JavaScript Dom编程指南,这本书也是值得推荐的,很

Note_JavaWeb_MyBatis3

Jar包 mybatis-3.2.8.jar junit4.4.jar log4j-1.2.17.jar 常用类 Resources SqlSession SqlSessionFactory SqlSessionFactoryBuilder 配置文件 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//m

学生名单

研究生 (http://192.168.26.227/pg/) 2014-2015-2 偏微分方程 (14级数学研究生) [2-10 周三(1,2,3) 7-207,周五(1,2,3) 7-207] 谢飞平 虞丹 本科生 (http://192.168.18.1) 2015-2016-2 点集拓扑 (数学与应用数学1301) [1-14周二(1,2) 7-306,周四(1,2) 7-212] 艾 忆春   陈倩   陈瑶   方敏茹   何丽洁   胡婕   胡露红   黄健   黄元春   江

MyBatis 教程03

<!-- \src\mybatis-config.xml --> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <confi

小峰mybatis(5)mybatis使用注解配置sql映射器--动态sql

一.使用注解配置映射器 动态sql: 用的并不是很多,了解下: Student.java 实体bean: package com.cy.model; public class Student{ private Integer id; private String name; private Integer age; public Student(){ } public Student(String name, Integer age){ this.name = name; this.age =

Spring属性注入、构造方法注入、工厂注入以及注入参数(转)

Spring 是一个开源框架. Spring 为简化企业级应用开发而生(对比EJB2.0来说). 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring 是一个 IOC(DI) 和 AOP 容器框架. 具体描述 Spring:轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API控制反转(依赖注入) (IOC----inverse of control .DI --- dependenc

MyBatis 教程04

<!-- \src\mybatis-config.xml --> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <confi