T3

链接:C

输入一个长度为n的数组a[i],下标从0开始(0到n-1)

保证n是2的整数次幂,

对于每个i (0 <= i < n)

求所有满足((i & j) == j)的a[j]之和。

对于100%的数据,1 <= n <= \(2^{20}\), 0 <= a[i] <= 1000


三维部分区间和

for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
a[i][j][k] += a[i][j][k - 1] + a[i][j - 1][k] + a[i - 1][j][k];
a[i][j][k] -= a[i][j - 1][k - 1] + a[i - 1][j - 1][k] + a[i - 1][j][k - 1];
a[i][j][k] += a[i - 1][j - 1][k - 1];
}
}
}

或如下代码

for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
a[i][j][k] += a[i][j][k - 1];
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
a[i][j][k] += a[i][j - 1][k];
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
a[i][j][k] += a[i - 1][j][k];
}
}
}

题目好评↑

推广一下到20维

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define max(a,b) ((a)>(b) ? (a): (b))
#define RI register int
using namespace std; int i,m,n,j,k,a[2000001],g; int main()
{
scanf("%d",&n);
for(RI i=0;i<n;i++) scanf("%d",&a[i]);
m=n; g=0;
while(m)
{
m>>=1;
g+=1;
}
for(RI i=0;i<g;i++)
for(RI j=(1<<i);j<n;j++)
if(j&(1<<i)) a[j]+=a[j-(1<<i)]; for(RI i=0;i<n;i++) printf("%d\n",a[i]);
}

T4

链接:D

用L图形(大小为3,也就是去掉一个角的2x2的正方形)和1x2的矩形,覆盖2xn的矩形,问有多少种方案。

覆盖要求不重不漏,整体翻转和旋转均算作不同的方案。

用于覆盖的图形可以旋转,比如可以把L旋转为Г,把1x2的矩形旋转成为2x1的矩形等。

输出方案数模10007的结果。

对于100%的数据,\(1 <= n <= 10^{100000}\)


欧拉定理可证\(x^n\equiv x^{n\%\varphi(m)}(\%m)\)

由于10007是质数,所以\(\varphi(10007)=10006\)

所以高精模后dp来做就好啦

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define M 10007
#define max(a,b) ((a)>(b) ? (a): (b))
using namespace std; int i,m,n,j,k,a[100001][3];
char c[200001]; int qm(char *c,int k)
{
int s=strlen(c);
int m=0;
for(int i=0;i<s;i++) m=m*10+c[i]-'0', m%=k;
return m%k;
} int main()
{
gets(c);
n=qm(c,10006);
a[0][0]=1;
for(i=1;i<=n;i++)
{
if(i>1) a[i][0]+=a[i-2][0];
a[i][0]=(a[i][0]+a[i-1][0]+a[i-1][1]+a[i-1][2])%M;
if(i>1) a[i][1]+=a[i-2][0];
a[i][1]=(a[i][1]+a[i-1][2])%M;
if(i>1) a[i][2]+=a[i-2][0];
a[i][2]=(a[i][2]+a[i-1][1])%M;
}
printf("%d",a[n][0]);
}

普及组R4的更多相关文章

  1. NOIP2012 普及组 T3 摆花——S.B.S.

    题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...

  2. NOIP2016普及组复赛解题报告

    提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...

  3. 05:统计单词数【NOIP2011复赛普及组第二题】

    05:统计单词数 总时间限制:  1000ms 内存限制:  65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...

  4. [题解]noip2016普及组题解和心得

    [前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...

  5. NOIP2016普及组

    普及组.代码有空发. 第一题就是买铅笔.暴力模拟绝对可取. 第二题就是回文日期.从t1的年份到t2的年份枚举每一年.头尾要特判. 第三题就是海港.骗了40分. 第四题就是魔法阵.不太好优化. 完.

  6. [NOIP2013] 普及组

    计数问题 纯模拟 #include<cstdio> #include<iostream> using namespace std; int main(){ int n,x; c ...

  7. NOIP2008 普及组T2 排座椅 解题报告-S.B.S

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...

  8. NOIP2008 普及组T1 ISBN号码 解题报告-S.B.S.

    题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一 ...

  9. NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)

    题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每 ...

随机推荐

  1. Delphi 中多线程同步的一些处理方法

    Delphi 中多线程同步的一些处理方法   当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchr ...

  2. BZOJ 4596: [Shoi2016]黑暗前的幻想乡(容斥+Matrix_Tree)

    传送门 解题思路 看到计数想容斥--\(from\) \(shadowice1984\)大爷.首先求出原图的生成树个数比较容易,直接上矩阵树定理,但这样会多算一点东西,会把\(n-2\)个公司的多算进 ...

  3. error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.【转载】

    文章出处https://blog.csdn.net/qq_38721302/article/details/82850292 今天编写C++程序在使用头文件#include<cstring> ...

  4. HDU3605: Escape-二进制优化建图-最大流

    目录 目录 思路: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 题意:传送门  原题目描述在最下面.  \(n(n\leq 100000)\)个人\(m(m\leq 10) ...

  5. Nt函数原型

    NTSTATUS NTAPI NtAcceptConnectPort( OUT PHANDLE PortHandle, IN PVOID PortIdentifier, IN PPORT_MESSAG ...

  6. $nextTick与nextTick

    $nextTick Data-Dom-之后回调 nextTick Data-回调-Dom

  7. beaglebone black 与电脑互传文件(夹)

    1. PSCP方法 PSCP,是putty的一个组件. 1.1 下载PSCP 先给连接http://www.chiark.greenend.org.uk/~sgtatham/putty/downloa ...

  8. Git及github使用(三)更新自己的github代码

    如果之前上传的代码到目前有所改动,想要更新github上的代码文件.希望本篇对你有所帮助. 1.拉取代码本地修改后上传代码 提交成功后的效果如下: 2.更新展示在github首页的readme内容 上 ...

  9. 11-MySQL-Ubuntu-数据表中数据的删除(四)

    数据的删除(delete) (1)物理删除(不可逆,公司不会采取这种方法,如现在一般不会出现注销,数据具有无限价值) 删除整张表的数据!!! delete from 表名; 删除部分给定条件的数据: ...

  10. Spark SQL设计