• 题目意思
  • 思路

最近的CF题目越来越神奇了.果然这题目有毒,unratedunratedunrated绝不只是系统的锅.
我不得不吐槽一下此题,我真的没有见到多少人写标算的.

题目意思

不解释了.

思路

标算折半枚举.
我又得说一下,我去这个时限明摆着22n22n2^{2n}能过的谁去写的折半枚举哦!
然而我觉得写22n22n2^{2n}还是太麻烦,干脆写了一个q×2nq×2nq\times 2^n的暴力上去.
定义一个字符串的哈希值是它表示的二进制数的大小.
可以发现两个字符串的wu值与它们哈希值的同或值有关.
将给出的m个字符串哈希后存在哈希表cnt数组里.
每次询问的时候暴力枚举2^n种字符串,判断两个字符串wu值是否小于或者等于k并输出结果.
由于同或值不好计算,我对询问的字符串进行反向哈希,就是它表示的二进制数的补码的大小.(只对前n位取补.)
然后可以变成异或计算了.

接下来把zzy的卡常头文件贴上去,一交,奇迹发生了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-funsafe-loop-optimizations,-fexpensive-optimizations,-foptimize-sibling-calls,-ftree-switch-conversion,-finline-small-functions,inline-small-functions,-frerun-cse-after-loop,-fhoist-adjacent-loads,-findirect-inlining,-freorder-functions,no-stack-protector,-fpartial-inlining,-fsched-interblock,-fcse-follow-jumps,-fcse-skip-blocks,-falign-functions,-fstrict-overflow,-fstrict-aliasing,-fschedule-insns2,-ftree-tail-merge,inline-functions,-fschedule-insns,-freorder-blocks,-fwhole-program,-funroll-loops,-fthread-jumps,-fcrossjumping,-fcaller-saves,-fdevirtualize,-falign-labels,-falign-loops,-falign-jumps,unroll-loops,-fsched-spec,-ffast-math,Ofast,inline,-fgcse,-fgcse-lm,-fipa-sra,-ftree-pre,-ftree-vrp,-fpeephole2",3)
#pragma GCC target("avx","sse2")
#include<bits/stdc++.h> //Ithea Myse Valgulious
namespace chtholly{
typedef long long ll;
#define re0 register int
#define rec register char
#define rel register ll
#define gc getchar
#define pc putchar
#define p32 pc(' ')
#define pl puts("")
/*By Citrus*/
inline int read(){int x=0,f=1;char c=gc();for (;!isdigit(c);c=gc()) f^=c=='-';for (;isdigit(c);c=gc()) x=(x<<3)+(x<<1)+(c^'0');return f?x:-x;}
template <typename mitsuha>
inline bool read(mitsuha &x){x=0;int f=1;char c=gc();for (;!isdigit(c)&&~c;c=gc()) f^=c=='-';if (!~c) return 0;for (;isdigit(c);c=gc()) x=(x<<3)+(x<<1)+(c^'0');return x=f?x:-x,1;}
template <typename mitsuha>
inline int write(mitsuha x){if (!x) return 0&pc(48);if (x<0) x=-x,pc('-');int bit[20],i,p=0;for (;x;x/=10) bit[++p]=x%10;for (i=p;i;--i) pc(bit[i]+48);return 0;}
inline char fuhao(){char c=gc();for (;isspace(c);c=gc());return c;}
}using namespace chtholly;
using namespace std;
const int yuzu=5e5;
typedef int fuko[1<<12|13];
fuko wu,cnt,llx[1<<12|13];
int n,m,q,w[99];int getwu(int x){
int ans=0,i;
for (i=0;i<n;++i) if (x>>i&1) ans+=w[i];
return ans;
}int hashit(char *c,bool k){
int ans=0,i;
for (i=n-1;~i;--i) ans=ans<<1|(k?(c[i]^'1'):(c[i]^'0'));
return ans;
}int query(int hashc,int x){
int a[1<<13],i,j,ans=0;
for (i=0;i<(1<<n);++i){if (wu[hashc^i]<=x) ans+=cnt[i];}
return ans;
}int main(){
int i,j;
scanf("%d%d%d",&n,&m,&q);
for (i=0;i<n;++i) scanf("%d",&w[i]);
for (i=0;i<(1<<n);++i) wu[i]=getwu(i);
char c[99];
for (i=0;i<m;++i){scanf("%s",c);cnt[hashit(c,0)]++;}
for (;q--;){scanf("%s",c);int k;scanf("%d",&k);printf("%d\n",query(hashit(c,1),k));}
}

