博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 12633 Super Rooks on Chessboard [fft 生成函数]
阅读量:4559 次
发布时间:2019-06-08

本文共 1287 字,大约阅读时间需要 4 分钟。

Super Rooks on Chessboard

题意:

超级车可以攻击行、列、主对角线3 个方向。

R * C 的棋盘上有N 个超级车,问不被攻击的格子总数。


行列好好做啊,就是不被攻击的行数*列数

减去主对角线的,就是不被攻击的行列中求\(r - c = d\)的三元组个数

考虑写出行和列生成函数 \(A(x)=\sum x^{r_i},B(x)=\sum x^{-c_i}\),乘起来就行了

可以乘上\(x^c\)来避免负指数

#include 
#include
#include
#include
#include
using namespace std;typedef long long ll;const int N = (1<<17) + 5;const double PI = acos(-1.0);inline int read() { char c=getchar(); int x=0,f=1; while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();} return x*f;}struct meow{ double x, y; meow(double a=0, double b=0):x(a), y(b){}};meow operator +(meow a, meow b) {return meow(a.x+b.x, a.y+b.y);}meow operator -(meow a, meow b) {return meow(a.x-b.x, a.y-b.y);}meow operator *(meow a, meow b) {return meow(a.x*b.x-a.y*b.y, a.x*b.y+a.y*b.x);}meow conj(meow a) {return meow(a.x, -a.y);}typedef meow cd;namespace fft { int n, rev[N]; cd omega[N], omegaInv[N]; void init(int lim) { n = 1; int k = 0; while(n < lim) n <<= 1, k++; for(int i=0; i
>1]>>1) | ((i&1)<<(k-1)); for(int i=0; i
>1; for(cd *p = a; p != a+n; p += l) for(int k=0; k

转载于:https://www.cnblogs.com/candy99/p/6749782.html

你可能感兴趣的文章
使用命令wsimport构建WebService客户端[转]
查看>>
第八遍:链接详解
查看>>
Qt5.5 使用smtp发邮件的各种坑
查看>>
js奇葩错误 字符串传递问题
查看>>
人之初,性本恶
查看>>
springboot 端口号
查看>>
使用AChartEngine画动态曲线图
查看>>
安卓项目五子棋代码详解(四)
查看>>
urllib 学习一
查看>>
bzoj4196 [Noi2015]软件包管理器——树链剖分
查看>>
kafka源码阅读环境搭建
查看>>
UI设计
查看>>
androidtab
查看>>
Windows Phone 自定义弹出框和 Toast 通知
查看>>
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
让我们再聊聊浏览器资源加载优化
查看>>
underscore demo
查看>>
CSS hack
查看>>