http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=442

求解

x1 + x2 + x3 + .... + xn = m

其中xi属于[L, R]

不同解的个数。

这题需要用大数,要注意。

原理和以前做的一样。容斥。先算出每个xi大于等于Li的解的个数。关于这个,怎么解,看看:

http://www.cnblogs.com/liuweimingcprogram/p/6091396.html

然后容斥吧,枚举有一个数破坏条件,就是大于R的,减掉,两个,加回来。

由于每个R都不同,所以只能暴力dfs。也就是2^n的复杂度。

所以复杂度需要2^n * 常数。

推荐几个题吧。

http://www.cnblogs.com/liuweimingcprogram/p/6134521.html

http://www.cnblogs.com/liuweimingcprogram/p/6135008.html

一样的容斥思路的。

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/ /**
*
* @author Liu
*/
import java.util.*;
import java.math.*; //大数头文件
public class Main {
static final int maxn = 15;
static int[] be = new int[maxn];
static int[] en = new int[maxn];
static int n, m;
static BigInteger ans;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int t = input.nextInt();
while ((t--) > 0) { //返回值必须bool
n = input.nextInt();
m = input.nextInt();
int sum = 0;
for (int i = 1; i <= n; ++i) {
be[i] = input.nextInt();
en[i] = input.nextInt();
sum += be[i];
}
ans = BigInteger.ZERO; //清0
dfs(1, sum, 0);
System.out.println(ans);
}
}
public static BigInteger C(int n, int m) { //这个数字很大
if (n < m) return BigInteger.ZERO;
if (n == m) return BigInteger.ONE;
BigInteger ans = BigInteger.ONE;
int mx = Math.max(n - m, m); //调用最大值
int mi = n - mx;
for (int i = 1; i <= mi; ++i) {
ans = ans.multiply(BigInteger.valueOf(mx + i)); //转换成大数的方法
ans = ans.divide(BigInteger.valueOf(i)); //记得接收返回值
}
return ans;
}
public static void dfs(int cur, int tot, int has) {
if (cur == n + 1) {
if (has % 2 == 1) {
ans = ans.subtract(C(m - tot + n - 1, n - 1));
} else ans = ans.add(C(m - tot + n - 1, n - 1));
return;
}
dfs(cur + 1, tot - be[cur] + en[cur] + 1, has + 1);
dfs(cur + 1, tot, has);
}
}

ZOJ 1442 Dinner Is Ready 容斥原理 + java大数的更多相关文章

  1. java大数

    java大数还是很好用的! 基本加入: import java.math.BigInteger; import jave.math.BigDecimal; 分别是大数和大浮点数. 首先读入可以用: S ...

  2. JAVA大数运算

    java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...

  3. java大数总结【转】

    java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...

  4. HDU5047Sawtooth(java大数)

    HDU5047Sawtooth(java大数) 题目链接 题目大意:在一个矩形内画n个"M".问如何画可以把这个矩形分成最多的区域. 给出这个区域的数目. 解题思路:最好的方式就是 ...

  5. JAVA大数类

    JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...

  6. HDU4762(JAVA大数)

    Cut the Cake Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  7. ZOJ3477&JAVA大数类

    转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...

  8. 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&amp;记忆化递归

    HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...

  9. 收藏的一段关于java大数运算的代码

    收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...

随机推荐

  1. SpringMVC国际化

    如何将我们网站的其它内容(如菜单.标题等)做国际化处理呢?这就是本篇要将的内容->国际化. 一.基于浏览器请求的国际化实现: 首先配置我们项目的springservlet-config.xml文 ...

  2. [python实现设计模式]-4.观察者模式-吃食啦!

    观察者模式是一个非常重要的设计模式. 我们先从一个故事引入. 工作日的每天5点左右,大燕同学都会给大家订饭. 然后7点左右,饭来了. 于是燕哥大吼一声,“饭来啦!”,5点钟定过饭的同学就会纷纷涌入餐厅 ...

  3. os.path 大全

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回一个路径的最后一个组成部分 os.path.commonprefix(list) #返回 ...

  4. 登录框密码框input框禁止复制、粘贴、剪切和右键功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. java学习第18天(map集合)

    Map集合是将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 存储的是键值对形式的元素,键唯一,值可以重复,有点类似于数据库中的主键加数据.主要功能有: A:添加功能 put ...

  6. template.js遍历对象的写法

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟 ...

  7. 这几天帮一个朋友解决了一点小问题(RF的有些小问题及解决过程)

    最近涉猎自动化太少了,以至于都不经常更新了.最近一个朋友在做移动端自动化的时候遇到了一些小问题来找我解决.本人也不是很精通,只是接触的时间长了一点了.下面就是一些问题和解决过程: 1.她刚过来的时候, ...

  8. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  9. Datasnap Image

    delphi用,不能与java.c#互相识别. procedure TServerMethods.UpdateDoc(ItemID : integer; doc : TStream); delphi用 ...

  10. 为了解决mysqlbing翻译表字段问题而分析frm文件(持续更新)

    出处:kelvin19840813 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但 ...