我看过数据,数据范围是满的,非常稳的2n×q2n×q2^n\times q,复杂度大约是500000×4096≈2×109500000×4096≈2×109500000\times 4096≈2\times 10^9.
那么CF在两秒钟内跑过去了,说明CF的评测机一秒钟内完全可以胜任10910910^9的运算.
CF还是nb的.
谢谢大家.

Codeforces 1017D The Wu 卡常相关推荐

  1. codeforces 1017D The Wu(状压+预处理)

    传送门:codeforces 1017D 题意:给你n m q,表示在这一组数据中所有的01串长度均为n,然后给你一个含有m个元素的multiset,之后有q次询问.每次询问会给你一个01串t和一个给 ...

  2. CodeForces - 1017D The Wu

    题面在这里! 比较显而易见的暴力,O(2^(2n) + 2^n * 100) 就可以直接做了 #include<bits/stdc++.h> #define ll long long us ...

  3. P2396 yyy loves Maths VII 状压dp 变态卡常

    很容易想到dp,但是1<<24都有1600w的复杂度,要是普通做法肯定T掉 共有maxs=(1<<n)-1种情况 首先f[ ]记录某种情况的方案数,dis[ ]记录某种情况的步 ...

  4. ACM卡常处理办法(虽然我到现在没遇到)

    今天做预流推送,一样的代码.别人500MS(OI选手)而我5S,百思不得其解,然后我知道了还有卡常这一说. 我们今天就来看一看吧: 1.循环展开: 在缓存和寄存器允许的情况下一条语句内大量的展开运算会 ...

  5. 【2018.5.19】模拟赛之三-ssl2434 取数【搜索,卡常或记忆化搜索】

    正题 题目大意 有n*m的数字矩阵,要求每次只能往相邻的格子移动并取数,要求取数的顺序是一个等差的上升序列.求最多能移动多少步 解题思路 过法: 爆搜卡常 做法: 记忆化用f[i][j][k]表示在第 ...

  6. NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」

    工业题 题解 抱歉,题解没时间写了 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...

  7. 【2018ACM山东省赛 - B】Bullet(二分 + 二分图匹配,匈牙利算法,卡常)

    题干: Problem Description In GGO, a world dominated by gun and steel, players are fighting for the hon ...

  8. 洛谷P5071 [YNOI2015]此时此刻的光辉 莫队+玄学优化+卡常QWQ

    题目链接:传送门 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此 ...

  9. 洛谷P5072 [YNOI2015]盼君勿忘 莫队+unordered_set+毒瘤卡常

    在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此刻的光辉,盼君勿忘 ...

最新文章

  1. TVM apps extension示例扩展库
  2. POJ 2411 Mondriaan#39;s Dream (dp + 减少国家)
  3. (Java集合框架)List接口
  4. tensorflow tfrecoder read write
  5. 程序员接私活平台_程序员去哪儿接私活?我系统总结了15个国内平台,绝对靠谱...
  6. WinCE的开发流程
  7. 数学建模(5)---煤矸石堆积问题
  8. 使用VMM2008 R2管理Hyper-V之1-实验环境与VMM 2008安装
  9. JS - 移动设备终端的touch事件
  10. 中英AlphaGo论文:精通围棋博弈的深层神经网络和树搜索算法(附PDF公号发“AlphaGo论文”下载论文双语对照版)
  11. 《Unity 3D游戏客户端基础框架》系统设计
  12. Gentoo Ebuild 和 Overlay
  13. 30岁宝妈转行UI设计,后来怎么样了?
  14. Masimo宣布首款用于 Root(R)患者监护与互联总机的第三方Masimo Open Connect(R)模块获得CE标记
  15. 【考研408】计算机与组成原理笔记
  16. 基于uni-app开发的一款视频播放器插件
  17. 已解决:`anonymous-namespace‘::SourceReaderCB::~SourceReaderCB terminating async callback
  18. 如何使用maven给Java打包
  19. HEC-RAS、HEC-HMS、HEC-GeoRAS之间是什么关系?
  20. 拉卡拉商户入网api接口接入方便数据

热门文章

  1. Vue scss报错
  2. 加强安全防范提高护理质量
  3. 安全风险识别是什么?主要内容有哪些?
  4. pandas DataFrame增加一行、一列、多行、多列
  5. 接口自动化测试框架unittest和pytest差异比较
  6. boss直聘python_Boss直聘Python爬虫实战
  7. php仿boss直聘,仿BOSS直聘APP下拉刷新动画实现
  8. 制作多系统U盘(win10+ubuntu18+ 。。。)
  9. 你都42岁了还要做程序员?(入门必读)
  10. 计算机教师教学能手演讲,教学能手代表的发言稿(精选6篇)