欧拉公式

LRJ算法入门经典第二版上面写错了,害得我想了半天。。。

V : 点数, E :边数  F :面数

欧拉公式 V - E + F = 2;

V =  n + n / 4 sum(i * (n - 2 - i));  [ 0 <= i <= n - 2];

E = n + n / 2 sum((i * (n - 2 - i ) + 1); [ 0 <= i <= n - 2];

代码实现:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<list>
#include<cmath>
#include<string>
#include<sstream>
#include<ctime>
using namespace std;
#define _PI acos(-1.0)
#define INF (1 << 10)
#define esp 1e-9
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> pill;
/*===========================================
===========================================*/
LL _V(LL n){  /*求点*/
    LL ans = 0;
    for(LL i = 0 ; i <= n - 2 ; i++)
        ans = ans + i * (n - 2 - i);
    LL _ans = n + n * ans / 4;
    return _ans;
}
LL _E(LL n){ /*求面*/
    LL ans = 0;
    for(LL  i = 0 ; i <= n - 2; i++)
        ans = ans + (i * (n - 2 - i) + 1);
    LL _ans = n + n * ans / 2;
    return _ans;
}
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        LL N;
        scanf("%I64d",&N);
        LL V = _V(N);
        LL E = _E(N);
        printf("%I64d\n",1 + E - V);
    }
    return 0;
}

欧拉公式

时间: 2024-12-20 18:45:23

欧拉公式的相关文章

poj2284 That Nice Euler Circuit(欧拉公式)

题目链接:poj2284 That Nice Euler Circuit 欧拉公式:如果G是一个阶为n,边数为m且含有r个区域的连通平面图,则有恒等式:n-m+r=2. 欧拉公式的推广: 对于具有k(k≥2)个连通分支的平面图G,有:n-m+r=k+1. 题意:给出连通平面图的各顶点,求这个欧拉回路将平面分成多少区域. 题解:根据平面图的欧拉定理“n-m+r=2”来求解区域数r. 顶点个数n:两两线段求交点,每个交点都是图中的顶点. 边数m:在求交点时判断每个交点落在第几条边上,如果一个交点落在

uva 10213 How Many Pieces of Land (欧拉公式计算多面体)

题意:在一个圆上取n个点,求最多能将圆分为多少块: 思路:欧拉公式计算多面体: 欧拉公式:简单多面体的顶点数V.面数F及棱数E之间的关系为V+F-E=2; 首先考虑点数v,有n个在圆上的点,任取一点x,考虑与x相连的每条对角线,假设对角线左边有i个顶点,则右边应有(n-2-i)个顶点,这些顶点相互连接可以产生i*(n-i-2)个顶点,再将所有的x与所有的对角线l求和.每个交点分别算了4次(一个交点由两条线产生,有4个圆上的点会计算到),除以4: V=n+n/4*(西格玛i=1到n-3) i*(n

世界的本质是旋转(1)复平面与欧拉公式

最近闲来无事,翻看起旧课本<信号与系统>,不经意间对一些基础问题有了新的理解角度.在上学的时候,我搞不清楚,这傅里叶变换是毛?明明一个时域波形,非要搞出个频率出来,虽然很好用,但是看不见摸不着的,实在让人头大. 1.欧拉公式 ejθ=cosθ+jsinθ 复平面上对角度取复指数,被定义为单位圆上角度为θ的向量,亦可理解为单位向量"1"沿逆时针从X+轴旋转θ度后的结果. cosθ 是横坐标,sinθ 是纵坐标,通过因子 j 与实坐标组合起来,表示一个确切的位置. 当然,通过一

hdu5047 找规律+欧拉公式

题意:在一个正方形内画n个M,求最多能分成多少个平面 sol:这种求划分成多少个平面的题第一反应肯定是欧拉公式: 二维平面上的欧拉公式:V+F-E=1 (V:Vertices,F:Faces,E:Edges) 然后我们画出三个M的情况看一下:(果然Pad是个画图神器..去年网赛的时候光画图就画了半天...) 最多的情况就是每两个M都相交 先分析vertices:两个M相交共16个交点,再加上每个M和正方形相交又有2个交点. 所以加起来就是V=16*C(n,2)+2*n=8*n*n-6n 再来看e

UVa 10213 (欧拉公式+Java大数) How Many Pieces of Land ?

题意: 一块圆形土地,在圆周上选n个点,然后两两连线,问把这块土地分成多少块? 分析: 首先紫书上的公式是错的,不过根据书上提供的思路很容易稍加修改得到正确答案! 然后推公式吧,这里用到平面图的欧拉公式,V - E + F = 2,其中V表示顶点个数,E表示边的个数,F表示面的块数. 减去最外面的无限大的面,所求ans = E - V + 1 假设n≥4,从圆周上的一个点出发枚举一条对角线,左边有i个点,右边有n-2-i个点,将左右两边的点两两相连,就在这条对角线上得到个交点.每个交点被重复计算

ZOJ--3574--Under Attack II【线段树+欧拉公式】

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3574 题意:一个坐标系,给出x1.x2限定左右边界,有n条直线,告诉每条直线的k和b,问在x1.x2区间内空间被直线分割成几部分 思路: 这道题是比赛时做的,AC之后发现别人都是用归并排序求逆序对数来解的. 说我的解法吧,首先拿到题的时候发现是划分区域这样的,第一下就想到了欧拉公式,但是n有30000,n^2找交点肯定要超时.土豪在纸上画了一下,一条直线必然在x1和

POJ2284 That Nice Euler Circuit (欧拉公式)(计算几何 线段相交问题)

That Nice Euler Circuit Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 1977   Accepted: 626 Description Little Joey invented a scrabble machine that he called Euler, after the great mathematician. In his primary school Joey heard about

点、边、面——欧拉公式

题目描述: 原理:欧拉公式 具体细节:顶点数和边数 //多少块土地 #include<iostream> using namespace std; int main() { int n; cin >> n; int v, e, f; //欧拉公式 V-E+F=2 int v0 = 0, e0 = 0; for(int i = 0; i <= n-2; i++) { v0 += i * (n - 2 - i); e0 += i * (n - 2 - i) + 1; } v =

POJ--2284--That Nice Euler Circuit【平面图欧拉公式】

链接:http://poj.org/problem?id=2284 题意:一个自己主动绘图的机器在纸上(无限大)绘图,笔尖从不离开纸,有n个指令,每一个指令是一个坐标,由于笔尖不离开纸,所以相邻的坐标会连有一条直线,最后画笔再回到起始点. 所以这个图是一个连通图,而且画笔走过的路径是一个欧拉回路. 如今问题来了.这个图形将平面分成了几部分. 思路:题目说明确一些就是告诉你一些几何信息问平面被分成了几部分.能够用欧拉公式来做 欧拉公式:如果图的顶点个数为n,边数为m,区域数位r,则有 n - m