终于开始我的博客生活了,希望博客可以让我记住学了什么,错了什么,接下来会有什么将出现。

记录写ACM生涯中的一些经验和网工经验吧,如果有人看我博客的话,希望可以留言给我提提意见,指导指导我啦~~~

正题:

先把洛谷写过的题解CV一下

题目来源:洛谷 P1488

题目描述

野猫与胖子,合起来简称肥猫,是一个班的同学,他们也都是数学高手,所以经常在一起讨论数学问题也就不足为奇了。一次,野猫遇到了一道有趣的几何游戏题目,便拿给胖子看。游戏要求在一个有n个顶点凸多边形上进行,这个凸多边形的n-3条对角线将多边形分成n-2个三角形,这n-3条对角线在多边形的顶点相交。三角形中的一个被染成黑色,其余是白色。双方轮流进行游戏,当轮到一方时,他必须沿着画好的对角线,从多边形上切下一个三角形。切下黑色三角形的一方获胜。胖子一看觉得确实很有趣,不如就一起玩玩吧。假设游戏由野猫先开始,那么野猫是否有必胜的策略呢?请写一个程序帮助野猫算一算。

输入格式

第一行为一个整数n(4<=n<=50000),表示多边形的顶点数,多边形的顶点由0至n-1顺时针标号。接着的n-2行描述组成多边形的三角形。第i+1行(1<=i<=n-2)有三个空格分隔的非负整数a、b、c,它们是第i个三角形的顶点编号。第一个给出的三角形是黑色的。

输出格式

只有一行,倘若野猫有必胜策略,输出JMcat Win;否则,输出PZ Win。(注意大小写和空格)

输入输出样例

输入 #1
6

0 1 2

2 4 3

4 2 0

0 5 4
输出 #1
JMcat Win

说明/提示

各个测试点1s

如果连接一个多边形中任意两点的线段都完全包含于这个多边形,则称这个多边形为凸多边形。

这题看起来很难,其实有点水。。。

非正解

其实就是判对角线数,如果对角线是奇数就JMcat Win,否则就是PZ Win 那么上代码

1 #include<iostream>
2 using namespace std;
3 int main(){
4 int n;
5 cin>>n;
6 if((n-3)%2==0) cout<<"PZ Win";
7 else cout<<"JMcat Win";
8 return 0;
9 }

但是会WA!!!因为没考虑一刀切和在多边形内部; 就比如5边形,100,010(1是黑的,0是白的) 所以判断下黑的顶点是否连续就行

 1 #include<iostream>
2 using namespace std;
3 int main(){
4 int n,a,b,c;
5 scanf("%d",&n);
6 scanf("%d %d %d",&a,&b,&c);
7 if(a+1==b){
8 if(b+1==c){
9 printf("JMcat Win");
10 return 0;
11 }
12 }
13 if((n-3)%2==0) printf("PZ Win");
14 else printf("JMcat Win");
15 return 0;
16 }

好的AC,这不是正解!!!

CF629A Far Relative’s Birthday Cake

题目描述

Door's family is going celebrate Famil Doors's birthday party. They love Famil Door so they are planning to make his birthday cake weird!

The cake is a n×n n×n n×n square consisting of equal squares with side length 1 1 1 . Each square is either empty or consists of a single chocolate. They bought the cake and randomly started to put the chocolates on the cake. The value of Famil Door's happiness will be equal to the number of pairs of cells with chocolates that are in the same row or in the same column of the cake. Famil Doors's family is wondering what is the amount of happiness of Famil going to be?

Please, note that any pair can be counted no more than once, as two different cells can't share both the same row and the same column.

输入格式

In the first line of the input, you are given a single integer n n n ( 1<=n<=100 1<=n<=100 1<=n<=100 ) — the length of the side of the cake.

Then follow n n n lines, each containing n n n characters. Empty cells are denoted with '.', while cells that contain chocolates are denoted by 'C'.

输出格式

Print the value of Famil Door's happiness, i.e. the number of pairs of chocolate pieces that share the same row or the same column.

题意翻译

题目描述

多尔的家人正在庆祝多尔的生日派对。他们爱多尔,所以他们计划让他的生日蛋糕变得不可思议的!

蛋糕是一个由n×n的等边正方形组成的形状,长度为1。每个方块要么是空的,要么是由一个巧克力组成的。他们买了蛋糕,便开始把巧克力放在蛋糕上。“家庭之门”的幸福值等于蛋糕中同一行或同一列中装有巧克力的一对细胞的数量。多尔的家人想知道他们的幸福程度是多少?

输入输出格式

输入格式:

第一行输入一个整数n(1<=n<=100),表示蛋糕边的长度。然后输入n行数,每行有n个字符。空的细胞用'.'表示,而含有巧克力的细胞用“C”表示。

输出格式:

输出“家庭之门”幸福感的价值,即同一行或同一列的一对巧克力片的数量。

输入输出样例

输入 #1
3
.CC
C..
C.C
输出 #1
4
输入 #2
4
CC..
C..C
.CC.
.CC.
输出 #2
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) (1,2) (1,2) and (1,3) (1,3) (1,3)
  2. (3,1) (3,1) (3,1) and (3,3) (3,3) (3,3)

Pieces that share the same column are: 1. (2,1)  (2,1)  (2,1) and (3,1) (3,1) (3,1) 2. (1,3) (1,3) (1,3) and (3,3) (3,3) (3,3)

代码可能因为是小白所以有点长。。。不过比较好写,因为大部分重复,CV就行,稍作改动

这个解法没有我看到的其他解法简洁,快速,但是如果新人看我的可能理解更好点吧。。。

本来准备DFS(刚学想练手),写着写着就发现更简单的写法。。。

解法就是计每行与每列的‘C’个数,然后每行每列的个数(>=2的前提下)利用组合公式求解

 1 #include <iostream>
2 #include <cstring>
3 using namespace std;
4 double jiec(int n){ //阶乘函数
5 double sum =1; //double防超
6 for(int i = n;i>0;i--){
7 sum *= i;
8 }
9 return sum;
10 }
11 int main() {
12 int wide;
13 double sum = 0,count = 0; //double防超
14 scanf("%d",&wide); //边长
15 char cake[wide+1][wide+1];
16 int nu[wide],nu2[wide]; //分别计行与列的个数(有点啰嗦的感觉,
17 应该有优化的方法,但是我比较lazy。。。)
18
19 memset(nu,0,sizeof(nu));
20 memset(nu2,0,sizeof(nu2)); //初始化为0
21 for(int i =0;i<wide;i++){
22 scanf("%s",&cake[i]);
23 }
24 for(int i = 0 ;i<wide;i++){ //遍历每行
25 count = 0;
26 for(int j = 0;j<wide;j++){
27 if(cake[i][j]=='C'){
28 count += 1;
29 }
30 }
31 nu[i]=count; //赋值个数
32 }
33 for(int i = 0 ;i<wide;i++){ //遍历每行
34 count = 0;
35 for(int j = 0;j<wide;j++){
36 if(cake[j][i]=='C'){
37 count += 1;
38 }
39 }
40 nu2[i]=count; //赋值个数
41 }
42 for(int i = 0;i<wide;i++){
43 if(nu[i]>=2){
44 sum += jiec(nu[i])/(2*jiec(nu[i]-2));
45 //组合公式求解行
46 (不会请问度娘)
47 }
48 }
49 for(int i = 0;i<wide;i++){
50 if(nu2[i]>=2){
51 sum += jiec(nu2[i])/(2*jiec(nu2[i]-2));
52 //组合公式求解列
53 }
54 }
55 printf("%.0f",sum);
56 return 0;
57 }
 

小白开始成长了+洛谷1488与CF629A Far Relative’s Birthday Cake题解的更多相关文章

  1. 洛谷P4014 分配问题【最小/大费用流】题解+AC代码

    洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...

  2. 洛谷 P4016负载平衡问题【费用流】题解+AC代码

    洛谷 P4016负载平衡问题 P4014 分配问题[费用流]题解+AC代码 负载平衡问题 题目描述 GG 公司有n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n ...

  3. 洛谷P1919 【模板】A*B Problem升级版 题解(FFT的第一次实战)

    洛谷P1919 [模板]A*B Problem升级版(FFT快速傅里叶) 刚学了FFT,我们来刷一道模板题. 题目描述 给定两个长度为 n 的两个十进制数,求它们的乘积. n<=100000 如 ...

  4. 洛谷 P1486 [NOI2004]郁闷的出纳员【Treap】题解+AC代码

    题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...

  5. 洛谷P2286 [HNOI2004]宠物收养场【Treap】题解+AC代码

    题目传送门啦~啦~啦~ 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...

  6. 洛谷 P3285 / loj 2212 [SCOI2014] 方伯伯的 OJ 题解【平衡树】【线段树】

    平衡树分裂钛好玩辣! 题目描述 方伯伯正在做他的 OJ.现在他在处理 OJ 上的用户排名问题. OJ 上注册了 \(n\) 个用户,编号为 \(1\sim n\),一开始他们按照编号排名.方伯伯会按照 ...

  7. BZOJ4889 & 洛谷3759:[TJOI2017]不勤劳的图书管理员——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4889 https://www.luogu.org/problemnew/show/P3759 加里 ...

  8. BZOJ3076 & 洛谷3081:[USACO2013 MAR]Hill Walk 山走——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3076 https://www.luogu.org/problemnew/show/P3081#sub ...

  9. BZOJ1597 & 洛谷2900:[USACO2008 MAR]Land Acquisition 土地购买——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1597 https://www.luogu.org/problemnew/show/P2900 约翰准 ...

  10. 洛谷4245:【模板】任意模数NTT——题解

    https://www.luogu.org/problemnew/show/P4245 给两个多项式,求其乘积,每个系数对p取模. 参考: 代码与部分理解参考https://www.luogu.org ...

随机推荐

  1. List集合增删元素时,UnsupportedOperationException报错问题

    我的情况是这样:从数组转集合,操作集合删除元素. // Tab页面标题第一步:String[] mTitles = getResources().getStringArray(R.array.lead ...

  2. PCA降维练习

    [题目] 1.现有我国大陆30个省.直辖市.自治区的经济发展状况数据集如表所示,包括8项经济指标:国民生产总值(A1):居民消费水平(A2):固定资产投资(A3):职工平均工资(A4):货物周转量(A ...

  3. LOOP GROUP BY 分组循环的使用方法小栗子

    原文链接:https://blog.csdn.net/lmf496891416/article/details/111317377 1.格式: LOOP AT 内表 INTO DATA(工作区) GR ...

  4. java连接couchbase的memcache

    没有参考代码的时候重新写还是有点累的,这是重温了,第一次写的时候参考了别的一些乱七八糟的代码,虽然不是和这个一样的,不过在不懂的情况下还是很快写出来了,反而是这次光是找需要哪些jar都搞了半天,最后发 ...

  5. fastadmin打包插件

    <?php namespace app\command; use think\console\Command; use think\console\Input; use think\consol ...

  6. Word09 会计电算化节节高升office真题

    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...

  7. Excel——解除工作表保护

    策略:删除密码保护,而非破解密码 例 该工作簿有工作表保护,因忘记密码,无法更改内容. 解决方案 1.用压缩软件打开表格. 2.向下进入目录:xl/worksheets,选择sheet1.xml,用记 ...

  8. Oracle 临时表空间暴满的原因与解决方法

    Oracle临时表空间主要用来做查询和存放一些缓冲区数据.临时表空间消耗的主要原因是需要对查询的中间结果进行排序. 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,te ...

  9. 【MYSQL】group_concat长度问题分析

    今天在生产环境发现一个ArrayIndexOutOfBounds的问题,经过排查,发现是group_concat拼接的字符串太长,超过了1024,导致报错. 我们可以通过 : SET [SESSION ...

  10. 错题记录:C51同一个hex文件偶尔效果不行 的处理方法

    51单片机很多方面和C语言有区别,经验下来,总结以下:1.关于变量报错:报错的原因大多是因为编译器C++版本不同,所以变量我都推荐使用驼峰命名法;2.如果同一个hex文件,或者改的代码自己认为没问题 ...