编程之美初赛B
来源:互联网 发布:二维条码扫描软件 编辑:程序博客网 时间:2024/05/17 01:42
题目3 : 八卦的小冰
- 样例输入
13 2 80 1 01 2 11 3 131 11 232 2 3 231 23
- 样例输出
Case #1:122
3
简单模拟题
#include <iostream>#include <cstring>#include <cstdio>using namespace std;int t,n,m,q,x,y,z,type;int a[102][102];int sex[102];int main(){ scanf("%d",&t); for(int item = 1; item <= t; item ++){ scanf("%d%d%d",&n,&m,&q); memset(a,0,sizeof(a)); for(int i = 1; i <= n; i ++){ scanf("%d",&sex[i]); } for(int i = 0; i < m; i ++){ scanf("%d%d%d",&x,&y,&z); a[x][y] = z; a[y][x] = z; } printf("Case #%d:\n",item); for(int i = 0; i < q; i++){ scanf("%d",&type); if(type == 1){ scanf("%d",&x); sex[x] = sex[x] ^ 1; } else if(type == 2){ scanf("%d%d%d",&x,&y,&z); a[x][y] = a[y][x] = z; } else{ int ans = 0; for(int j = 1; j <= n; j++){ for(int k = j + 1; k <= n; k++){ if(sex[j] != sex[k]){ ans += a[j][k]; } } } printf("%d\n",ans); } } } return 0;}
题目1 : 扑克牌
打表枚举时间限制:2000ms单点时限:1000ms内存限制:256MB- 样例输入
51 TC2 TC TS5 2C AD AC JC JH4 AC KC QC JC6 AC AD AS JC JD KD
- 样例输出
Case #1: 1Case #2: 0Case #3: 48Case #4: 24Case #5: 120
描述
一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数。
牌的表示方法为XY,其中X为面值,为2、3、4、5、6、7、8、9、T、J、Q、K、A中的一个。Y为花色,为S、H、D、C中的一个。如2S、2H、TD等。
输入
第一行为一个整数T,为数据组数。
之后每组数据占一行。这一行首先包含一个整数N,表示给定的牌的张数,接下来N个由空格分隔的字符串,每个字符串长度为2,表示一张牌。每组数据中的扑克牌各不相同。
输出
对于每组数据输出一行,形如"Case #X: Y"。X为数据组数,从1开始。Y为可能的方案数,由于答案可能很大,请输出模264之后的值。
数据范围
1 ≤ T ≤ 20000
小数据
1 ≤ N ≤ 5
大数据
1 ≤ N ≤ 52
#include <iostream>#include <cstring>#include <cstdio>using namespace std;int t,n;char a[2];int num[15];int cou[5];void add(char a[]){ int tmp; if(a[0] >= '2' && a[0] <= '9') tmp = a[0] - '0'; else if(a[0] == 'T') tmp = 10; else if(a[0] == 'J') tmp = 11; else if(a[0] == 'Q') tmp = 12; else if(a[0] == 'K') tmp = 13; else tmp = 14; num[tmp] ++;}int main(){ scanf("%d",&t); for(int item = 1; item <= t; item ++){ scanf("%d",&n); memset(num,0,sizeof(num)); for(int i = 0; i < n; i ++){ cin.get(); scanf("%s",a); add(a); } memset(cou, 0, sizeof(cou)); for(int i = 2; i <= 14; i ++){ cou[num[i]] ++; } int ans; if(n == 1){ ans = 1; } else if(n == 2){ if(cou[1] == 2) ans = 2; else ans = 0; } else if(n == 3){ if(cou[3] == 1) ans = 0; else if(cou[2] == 1) ans = 2; else ans = 6; } else if(n == 4){ if(cou[4] == 1) ans = 0; else if(cou[3] == 1) ans = 0; else if(cou[2] == 2) ans = 8; else if(cou[2] == 1 && cou[1] == 2) ans = 12; else ans = 24; } else if(n == 5){ if(cou[4] == 1) ans = 0; else if(cou[2] == 1 && cou[3] == 1) ans = 12; else if(cou[1] == 2 && cou[3] == 1) ans = 12; else if(cou[2] == 2 && cou[1] == 1) ans = 48; else if(cou[2] == 1 && cou[1] == 3) ans = 72; else if(cou[1] == 5) ans = 120; } printf("Case #%d: %d\n",item, ans); } return 0;}
描述
小冰是个八卦的人,最近她对一个社交网站很感兴趣。
由于小冰是个机器人,所以当然可以很快地弄清楚这个社交网站中用户的信息啦。
她发现这个社交网站中有N个用户,用户和用户之间可以进行互动。小冰根据用户之间互动的次数和内容判断每对用户之间的亲密度。亲密度非负,若大于零表示这两个用户之间是好友关系。由于这个网站是活跃的,所以小冰会不停地更新用户之间的亲密度。
由于隐私保护,小冰无法知道每个用户的确切性别,但是作为一只很聪明的人工智能,小冰可以通过每个用户的行为来猜测性别。当然这种猜测是不准确的,小冰有可能会改变对一个用户的判断。
小冰想知道这个社交网络的八卦度是多少。八卦度的定义是社交网络中所有异性好友之间的亲密度之和。你能帮助她吗?
输入
第一行一个整数T,表示数据组数。接下来是T组数据,每组数据的格式如下:
第一行是三个整数N, M, Q,分别表示用户数、初始的好友对数、操作数。
第二行是N个空格隔开的数,第i个数表示i号用户的性别,用0或1表示。
接下来的M行,每行三个数x, y, z,代表初始状态用户x和用户y之间的亲密度是z。除此之外的用户之间的亲密度初始为0。
接下来是Q行,每行是以下三种操作中的一种:
1. “1 x”:改变用户x的性别
2. “2 x y z”:改变用户x与用户y之间的亲密度为z
3. “3”:询问八卦度
输出
对于每组数据首先输出一行"Case #X:",X为测试数据编号。
接下来对于每一个询问,输出一行包含询问的八卦度。
数据范围
1 ≤ T ≤ 20
1 ≤ x, y ≤ N
0 ≤ z ≤ 100000
小数据
1 ≤ N, M ≤ 100
1 ≤ Q ≤ 1000
大数据
1 ≤ N, M, Q ≤ 100000
- 编程之美初赛B
- 2015编程之美初赛第一场 B 建造金字塔
- 2015编程之美初赛第一场 B 建造金字塔
- 编程之美 2013 初赛
- 编程之美初赛-焦距
- 编程之美初赛-焦距
- 编程之美初赛前两题
- 2015编程之美初赛
- 编程之美2013年大赛解题思路--初赛(B)
- 2013编程之美 初赛 传话游戏
- 编程之美-初赛第二场
- 编程之美 初赛第一场 竞价
- 编程之美初赛第一场 焦距
- 编程之美初赛第一场 树
- 编程之美初赛第一场 活动中心
- 编程之美初赛第一场 焦距
- 编程之美初赛第一场 树
- 编程之美初赛第一场 活动中心
- 第八周【项目3-分数类中的运算符重载】改进
- vs和MATLAB调用
- 新年寄语
- 第四章
- Git操作总结
- 编程之美初赛B
- Python生成8位随机字符串的一些方法
- python闭包详解+实例演示
- 揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?
- 栈
- 【转】卡马克快速平方根——平方根倒数算法
- kettle入门(五) 之kettle抽取gz格式文本详细案例
- java编程学习总结1
- PyQt5 简单GUI窗口的创建