ural 1091. Tmutarakan Exams 和 codeforces 295 B. Greg and Graph
ural 1091 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1091
题意是从1到n的集合里选出k个数,使得这些数满足gcd大于1
解法:
因子有2的数: 2,4,6,8,10,12,14.。。
因子有3的数:3,6,9,12,15,18,21.。。
因子有5的数:5,10,15,18,21,24.。。
可以看出这里求出的集合时会有重复的,得去从。可惜没有学过容斥原理。不过解决这题还是没问题的。
50以内的素因子有:2, 3, 5, 7, 11, 13, 17, 19, 23只有这些素因子才可能产生集合元素大于2的集合
排除重复度为2的集合: 6{2,3(因子2和因子3造成集合重复)}, 10{2,5},14{2,7}, 22{2, 11}, 15{3,5},21{3,7}
代码为:
IN = lambda : map(int, raw_input().split() )
prime = [2, 3, 5, 7, 11, 13, 17, 19, 23]
x = [6, 10, 14, 22, 15, 21] k, s = IN()
c =[ [0]*(s+1) for i in xrange(s+1) ]
for i in xrange(s+1):
c[i][1] = i; c[i][0] = 1; c[i][i]=1
for i in xrange(1,s+1):
for j in xrange(1, i):
c[i][j] = c[i-1][j]+c[i-1][j-1] sum = 0
for v in prime:
if s/v<k: break
sum += c[s/v][k]
for v in x:
if s/v<k: break
sum -= c[s/v][k] print sum if sum<10000 else 10000
cf 295B http://codeforces.com/problemset/problem/295/B
题意是:按照一定顺序删除点并删除与点相连的线,求删除该点前的点集合里两两点的最短距离。
这题我以前看到过类似的,很自然就想到了从后往前处理,每次把这个点加进去循环更新距离,这个类似floyed
python代码:肯能是python效率问题吧,这个代码过不了。TLE,但是换成c++就过了
from sys import stdin,stdout
IN = lambda: [ int(x) for x in stdin.readline().split() ]
n = int( stdin.readline().strip() )
edge = []
for i in xrange(n):
edge.append( IN() )
x = IN()
ans = [0]*n for k in xrange(n-1, -1, -1):
for i in xrange(n):
for j in xrange(n):
edge[i][j] = min( edge[i][j], edge[i][x[k] -1] + edge[x[k]-1 ][j] )
for i in xrange(k, n):
for j in xrange(k, n):
ans[k] += edge[x[i]-1 ][x[j]-1 ]
print ' '.join( map(str,ans ) )
c++ code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; #define maxn 505
int n, edge[maxn][maxn];
int x[maxn];
long long ans[maxn]; int main(int argc, char**argv){
cin >> n;
for ( int i=; i<n; ++i )
for ( int j=; j<n; ++j )
cin >> edge[i][j];
for ( int i=; i<n; ++i ) cin >>x[i];
for ( int k=n-; k>=; --k ){
for ( int i=; i<n; ++i )
for ( int j=; j<n; ++j )
edge[i][j] = min( edge[i][j], edge[i][x[k]- ]+ edge[x[k]-][j] );
ans[k] = ;
for ( int i=k; i<n; ++i )
for ( int j=i+; j<n; ++j )
ans[k] += edge[x[i]- ][x[j]- ]+edge[x[j]- ][x[i]- ];
}
for ( int i=; i<n; ++i )
printf("%I64d ", ans[i]);
}
ural 1091. Tmutarakan Exams 和 codeforces 295 B. Greg and Graph的更多相关文章
- ural 1091. Tmutarakan Exams(容斥原理)
1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...
- Ural 1091 Tmutarakan Exams
Tmutarakan Exams Time Limit: 1000ms Memory Limit: 16384KB This problem will be judged on Ural. Origi ...
- Codeforces 295 B. Greg and Graph
http://codeforces.com/problemset/problem/295/B 题意: 给定一个有边权的有向图.再给定一个1~n的排列. 按排列中的顺序依次删除点,问每次删除后,所有点对 ...
- ural 1091. Tmutarakan Exams(容斥)
http://acm.timus.ru/problem.aspx? space=1&num=1091 从1~s中选出k个数,使得k个数的最大公约数大于1,问这种取法有多少种. (2<=k ...
- URAL - 1091 Tmutarakan Exams (简单容斥原理)
题意:K个不同数组成的集合,每个数都不超过S且它们的gcd>1.求这样的数的个数 分析:从2开始枚举gcd,但这样会发生重复.譬如,枚举gcd=2的集合个数和gcd=3的集合个数,枚举6的时候就 ...
- 1091. Tmutarakan Exams
1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...
- 容斥原理--计算并集的元素个数 URAL 1091
在计数时,必须注意没有重复,没有遗漏.为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计 ...
- F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数
F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 的 ...
- 2014 Super Training #3 H Tmutarakan Exams --容斥原理
原题: URAL 1091 http://acm.timus.ru/problem.aspx?space=1&num=1091 题意:要求找出K个不同的数字使他们有一个大于1的公约数,且所有 ...
随机推荐
- 1.Bloom filter
Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错 ...
- Mongodb FAQ fundamentals(基础篇)
Mongodb FAQ(基础篇),是官方文档的翻译.如有翻译不到之处,还请谅解. 1.Mongdb是什么数据库? mongodb是一个面向文档(document)的数据库,既不支持表连接,也不支持事务 ...
- Oracle11g用户密码过期
今天一早来了,发现部署的网站访问报500,看日志,显示数据库连不上.然后我用sqldeveloper登录同样登不上,于是想到了之前碰到过的一个问题,Oralce11g的新特性:密码180天自动过期.随 ...
- 数组方法slice()把类数组转成数组和复制一个数组
function a(){ console.log(arguments.length); var c = [].slice.call(arguments);//类数组转成数组 c.push(5); c ...
- sjtu1585 oil
Description Crystal家的公司最近承包了一个大油田.整块油田为一个矩形区域,被划分为\(n \times m\)个小块. Crystal亲自调查了每个小块的石油储备量.这些数据表示为\ ...
- [BZOJ 3774] 最优选择 【最小割】
题目链接:BZOJ - 3774 题目分析 此题与“文理分科”那道题目有些类似.都是使用最小割来求解,先加上可能获得的权值,在减掉必须舍弃的权值(最小割). 文理分科是规定每个人和 S 连就是选文,和 ...
- HDU3400+三分
三分出两个中间的位置即可. /* 两次三分 */ #include<stdio.h> #include<string.h> #include<stdlib.h> # ...
- android gridview按钮边框和定制点击颜色
<?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="ht ...
- 第五章 HID设备
5.1 HID介绍 为简化USB设备的开发过程,USB提出了设备类的概念.所有设备类都必须支持标准USB描述符和标准USB设备请求.如果有必要,设备类还可以自行定义其专用的描述符和设备请求,这分别被称 ...
- 知识总结: Activity的四种启动模式
通常情况下,一个应用有一个Task,这个Task就是为了完成某个工作的一系列Activity的集合.而这些Activity又被组织成了堆栈的形式.当一个Activity启动时,就会把它压入该Task的 ...