题意:

给你一个n*n的蛋糕,如果某个位置是'C'那就代表这是一个巧克力块,否则就不是。如果某两个巧克力块在同一行或同一列,那么这个家庭的幸福值就会加1,问你这个家庭的幸福值最大是多少

Input
  1. 3
    .CC
    C..
    C.C
Output
  1. 4

Input
  1. 4
    CC..
    C..C
    .CC.
    .CC.
Output
  1. 9

If we number rows from top to bottom and columns from left to right, then, pieces that share the same row in the first sample are:

  1. (1, 2) and (1, 3)
  2. (3, 1) and (3, 3)

Pieces that share the same column are:

  1. (2, 1) and (3, 1)
  2. (1, 3) and (3, 3)

题解:

原本写的是先统计一下每一行每一列上巧克力块的个数,然后对于一行或一列用排列组合方式求出来有多少巧克力对,比如某行或某列有n块巧克力,那么巧克力对数就是C2n

但是这种方法要求阶乘,会爆掉long long

WA代码:

  1. 1 #include<stdio.h>
  2. 2 #include<string.h>
  3. 3 #include<iostream>
  4. 4 #include<algorithm>
  5. 5 #include<math.h>
  6. 6 #include<vector>
  7. 7 #include<queue>
  8. 8 #include<map>
  9. 9 using namespace std;
  10. 10 typedef long long ll;
  11. 11 const int maxn=110;
  12. 12 const int INF=0x3f3f3f3f;
  13. 13 char s[maxn][maxn];
  14. 14 ll row[maxn],col[maxn],result[maxn];
  15. 15 int main()
  16. 16 {
  17. 17 ll n;
  18. 18 scanf("%lld",&n);
  19. 19 result[1]=result[0]=1;
  20. 20 for(ll i=2;i<=n;++i)
  21. 21 {
  22. 22 result[i]=result[i-1]*i;
  23. 23 }
  24. 24 for(ll i=0;i<n;++i)
  25. 25 {
  26. 26 scanf("%s",s[i]);
  27. 27 }
  28. 28 for(ll i=0;i<n;++i)
  29. 29 {
  30. 30 for(ll j=0;j<n;++j)
  31. 31 {
  32. 32 if(s[i][j]=='C')
  33. 33 row[i]++,col[j]++;
  34. 34 }
  35. 35 }
  36. 36 ll sum=0;
  37. 37 for(ll i=0;i<n;++i)
  38. 38 {
  39. 39 //printf("%lld**\n",result[row[i]]);
  40. 40 if(row[i]>=2)
  41. 41 sum=sum+result[row[i]]/(2*result[row[i]-2]);
  42. 42 }
  43. 43 for(ll i=0;i<n;++i)
  44. 44 {
  45. 45 //printf("%lld****\n",result[col[i]]);
  46. 46 if(col[i]>=2)
  47. 47 sum=sum+result[col[i]]/(2*result[col[i]-2]);
  48. 48 }
  49. 49 printf("%lld\n",sum);
  50. 50 return 0;
  51. 51 }

我没有用快速乘和边乘边约分去优化,感觉用的话也可以过。。。但是还要打板子,,我换了一种方式

用时间换空间,暴力去找有多少对,,具体看代码

代码:

  1. 1 #include<stdio.h>
  2. 2 #include<string.h>
  3. 3 #include<iostream>
  4. 4 #include<algorithm>
  5. 5 #include<math.h>
  6. 6 #include<vector>
  7. 7 #include<queue>
  8. 8 #include<map>
  9. 9 using namespace std;
  10. 10 typedef long long ll;
  11. 11 const int maxn=110;
  12. 12 const int INF=0x3f3f3f3f;
  13. 13 ll n;
  14. 14 ll Map[maxn][maxn];
  15. 15 char s[maxn][maxn];
  16. 16 ll dfs(ll x, ll y)
  17. 17 {
  18. 18 ll xx = 0, yy = 0;
  19. 19 for (ll i = x + 1; i < n; i++)
  20. 20 {
  21. 21 if (Map[i][y])
  22. 22 {
  23. 23 xx++;
  24. 24 }
  25. 25 }
  26. 26 for (ll i = y + 1; i < n; i++)
  27. 27 {
  28. 28 if (Map[x][i])
  29. 29 {
  30. 30 yy++;
  31. 31 }
  32. 32 }
  33. 33 return xx + yy;
  34. 34 }
  35. 35 int main()
  36. 36 {
  37. 37 ll sum=0;
  38. 38 scanf("%lld",&n);
  39. 39 for(ll i=0;i<n;++i)
  40. 40 scanf("%s",s[i]);
  41. 41 for (ll i = 0; i < n; i++)
  42. 42 {
  43. 43 for (ll j = 0; j < n; j++)
  44. 44 {
  45. 45 if (s[i][j]=='C')
  46. 46 {
  47. 47 Map[i][j] = 1;
  48. 48 }
  49. 49 }
  50. 50 }
  51. 51 for (ll i = 0; i < n; i++)
  52. 52 {
  53. 53 for (ll j = 0; j < n; j++)
  54. 54 {
  55. 55 if (Map[i][j])
  56. 56 {
  57. 57 sum += dfs(i, j);
  58. 58 }
  59. 59 }
  60. 60 }
  61. 61 printf("%lld\n",sum);
  62. 62 return 0;
  63. 63 }

