传送门:http://arc082.contest.atcoder.jp/tasks/arc082_c

本题是一个平面几何问题。

在平面直角坐标系中有一个n元点集U={Ai(xi,yi)|1≤i≤n}。考虑以U的子集S中的点为顶点围成的凸多边形P,若这个凸多边形P内(含边界)的点数为k,则这个子集S的权值为f(S)=2k-|S|。求所有子集S的权值之和$\sum_{S\subseteq U}f(S)$(对998,244,353取余)。

定义一个点集上的凸包运算H:GS。即:平面上的一个点集G,有凸包S=H(G)。

设凸多边形P内的点(除顶点外)构成的集合为T,则|T|=k-|S|。于是,f(S)=2|T|,即f(S)为T的子集个数。设T’是T的一个子集,则:由于集合S=H(ST’),即SST’的凸包,故集合ST’对f(S)的贡献为1。

于是,对于U的一个子集G,若凸多边形P的顶点集为H(G),则集合Gans的贡献为1。因此,在不考虑多点共线的前提下,$ans=card\{G|G\subseteq U,G\ge 3\}=2^n -(C_{n}^{2}+n+1)$。

若考虑多点共线的情形,则枚举之。设1≤j<i≤n,记L(i,j)={Ak|Ak on AiAj,1≤k<j<i≤n},则在G≥2的情形下,凸包面积为0的情况数为$\sum_{1\ge j\ge i\ge n}2^{|L(i,j)|}$。

因此,$ans=card\{G|G\subseteq U,G\ge 3\}-\sum_{1\ge j\ge i\ge n}2^{|L(i,j)|}$。

参考程序如下:

#include <stdio.h>
#define MAX_N 201
#define MOD 998244353 int x[MAX_N], y[MAX_N], p[MAX_N]; int main(void)
{
int n;
scanf("%d", &n);
for (int i = ; i < n; i++)
scanf("%d%d", &x[i], &y[i]);
p[] = ;
for (int i = ; i < n; i++)
p[i + ] = (p[i] << ) % MOD;
int ans = p[n] - n - ;
for (int i = ; i < n; i++) {
for (int j = ; j < i; j++) {
int cnt = ;
for (int k = ; k < j; k++) {
if ((x[i] - x[j]) * (y[i] - y[k]) == (x[i] - x[k]) * (y[i] - y[j]))
cnt++;
}
ans -= p[cnt];
ans += MOD;
ans %= MOD;
}
}
printf("%d\n", ans);
return ;
}

AtCoder ARC 082E - ConvexScore的更多相关文章

  1. 【题解】Atcoder ARC#90 F-Number of Digits

    Atcoder刷不动的每日一题... 首先注意到一个事实:随着 \(l, r\) 的增大,\(f(r) - f(l)\) 会越来越小.考虑暴力处理出小数据的情况,我们可以发现对于左端点 \(f(l) ...

  2. AtCoder ARC 076E - Connected?

    传送门:http://arc076.contest.atcoder.jp/tasks/arc076_c 平面上有一个R×C的网格,格点上可能写有数字1~N,每个数字出现两次.现在用一条曲线将一对相同的 ...

  3. AtCoder ARC 076D - Built?

    传送门:http://arc076.contest.atcoder.jp/tasks/arc076_b 本题是一个图论问题——Manhattan距离最小生成树(MST). 在一个平面网格上有n个格点, ...

  4. Atcoder ARC 082C/D

    C - Together 传送门:http://arc082.contest.atcoder.jp/tasks/arc082_a 本题是一个数学问题. 有一个长度为n的自然数列a[1..n],对于每一 ...

  5. 【题解】 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)

    题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: ...

  6. 【题解】Atcoder ARC#96 F-Sweet Alchemy

    首先,我们发现每一个节点所选择的次数不好直接算,因为要求一个节点被选择的次数大于等于父亲被选择的次数,且又要小于等于父亲被选择的次数 \(+D\).既然如此,考虑一棵差分的树,规定每一个节点被选择的次 ...

  7. AtCoder ARC 090 E / AtCoder 3883: Avoiding Collision

    题目传送门:ARC090E. 题意简述: 给定一张有 \(N\) 个点 \(M\) 条边的无向图.每条边有相应的边权,边权是正整数. 小 A 要从结点 \(S\) 走到结点 \(T\) ,而小 B 则 ...

  8. 【题解】Atcoder ARC#67 F-Yakiniku Restaurants

    觉得我的解法好简单,好优美啊QAQ 首先想想暴力怎么办.暴力的话,我们就枚举左右端点,然后显然每张购物券都取最大的值.这样的复杂度是 \(O(n ^{2} m)\) 的.但是这样明显能够感觉到我们重复 ...

  9. 【题解】Atcoder ARC#85 E-MUL

    ……没啥可说的.最大权闭合子图,跑下dinic就好了…… #include <bits/stdc++.h> using namespace std; #define maxn 500000 ...

随机推荐

  1. cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检測(1)

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  2. 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

    这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出 ...

  3. 虚拟机中的ip和本机的ip不是一个网段的

    将虚拟机的网络适配器 模式改为桥接模式 然后就会和主机处于同一个网段了

  4. Android+Jquery Mobile学习系列(5)-SQLite数据库

    SQLite是轻量级的.嵌入式的.关系型数据库,目前已经在iPhone.Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠. 因为Android已经集成了SQLit ...

  5. hdu3652B-number(数位dp)

    B-number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  6. 手机网站下拉加载数据js(简单版)

    加载内容的地方html <div class="bgcolor_f0 clearfix"> <div class="recharge"> ...

  7. Java导入excel并保存到数据库

    首先建立好excel表格,并对应excel表格创建数据库表. 前台jsp页面:其中包含js <%@ page language="java" import="jav ...

  8. 4 Things I Wish I Would Have Known When I Started My Software Development Career【当我最开始从事软件工程师的时候我希望我知道的四件事】

    英文原文:http://simpleprogrammer.com/2013/08/19/software-development-career/ My software development car ...

  9. Linux scp 后台运行传输文件

    Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...

  10. [Advanced Algorithm] - Symmetric Difference

    题目 创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组. 给出两个集合 (如集合 A = {1, 2, 3}和集合 B = ...