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的更多相关文章

  1. ural 1091. Tmutarakan Exams(容斥原理)

    1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...

  2. Ural 1091 Tmutarakan Exams

    Tmutarakan Exams Time Limit: 1000ms Memory Limit: 16384KB This problem will be judged on Ural. Origi ...

  3. Codeforces 295 B. Greg and Graph

    http://codeforces.com/problemset/problem/295/B 题意: 给定一个有边权的有向图.再给定一个1~n的排列. 按排列中的顺序依次删除点,问每次删除后,所有点对 ...

  4. ural 1091. Tmutarakan Exams(容斥)

    http://acm.timus.ru/problem.aspx? space=1&num=1091 从1~s中选出k个数,使得k个数的最大公约数大于1,问这种取法有多少种. (2<=k ...

  5. URAL - 1091 Tmutarakan Exams (简单容斥原理)

    题意:K个不同数组成的集合,每个数都不超过S且它们的gcd>1.求这样的数的个数 分析:从2开始枚举gcd,但这样会发生重复.譬如,枚举gcd=2的集合个数和gcd=3的集合个数,枚举6的时候就 ...

  6. 1091. Tmutarakan Exams

    1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...

  7. 容斥原理--计算并集的元素个数 URAL 1091

    在计数时,必须注意没有重复,没有遗漏.为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计 ...

  8. F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数

    F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 的 ...

  9. 2014 Super Training #3 H Tmutarakan Exams --容斥原理

    原题: URAL 1091  http://acm.timus.ru/problem.aspx?space=1&num=1091 题意:要求找出K个不同的数字使他们有一个大于1的公约数,且所有 ...

随机推荐

  1. 【重构】m站重构思路

    不重构全部模块,只对以下内容做基础重构就可以,第三方方式 1.验证码作为独立的服务,用户写入验证码获得id,服务端获取验证码id对应内容(根据时间和存储空间 清理验证码) 2.支付接口h5环境独立配置 ...

  2. 对于shell脚本参数获取时的一点小技巧

    问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i 取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$ ...

  3. 2014年50个程序员最适用的免费JQuery插件

    有用的jQuery库是设计师和开发者之间一个非常熟悉的短语.这是现在互联网中最流行的JavaScript函数库之一.每个设计师和开发人员都应该知道它的重要性,而且熟悉它的功能和特点. jQuery几乎 ...

  4. linux-0.11内核 任务的堆栈切换

    http://blog.163.com/di_yang@yeah/blog/static/86118492201212534924900/ 一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆 ...

  5. 李洪强iOS开发本人集成环信的经验总结_02_基本配置

     李洪强iOS开发本人集成环信的经验总结_02_基本配置 来到APPdelegate中做一些配置 01 - 导入头文件 02 - 在didFinishLaunchingWithOptions用法总结 ...

  6. easyui源码翻译1.32--accordion(手风琴)

    前言 前几天加班比较忙 未能及时更新翻译的 今天多发布几篇..下载该插件翻译源码 Accordion 分类空间允许用户使用多面板,但在同一时间只会显示一个.每个面板都内建支持展开和折叠功能.点击一个面 ...

  7. 网络基本功(八):细说TCP滑动窗口

    https://community.emc.com/message/842129#842129

  8. Google的代码风格规范,各种语言都很全

    https://code.google.com/p/google-styleguide/

  9. Java按位置解析文本文件(使用Swing选择文件)

    工作中遇到这样的一个需求,按位置解析一些文本文件,它们由头部.详情.尾部组成,并且每一行的长度可能不一样,每一行代表的意思也可能不一样,但是每一行各个位置代表的含义已经确定了. 例如有下面这样一段文本 ...

  10. html5 鼠标跟随运动

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...