Codeforces Round #315 (Div. 2)

来源:互联网 发布:牛顿环实验数据及 编辑:程序博客网 时间:2024/05/22 15:17

题目传送:Codeforces Round #315 (Div. 2)



A. Music

题意较难懂,不过只要推公式就好了

注意到S+(q - 1) * t = q * t;

只需要t等于S即可,即每次增加S秒,就需要重新听一次歌

AC代码:

#include <map>#include <set>#include <list>#include <cmath>#include <deque>#include <queue>#include <stack>#include <bitset>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <complex>#include <cstdlib>#include <cstring>#include <fstream>#include <sstream>#include <utility>#include <iostream>#include <algorithm>#include <functional>#define LL long long#define INF 0x7fffffffusing namespace std;int main() {    int T, S, q;    scanf("%d %d %d", &T, &S, &q);    int ans = 0;    while(S < T) {        S = S * q;        ans ++;    }    cout << ans << endl;    return 0;}



B. Inventory

水题。。

AC代码:

#include <map>#include <set>#include <list>#include <cmath>#include <deque>#include <queue>#include <stack>#include <bitset>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <complex>#include <cstdlib>#include <cstring>#include <fstream>#include <sstream>#include <utility>#include <iostream>#include <algorithm>#include <functional>#define LL long long#define INF 0x7fffffffusing namespace std;int n;int vis[100005];int ans[100005];int pos[100005];int pos_cnt;int main() {    pos_cnt = 0;    scanf("%d", &n);    for(int i = 1; i <= n; i ++){        int t;        scanf("%d", &t);        if(t <= n && t >= 1 && vis[t] == 0) {            ans[i] = t;            vis[t] = 1;        }        else {            pos[pos_cnt ++] = i;        }    }    int p = 1;    for(int i = 0; i < pos_cnt; i ++) {        for(;p <= n; p ++) {            if(vis[p] == 0) {                ans[pos[i]] = p;                vis[p] = 1;                break;            }        }    }    for(int i = 1; i < n; i ++) {        printf("%d ", ans[i]);    }    printf("%d\n", ans[n]);    return 0;}



C. Primes or Palindromes?

枚举大法好。。

AC代码:

#include <map>#include <set>#include <list>#include <cmath>#include <deque>#include <queue>#include <stack>#include <bitset>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <complex>#include <cstdlib>#include <cstring>#include <fstream>#include <sstream>#include <utility>#include <iostream>#include <algorithm>#include <functional>#include <ctime>#define LL long long#define INF 0x7fffffffusing namespace std;const int maxn = 2000005;int pi[maxn];int vis[maxn];int hw[maxn];void init() {    pi[1] = 0;    for(int i = 2; i < maxn; i ++) {        if(!vis[i]) {            pi[i] = pi[i - 1] + 1;            for(int j = 2 * i; j < maxn; j += i) {                vis[j] = 1;            }        }        else pi[i] = pi[i-1];    }}int p, q;int search() {    for(int i = maxn - 1; i >= 0; i --) {        if((LL)pi[i] * q <= (LL)hw[i] * p) return i;    }}bool fun(int n) {    int m = 0;    int t = n;    while(t) {        m = m * 10 + t % 10;        t /= 10;    }    //cout << m << " " << n << endl;    return m == n;}int main() {    init();    hw[0] = 0;    for(int i = 1; i < maxn; i++) {        if(fun(i)) hw[i] = hw[i-1] + 1;        else hw[i] = hw[i-1];    }    scanf("%d %d", &p, &q);    int ans = search();    printf("%d\n", ans);    return 0;}



D. Symmetric and Transitive

题意:就是去求在一个含有n个元素的集合里,满足对称性和传递性,不满足自反性的关系有多少种。

这里有一个奇怪的东西——Bell数

Bell数,表示基数为n的集合划分数目,也就是对应的等价关系个数

可以发现一个奇怪的规律:ans[n] = Bell[n +1] - Bell[n];

然后根据Bell三角形打表就可以了

AC代码:

#include <map>#include <set>#include <list>#include <cmath>#include <deque>#include <queue>#include <stack>#include <bitset>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <complex>#include <cstdlib>#include <cstring>#include <fstream>#include <sstream>#include <utility>#include <iostream>#include <algorithm>#include <functional>#define LL long long#define INF 0x7fffffffusing namespace std;const int MOD = 1e9+7;LL Bell[4005][4005];int main() {    int n;    scanf("%d", &n);    Bell[0][0] = 1;    for(int i = 1; i <= n; i ++) {        Bell[i][0] = Bell[i - 1][i - 1];        for(int j = 1; j <= i; j ++) {            Bell[i][j] = (Bell[i][j - 1] + Bell[i - 1][j - 1]) % MOD;        }    }    printf("%I64d\n", Bell[n][n - 1]);    return 0;}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 虾缸的过滤吸虾怎么办 加热棒坏了鱼怎么办 钢材软打孔断钻头怎么办 空调余额下水管检查口按不上怎么办 风机盘管噪音大怎么办 混凝土水泥放少了怎么办 门式钢梁端板连接下料短啦怎么办? 灌桩导管堵了怎么办 公路车尾钩歪了怎么办 铃木羚羊车大灯不亮怎么办 玻璃瓶打碎了里面食物怎么办 玻璃门上轴坏了怎么办 配筋面积小了怎么办 ps大文件存不了怎么办 挑架钢丝绳拉环未预埋怎么办 出现偏拉的梁怎么办 尾插不好上锡怎么办 汽车玻璃上的焊点很难去除怎么办 拆苹果硬盘焊点掉了怎么办 玻璃被电焊滴到怎么办 gta5特质卡宾装了消音器怎么办 联想V形底座不好用怎么办 华为手环不计步怎么办 小米手环不计步怎么办 小米手环骑自行车不计步数怎么办 放逐之城着火了怎么办 城市天际线地价过低怎么办 放逐之城铁采完怎么办 车钥匙反锁车内怎么办 眼镜用热水洗了怎么办 眼镜放平后眼镜腿不平怎么办 瞄准镜十字歪了怎么办 瞄准镜调到底了怎么办 墨镜镜片刮花了怎么办 usb小风扇不转怎么办 金属眼镜压歪了怎么办 眼镜被电焊打了怎么办 电焊闪的眼睛疼怎么办 烧了电焊眼睛疼怎么办 用了电焊眼睛痛怎么办 烧电焊脸上红痛怎么办