关于$Miemeng$,它死了。

大家有没有记得我在暑假里曾经写过一个著名模数?

const int Mod=998224353;

现在有续集了(捂脸)(改不过题.jpg)

const int Mod=988244353;

ZJ:

我对不起大家我又咕咕咕了,话说为什么我挂起的电脑……

T1Adore,看起来很熟悉……不知道是什么时候见过这个词……

于是发现不可做。打一个暴力就丢了。

T2发现暴力很好打,先码了一个,先rand了几个数据,发现答案大都是$1\ 2$

emm,本来想一边输入一边扫,但是后来弃掉了(为什么要弃啊啊啊?

T3发现很贪心,但是只会输出$n$(滑稽

(后来听说输出$\frac{n}{s}$有$50$)

39
Miemeng 0

00:00:03
50

00:00:04
20

00:00:05
70

00:00:05

啊T1为什么爆〇了????

TJ:

T1

状压即可,设$f_{i,s}$为第$i$层点权奇偶性为$s$(奇为$1$,偶为$0$)时前$i$层的方案数

于是预处理取反边,并且直接转移就好了。

最后的答案就是$f_{n,0}$

复杂度$\Theta(NK 2^K)$

#include <iostream>
#include <cstring>
#include <cstdio> //#include "debug.h" #define N 11111
#define K 12
#define S (1<<K)+111
#define LL long long
using namespace std; const int Mod=998244353;
int cn,pn;
LL dp[N][S];
int mp[N][K],pm[N][K];
int dat[N][K][K]; void prerun(){
for(int i=1;i<=pn;i++){
mp[1][1] |= dat[1][1][i]<<(i-1);
}
for(int i=2;i<cn-1;i++){
for(int j=1;j<=pn;j++){
for(int k=1;k<=pn;k++){
mp[i][j] |= dat[i][j][k]<<(k-1);
pm[i][k] |= dat[i][j][k]<<(j-1);
}
}
}
for(int i=1;i<=pn;i++){
mp[cn-1][i] |= dat[cn-1][i][1];
// cout<<mp[cn-1][i]<<" ";
}
// cout<<endl;
}
int main(){
#ifndef LOCAL
freopen("adore.in" ,"r",stdin);
freopen("adore.out","w",stdout);
#endif
scanf("%d%d",&cn,&pn);
for(int i=1;i<=pn;i++){
scanf("%d",&dat[1][1][i]);
}
for(int i=2;i<cn-1;i++){
for(int j=1;j<=pn;j++){
for(int k=1;k<=pn;k++){
scanf("%d",&dat[i][j][k]);
}
}
}
for(int i=1;i<=pn;i++){
scanf("%d",&dat[cn-1][i][1]);
}
prerun();
/* for(int i=1;i<=cn;i++){
for(int j=1;j<=pn;j++){
cout<<i<<" "<<j<<" "<<bin(mp[i][j],pn)<<endl;
}
}*/
dp[2][mp[1][1]]=1;
for(int i=2;i<cn-1;i++){
for(int s=0;s<1<<pn;s++){
// cout<<"dp["<<i<<"]["<<bin(s,pn)<<"]="<<dp[i][s]<<endl;
int pos=0,sop=0;
for(int j=1;j<=pn;j++){
int k=1<<(j-1);
if(k&s){
pos^=mp[i][j];
sop^=pm[i][j];
}
}
dp[i+1][pos]+=dp[i][s];
dp[i+1][pos]%=Mod;
dp[i+1][sop]+=dp[i][s];
dp[i+1][sop]%=Mod;
}
}
for(int s=0;s<1<<pn;s++){
int pos=0;
// cout<<"dp["<<cn-1<<"]["<<bin(s,pn)<<"]="<<dp[cn-1][s]<<endl;
for(int i=1;i<=pn;i++){
int j=1<<(i-1);
if(j&s){
pos^=mp[cn-1][i];
// cout<<"pos:"<<bin(pos,pn)<<"<-"<<j<<" "<<mp[cn-1][j]<<endl;
}
}
dp[cn][pos]+=dp[cn-1][s];
dp[cn][pos]%=Mod;
}
printf("%lld\n",dp[cn][0]);
}

T2:

考试的小剪枝暴力tong过本题。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <bitset>
#define N 6666
using namespace std; int sn;
char str[N*100];
bitset <2*N> vals[N];
int main(){
#ifndef LOCAL
freopen("confess.in" ,"r",stdin);
freopen("confess.out","w",stdout);
#endif
scanf("%d",&sn);
for(int i=1;i<=sn+1;i++){
int cnt=0;
scanf("%s",str);
int len=strlen(str);
for(int j=0;j<len;j++){
int dat=str[j]-33;
for(int k=0;k<6;k++){
vals[i]<<=1;
cnt++;
vals[i].set(0,dat>>k&1);
if(cnt==2*sn)goto nxtt;
}
}
nxtt:;
for(int j=1;j<i;j++){
if((int)(vals[i]&vals[j]).count()>=sn/2){
cout<<i<<" "<<j<<endl;
return 0;
}
}
}
}

但是正解是随机化……

(随机化可过的题大多都可以暴力剪枝过……)

T3咕掉了,也不想粘题解。

19-11-10-Night的更多相关文章

  1. Update 19.11 for Azure Sphere

    今天,微软发布了面向Azure Sphere的19.11更新,其主要亮点就是加入了对开发工具Visual Studio Code和Linux开发环境的支持.具体来讲,本次更新包含3个部分: 1. Az ...

  2. 2016/11/10 吃吃喝喝Hacking Thursday Night聚餐活动 at Dunkin Donuts

    店名:Dunkin Donuts 唐恩都乐 点评:http://www.dianping.com/shop/21378231 地址:静安区南京西路1649号静安公园内(近静安公园) 走法:地铁2号线静 ...

  3. 微信iphone7、 ios10播放视频解决方案 2016.11.10

    2016.11.10日更新以下方法 微信最新出同层播放规范 即使是官方的也无法解决所有android手机的问题. 另外iphone 5 .5s 某些手机始终会弹出播放,请继续采用 “以下是老的解决办法 ...

  4. ubuntu 11.10 安装apache2 tomcat6

    ubuntu 11.10 安装apache2 tomcat6 导读 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目 ...

  5. 【转】ubuntu 11.10(32位系统)下编译android源码

    原文网址:http://www.cnblogs.com/dwayne/archive/2011/11/16/2251734.html 本文介绍在ubuntu 11.10系统下编译android 2.3 ...

  6. Ubuntu 11.10 安装GMONE3,卸载 UNITY和UNITY 2D

    Ubuntu 11.10安装GNOME3: 1)sudo apt-get install gnome-shell    sudo apt-get install gnome-themes*   (或者 ...

  7. 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』

    基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...

  8. Ubuntu 11.10 Server下搭建Maven私服

      安装Nexus服务的文档可以参考官方站点:http://www.sonatype.com/books/nexus-book/reference/install-sect-install.html ...

  9. Ubuntu 11.10下GRUB 2 1.99版编译安装笔记

    Ubuntu 11.10下GRUB 2 1.99版编译安装笔记 以下的安装笔记,都是QLi自己学习grub2 时,所整理的,还是新手,有错误的话,请大家帮忙就别提出来了. 最新版grub V1.99官 ...

  10. 显示 Ubuntu 11.10 的 终端窗口

    显示 Ubuntu 11.10 的 终端窗口 一.点击左上角的图标 -> 在search框里搜索termial . 二.快捷键:Ctrl+Alt+t.

随机推荐

  1. 两个问题: 1、头文件重复包含 2、头文件加了ifndef条件预处理指令为什么还会定义

    第一个问题:编译时重定义 文件1.h void fun1(); struct A { int a char b; };   文件2.h #include"1.h" struct B ...

  2. Redis事务,持久化,哨兵机制

    1 Redis事务 基本事务指令 Redis提供了一定的事务支持,可以保证一组操作原子执行不被打断,但是如果执行中出现错误,事务不能回滚,Redis未提供回滚支持. multi 开启事务 exec 执 ...

  3. POJ 4718 /// 树链剖分+线段树区间合并 求树上两点间的LCIS长度

    题目大意: 给定n个点 每个点都有权值 接下来给定树的n条边 第 i 个数 a[i] 表示 i+1到a[i]之间 有一条边 给定q q个询问 每次询问给出 x y 求x到y的最长上升子序列的长度 题解 ...

  4. Window下,前后端分离项目,登录权限验证中的,Redis相关操作

    [1]官网下载Redis(解压版) https://redis.io/download [2]切换到目录下打开DOS,执行指令启动Redis redis-server.exe redis.window ...

  5. asp.net core2.0 依赖注入 AddTransient与AddScoped的区别 - 晓剑 - CSDN博客

    原文:asp.net core2.0 依赖注入 AddTransient与AddScoped的区别 - 晓剑 - CSDN博客 原文地址:http://www.tnblog.net/aojiancc2 ...

  6. dubbo jar 配置文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  7. 继承内部类时使用外部类对象.super()调用内部类的构造方法

    问题简介   今天在看<Java编程思想>的时候,看到了一个很特殊的语法,懵逼了半天--一个派生类继承自一个内部类,想要创建这个派生类的对象,首先得创建其父类的对象,也就是这个内部类,而调 ...

  8. 深度探索C++对象模型之第一章:关于对象之对象的差异

    一.三种程序设计范式: C++程序设计模型支持三种程序设计范式(programming paradiams). 程序模型(procedural model) char boy[] = "cc ...

  9. JAVA数据结构之二叉树

    用树作为存储数据的结构兼具像数组一样查询速度快和像链表一样具有很快的插入和删除数据项的优点 我们用圆点表示节点,连接圆的直线表示边如下图所示就表示了一颗树,接下来我们讨论的二叉树即每个节点最多只有两个 ...

  10. Python自学:第四章 在for循环中执行更多操作(2)

    # -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...