hdu 2018多校8
A.Character Encoding 简单计数
m个非负数和等于k的方案数为$\binom{m+k-1}{k}$, 但题目还要求每个数小于n, 容斥一下即可
即$ans = \sum\limits_{0\le i \le m}(-1)^i\binom{m}{i}\binom{m+k-1-ni}{k}$
B.Pizza Hub 计算几何
贪心可以知道最优情况三角形一定有一个顶点与矩形顶点重合, 暴力枚举判断一下即可
C. 不会
D.Parentheses Matrix 贪心
假设行列都为偶数, 因为奇数很容易特判. 再假设n>m, 我们假设初状态是每行全匹配, 再逐步调整到最优.
首先注意到第一列和最后一列显然不能动, 再考虑中间列的情况, 这里可以分两种情况讨论:
1, 保证每行都匹配
这样的话显然中间列匹配的上界为n+m/2-1, 手画一下很容易达到这个上界.
2, 不保证行匹配
这样的话, 手画一下可以发现, 通过破坏第一行和最后一行可以使得列全部匹配, 达到上界n+m-4.
最后取两种情况最大值即可.
但这题交了以后竟然WA了, 找了份题解拍了下所有小于200的n和m, 没发现是哪出锅了....
E. Magic Square 纯签到题
F. 不会
G.Make ZYB Happy 后缀自动机 (以后有时间补吧)
H. Taotao Picks Apples 讨论一下再二分
I.Pop the Balloons 状压
挺好的一个状压题, 三进制压一下, 第i位的0表示无气球, 1表示该位有气球, 2表示该位扎过一个气球
然后dp一次求出每种状态的方案数, 最后再统计答案即可.
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>
#define pb push_back
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std;
typedef long long ll; const int N = 531450;
int n, m, k, t;
char a[22][22], b[22][22];
int g[N][22];
int fac[22], base[3][22];
ll dp[22][N], ans[22];
vector<int> f[22]; void work() {
scanf("%d%d%d", &n, &m, &k);
REP(i,1,n) scanf("%s", a[i]+1);
if (n<m) {
swap(n,m);
REP(i,1,n) REP(j,1,m) b[i][j]=a[j][i];
REP(i,1,n) REP(j,1,m) a[i][j]=b[i][j];
}
int mx = base[1][m]-1;
REP(i,1,n) f[i].clear();
REP(i,0,n) REP(j,0,mx) dp[i][j]=0;
REP(i,1,k) ans[i]=0;
REP(i,1,n) REP(j,1,m) if (a[i][j]=='Q') f[i].pb(j-1);
dp[0][0] = 1;
REP(i,1,n) REP(s,0,mx) if (dp[i-1][s]) {
int ss = s;
for (int j:f[i]) if (g[s][j]<2) {
dp[i][s-base[g[s][j]][j]+base[2][j]]+=dp[i-1][s];
if (!g[s][j]) ss += base[1][j];
}
dp[i][ss] += dp[i-1][s];
}
REP(s,0,mx) if (dp[n][s]) {
int f = 1, cnt = 0;
REP(j,0,m-1) {
if (g[s][j]==1) {f=0;break;}
if (g[s][j]==2) ++cnt;
}
if (f) ans[cnt] += dp[n][s];
}
ll mod = 1e12;
REP(i,1,k) {
__int128 t = (__int128)ans[i]*fac[i];
if (t>mod) printf("%lld%012lld\n",(ll)(t/mod),(ll)(t%mod));
else printf("%lld\n", (ll)t);
}
} int main() {
fac[0]=base[1][0]=1,base[2][0]=2;
REP(i,1,12) fac[i]=fac[i-1]*i;
REP(i,1,12) base[1][i]=base[1][i-1]*3;
REP(i,1,12) base[2][i]=base[2][i-1]*3;
REP(i,0,N-1) {
int t = i;
REP(j,0,12) g[i][j]=t%3, t/=3;
}
scanf("%d", &t);
REP(i,1,t) work();
}
hdu 2018多校8的更多相关文章
- HDU 2018 DP
A - 母牛的故事 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- Time Zone 【模拟时区转换】(HDU暑假2018多校第一场)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6308 Time Zone Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 6312 - Game - [博弈][杭电2018多校赛2]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312 Problem Description Alice and Bob are playing a ...
- HDU 6318 - Swaps and Inversions - [离散化+树状数组求逆序数][杭电2018多校赛2]
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=6318 Problem Description Long long ago, there was an ...
- 2018多校第十场 HDU 6430 (线段树合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6430 题意:一棵树上每个节点权值为v[i],每个节点的heard值是:以它为LCA的两个节点的GCD的 ...
- 2018多校第九场1004(HDU 6415) DP
本以为是个找规律的题一直没找出来... 题目:给你一个n*m的矩阵和1-n*m个数,问有多少种情况满足纳什均衡的点只有一个.纳什均衡点是指这个元素在所在行和所在列都是最大的. 思路:吉老师直播的思路: ...
- HDU 6397(2018多校第8场1001) Character Encoding 容斥
听了杜教的直播后知道了怎么做,有两种方法,一种构造函数(现在太菜了,听不懂,以后再补),一种容斥原理. 知识补充1:若x1,x2,.....xn均大于等于0,则x1+x2+...+xn=k的方案数是C ...
- HDU 6395(2018多校第7场1010)Sequence
不久前做过POJ3070,所以知道这题要用矩阵快速幂优化,但是这个题的递推公式中有一项⌊p/n⌋,场上就不会了... 下来才知道要用分块矩阵快速幂,因为⌊p/n⌋最多有2√p块,可以对每一块使用快速幂 ...
- HDU 6396(2018多校第七场1011) Swordsman
场上场下各种TLE到怀疑人生...经过大佬指点之后才知道要用fread才能过,一般的快读不行... 题意:一个剑客打小怪兽,有n头小怪兽,剑客和小怪兽有m个属性.只有剑客的m个属性都大于等于某个小怪兽 ...
随机推荐
- presto 0.166概述
presto是什么 是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎 是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏ ...
- sql的函数和存储过程的区别
本文部分内容转自http://www.cnblogs.com/lengbingshy/archive/2010/02/25/1673476.html 本质上没区别.只是函数有如:只能返回一个变量的限制 ...
- spring中对象转json过滤(jackson)
spring自带的json解析器是jackson jackson注解 @JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性. @JsonFormat 此注解用于属性上,作用是把 ...
- JavaScript甜点(1)
甜点1:什么是脚本语言? 脚本语言是由传统编程语言简化而来的,它与传统的编程语言既有很多相似之处,又有很多的不同之处.脚本语言的最显著的特点是:首先它不需要编译成二进制,以文本的形式存在:其次就是脚本 ...
- P2865 [USACO06NOV]路障Roadblocks
P2865 [USACO06NOV]路障Roadblocks 最短路(次短路) 直接在dijkstra中维护2个数组:d1(最短路),d2(次短路),然后跑一遍就行了. attention:数据有不同 ...
- 20145225 《网络对抗》逆向及Bof基础实践
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- 20145333茹翔 Exp5 Adobe阅读器漏洞攻击
20145333茹翔 Exp5 Adobe阅读器漏洞攻击 实验过程 主机为kali的ip地址为:192.168.1.111.靶机windows xp 的ip地址为:192.168.1.110 使用命令 ...
- VC 线程池
参照:http://www.cnblogs.com/kzloser/archive/2013/03/11/2909221.html 参照:http://blog.csdn.net/pjchen/art ...
- 使用volley来json解析
我对网络请求get和post的理解: 1.get只是从某网址获得固定数据,如我访问百度,返回就是百度的html语句: 2.post是我在访问的时候加了某些参数,如我访问某个服务器,访问的时候加了一些语 ...
- Entity Framework 6 和 MVC5
网站地址: Entity Framework 6 http://msdn.microsoft.com/en-us/data/ef.aspx MVC5 http://www.asp.net ...