[CodeForces-629A 用阶乘会爆掉的更多相关文章

  1. sqoop关系型数据迁移原理以及map端内存为何不会爆掉窥探

    序:map客户端使用jdbc向数据库发送查询语句,将会拿到所有数据到map的客户端,安装jdbc的原理,数据全部缓存在内存中,但是内存没有出现爆掉情况,这是因为1.3以后,对jdbc进行了优化,改进j ...

  2. linux调整缓存写入磁盘的时间,减少磁盘爆掉的可能性

    缓存数据存入磁盘的最长时间,如果这段时间写不完,就会报异常停止写,这样缓存数据会不断积累,导致内存爆掉. echo 0 > /proc/sys/kernel/hung_task_timeout_ ...

  3. Codeforces Round #670 (Div. 2) 深夜掉分(A - C题补题)

    1406A. Subset Mex https://codeforces.com/contest/1406/problem/A Example input 4 6 0 2 1 5 0 1 3 0 1 ...

  4. codeforces 629A Far Relative’s Birthday Cake

    A. Far Relative’s Birthday Cake time limit per test 1 second memory limit per test 256 megabytes inp ...

  5. 一个sql导致temp表空间爆掉

    Buffer sort引发的血案 今天遇到的一个问题,在线系统上,有两张表,test1大概50G,test2大概200G,需要查询出来test1表中部分记录,并且这些记录不存在test2表中.于是就写 ...

  6. Codeforces Round 480 Div 2 光荣掉分记

    痛 痛苦 痛苦啊. 越接近黄名想的越多了啊…… 都说了不要在意rating这破玩意了…… 没出E就算了,策略问题. 居然还FST了: FST个D就算了: FST个A算个**啊. 紧张的时候总会写出一些 ...

  7. hdu-5651 xiaoxin juju needs help(数学+gcd约分求阶乘)

    题目链接: xiaoxin juju needs help Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K ...

  8. 【codeforces 749E】 Inversions After Shuffle

    http://codeforces.com/problemset/problem/749/E (题目链接) 题意 给出一个1~n的排列,从中等概率的选取一个连续段,设其长度为l.对连续段重新进行等概率 ...

  9. Codeforces Round #404 (Div. 2)A,B,C

    A. Anton and Polyhedrons 题目链接:http://codeforces.com/contest/785/problem/A 智障水题 实现代码: #include<bit ...

随机推荐

  1. 经常使用的Sublime Text 快捷键

    最常用的 Sublime快捷键:

  2. buuctf—web—高明的黑客

    打开靶机,看到如下界面 于是打开www.tar.gz 下载后发现是一个放有大量php文件的文件夹 看了大佬的wp后明白了是fuzzing 附上大佬的脚本 import os import re imp ...

  3. mysql锁表问题

    查看当前所有的进程信息: show full processlist; 查看当前所有的事务 select * from information_schema.innodb_trx; 查看当前出现的锁 ...

  4. HTML5表格详细教程

    HTML5表格 文章目录 HTML5表格 5.1 定义表格 5.1.1 普通表格.列标题 5.1.2 表格标题 5.1.3 表格行分组.表格列分组 5.2 表格属性 5.2.1 单线表格.分离单元格 ...

  5. 20V,24V转5V,20V,24V转3.3V降压芯片,IC介绍

    常用的20V和24V转5V,3.3V的LDO稳压和DC-DC降压芯片: PW6206系列是一款高精度,高输入电压,低静态电流,高速,低压降线性稳压器具有高纹波抑制.输入电压高达40V,负载电流高达10 ...

  6. Py-上下文管理方法,描述符的应用,错误与异常

    上下文管理方法: 可以在exit里面弄一些内存清理的功能 class Open: def __init__(self,name): self.name=name def __enter__(self) ...

  7. Tensorflow-线性回归与手写数字分类

    线性回归 步骤 构造线性回归数据 定义输入层 设计神经网络中间层 定义神经网络输出层 计算二次代价函数,构建梯度下降 进行训练,获取预测值 画图展示 代码 import tensorflow as t ...

  8. PCB导线长宽与电源压降

    为了计算PCB中电源线走线后的压降,需要知道PCB中使用的铜的电阻率, PCB板中的铜是直接贴上去的铜箔,因此可以当成纯铜(我问了PCB打样的厂家他们的铜的电阻率,但是他们给我说不知道,所以干脆就当成 ...

  9. Python赋值、浅复制和深复制

    Python赋值.浅复制和深复制 ​ 首先我们需要知道赋值和浅复制的区别: 赋值和浅复制的区别 赋值,当一个对象赋值给另一个新的变量时,赋的其实是该对象在栈中的地址,该地址指向堆中的数据.即赋值后,两 ...

  10. Jmeter非GUI界面对阿里云服务器压测

    一.Jmeter非GUI界面 参数讲解 讲解:非GUI界面,压测参数讲解             -h 帮助            -n 非GUI模式            -t 指定要运行的 JMe ...