FZU 2127 养鸡场

题目链接:养鸡场

这大概是这两天做的最顺利的一道了,看完题解就1A了。然而还是看完题解。

感觉是道数学题。

开始想着如果对两条边枚举范围肯定超时。但是像这么做的话,剪纸一下还是有希望的。

枚举第一条边的范围,对第一条边的每个值找出第二条边的可能取值数a,然后找出第三条边的可能取值数b。

这样的话,每个值能组成的三角形个数就是a, b之间的较小值。【为什么呢.很明显的吧....】

代码知识只用到了两边之和大于第三边,这种范围限制思想值得学习...

附代码:

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

int main() {
    int n;
    int l1, r1, l2, r2, l3, r3;
    while(cin >> n) {
        int ans = 0;
        cin >> l1 >> r1 >> l2 >> r2 >> l3 >> r3;
        for (int i=l1; i<=r1; ++i) {
            int temp = (n-i)/2;
            if (i > temp) break;
            // a2左边界
            int min2 = max(l2, i); // a2>a1
            min2 = max(min2, (n-i*2)/2+1); // a3<a1+a2
            // a2右边界
            int max2 = min(r2, (n-i)/2); //a1<a3

            // a3左边界
            int min3 = max(l3, n-i-max2); // a3>a2
            int max3 = min(r3, n-i-min2); //a3>a2
            temp = min(max2-min2+1, max3-min3+1);
            if (temp>0)
                ans += temp;
        }
        printf("%d\n", ans);
    }
    return 0;
}

  

时间: 2024-10-08 04:24:28

FZU 2127 养鸡场的相关文章

FZU 2150 Fire Game(点火游戏)

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h2 { margin-top: 5.0000pt; margin-bottom: 5.0000pt; text-align: left; font-family: 宋体; font-weight: bold; font-size: 18.0000pt } h3 {

FZU 1096 QS Network

QS Network Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on FZU. Original ID: 1096 64-bit integer IO format: %I64d      Java class name: Main In the planet w-503 of galaxy cgb, there is a kind of intelligent creature named QS.

FZU 1759 欧拉函数 降幂公式

Description Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1<=B<=10^1000000). Input There are multiply testcases. Each testcase, there is one line contains three integers A, B and C, separated by a singl

ACM: FZU 2150 Fire Game - DFS+BFS+枝剪 或者 纯BFS+枝剪

FZU 2150 Fire Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this boar

FZU 2112 并查集、欧拉通路

原题:http://acm.fzu.edu.cn/problem.php?pid=2112 首先是,票上没有提到的点是不需要去的. 然后我们先考虑这个图有几个联通分量,我们可以用一个并查集来维护,假设有n个联通分量,我们就需要n-1条边把他们连起来. 最后对于每个联通分量来说,我们要使它能一次走完,就是要求他是否满足欧拉通路,也就是这个联通分量中至多有2个度为奇数的点,每多出2个度为奇数的点,就多需要一条边(因为单个连通分量的所有点的度数之和为偶数,所以不可能存在奇数个奇数度数的点). 1 #i

FZU Problem 2102 Solve equation (数学啊 )

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2102 Problem Description You are given two positive integers A and B in Base C. For the equation: A=k*B+d We know there always existing many non-negative pairs (k, d) that satisfy the equation above. Now in

FZU Problem 2104 Floor problem (数学啊 )

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2104 Problem Description In this problem, we have f(n,x)=Floor[n/x]. Here Floor[x] is the biggest integer such that no larger than x. For example, Floor[1.1]=Floor[1.9]=1, Floor[2.0]=2. You are given 3 posit

FZU 2105 Digits Count(按位维护线段树)

[题目链接] http://acm.fzu.edu.cn/problem.php?pid=2105 [题目大意] 给出一个序列,数字均小于16,为正数,每次区间操作可以使得 1. [l,r]区间and一个数 2. [l,r]区间or一个数 3. [l,r]区间xor一个数 4. [l,r]区间查询和 操作数均为小于16的非负整数 [题解] 由于操作数很小,因此我们可以按位维护四棵线段树,表示二进制中的第i位, 对于and操作,只有当and的当前位为0时才对区间有影响,效果是将区间全部变为0, 对

FZU 2020 组合 (Lucas定理)

题意:中文题. 析:直接运用Lucas定理即可.但是FZU好奇怪啊,我开个常数都CE,弄的工CE了十几次,在vj上还不显示. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream>