一、1419. 数青蛙

思路

这道题有俩种解法,一是记数,二是贪心

记数:

这是官方的题解

我们用frog_ num来表示现在正在发出蛙鸣声的青蛙数目,用cnt[c] 示已经发出-次有效蛙鸣中的字符c的青蛙个数,比如当cnt['c'] = 2时表示当前有2只青蛙已经发出了有效蛙鸣中的字符‘c’,下-个要发出学符r'。那么我们遍历字符串croakOfFrogs来模拟青蛙蛙鸣,现在记遍历到的字符为c,有:

1.若c='c',则需要-只青蛙开始发出蛙鸣,有fog_ num= fog_ num+ 1, cnt{'c']= cnt'c']+ 1。
2.则我们记prec为-次有效蛙鸣中该字符c的前一个字符
3.若当前cnt[prec]= 0,即没有青蛙可以发出字符c,直接返回-1。
4.否则cntprec] = cntprec]- 1, cnt[c]= cnt[c] +1。 哨c=k'时,说明一只青蛙完成了完
5.整的- -次蛙鸣,此时正在发出蛙鸣声的青蛙数目减- -,有: fog. num= fog_ num- 1。

若遍历完还有正在发出蛙鸣的青蛙,即fog_ num > 0,说明croakOfFrogs 不是被若干有效的蛙鸣混合而成,直接返回- 1。 否则我们只要返回在遍历的过程中正在发出蛙鸣的青蛙数目的最大值即可。
贪心:

这里有大佬的图片

代码实现

记数:

int minNumberOfFrogs(char * croakOfFrogs){int len=strlen(croakOfFrogs);if(len%5!=0)return -1;int res=0,num=0;int cnt[4],map[26];memset(cnt,0,sizeof(cnt));map['c'-'a']=0;map['r'-'a']=1;map['o'-'a']=2;map['a'-'a']=3;map['k'-'a']=4;for(int i=0;i<len;i++){char c=croakOfFrogs[i];int t=map[c-'a'];if(t==0){cnt[t]++;num++;if(num>res)res=num;}else{if(cnt[t-1]==0)return -1;cnt[t-1]--;if(t==4)num--;else cnt[t]++;}}if(num>0)return -1;return res;
}

贪心

int minNumberOfFrogs(char * croakOfFrogs){int len=strlen(croakOfFrogs);int cnt[5]={0};for(int i=0;i<len;i++){switch(croakOfFrogs[i]){case 'c':if(cnt[4])cnt[4]--;cnt[0]++;break;case 'r':if(cnt[0]){cnt[0]--;cnt[1]++;}else return -1;break;case 'o':if(cnt[1]){cnt[1]--;cnt[2]++;}else return -1;break;case 'a':if(cnt[2]){cnt[2]--;cnt[3]++;}else return -1;break;case 'k':if(cnt[3]){cnt[3]--;cnt[4]++;}else return -1;break;}}if(cnt[0]==0&&cnt[1]==0&&cnt[2]==0&&cnt[3]==0)return cnt[4];else return -1;
}

二、[USACO10FEB]Chocolate Giving S

思路

这道题是一道最短路劲的问题,虽然当时做的时候读懂题意花了很久,但是细想的话就很简单,就它就是多了一道要从a去b的时候还要必须经过一个点1,这样可以分成俩段路径,一种是1到a点的最短路径,一种是1到b点的最短路径,这样做就很简单了

要注意一点的是,这题不能用邻接矩阵来做,要用链式前向星或者邻接表来做,否则会爆掉

代码实现

#include<stdio.h>
#include<string.h>
#define inf 100001
int dis[50001], book[50001], x[50001][50001];
int n, m, b, sum = 0;int dijkstra(int from, int to)
{int i,pos;for (i = 1; i <= n; i++)  //初始化{book[i] = 0;dis[i] = x[from][i];}book[from]=1;for (i = 1; i < n; i++){int min = inf;for (int j = 1; j <= n; j++){if (book[j] == 0 && min > dis[j]){min = dis[j];pos = j;}}book[pos] = 1;for (int j = 1; j <= n; j++){if (book[j] == 0 && dis[j] > dis[pos] + x[pos][j])dis[j] = dis[pos] + x[pos][j];}}
return dis[to];
}int main()
{scanf("%d %d %d", &n, &m, &b);for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)x[i][j] = inf;while (m--){int r, s, t;scanf("%d %d %d", &r, &s, &t);x[r][s] = t;x[s][r] = t;}while (b--){int r, s;scanf("%d %d", &r, &s);if(s==1)sum=dijkstra(r,s);else sum = dijkstra(r, 1) + dijkstra(1,s);printf("%d\n", sum);}return 0;
}

数青蛙​、[USACO10FEB]Chocolate Giving S相关推荐

  1. P2984 [USACO10FEB]Chocolate Giving S【SPFA】

    题目描述 Farmer John is distributing chocolates at the barn for Valentine's day, and B (1 <= B <= ...

  2. 2015: [Usaco2010 Feb]Chocolate Giving

    2015: [Usaco2010 Feb]Chocolate Giving Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 269  Solved:  ...

  3. LeetCode - 1419 数青蛙

    题目来源 1419. 数青蛙 - 力扣(LeetCode) 题目描述 给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合.由于同 ...

  4. LeetCode1419. 数青蛙

    数青蛙 给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合.由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs ...

  5. java数青蛙_第十一届蓝桥杯第三场软件类省赛 C++ B组 题解

    试题 A: 数青蛙 "一只青蛙一张嘴,两只眼睛四条腿.两只青蛙两张嘴,四只眼睛八条腿.三只青蛙三张嘴,六只眼睛十二条腿.--二十只青蛙二十张嘴,四十只眼睛八十条腿." 请问上面这段 ...

  6. 十一届蓝桥杯省赛(B组 )----数青蛙

    问题描述 "一只青蛙一张嘴,两只眼睛四条腿.两只青蛙两张嘴,四只眼睛八条腿. 三只青蛙三张嘴,六只眼睛十二条腿.--二十只青蛙二十张嘴,四十只眼睛八十条腿." 请问上面这段文字,如 ...

  7. 第十一届蓝桥杯 ——数青蛙

    问题描述 "一只青蛙一张嘴,两只眼睛四条腿.两只青蛙两张嘴,四只眼睛八条腿. 三只青蛙三张嘴,六只眼睛十二条腿.--二十只青蛙二十张嘴,四十只眼睛八十条腿." 请问上面这段文字,如 ...

  8. LeetCode 1419. 数青蛙(脑洞题)

    1. 题目 给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合. 由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFro ...

  9. leetcode 1419 数青蛙

    描述: 给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合.由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs ...

最新文章

  1. usaco Factorials
  2. 使用photoshop 10.0制作符合社保要求的照片
  3. 【转】用VB操作Excel详解
  4. JAVA 判断其是否为合法标识符
  5. 中奖名单 | 价值 199 的大数据平台研发课程幸运er
  6. 整理了一下linux/ubuntu里面卸载软件的方法
  7. 安装jenkins时出现 No such plugin: cloudbees-folder的解决办法
  8. Java对象内存结构
  9. 第三次大转型:中国居住新十年报告
  10. java基本语法 2017_Java基本语法——(用于日后复习)
  11. mysql 创建表格time类型_第十九天MySQL数据库入门(mysql数据类型)
  12. spoolsv进程占用CPU近100%,电脑反应慢
  13. Android 第一行代码(第2版).pdf 网盘
  14. php滚动播报,卫星云图滚动播放(实时更新)
  15. SpringBoot安全验证之Referer拦截器
  16. 计算机怎么连不上打印机,电脑和打印机连接不上怎么回事
  17. Latex 表格 tabularx自动换行
  18. 生产者和消费者问题详解
  19. 激活Windows 7旗舰版
  20. 快吧我的世界服务器一直未响应,为什么快吧我的世界盒子游戏一直崩溃

热门文章

  1. Google浏览器打开网页卡顿怎么解决?
  2. 使用C#编写一个求解数独的小软件
  3. 【最全的】JPEG Toolbox代码及使用方式详解
  4. 什么是“ABC数据”
  5. 实验:虚拟机搭建为web服务器,通过花生壳映射,成功搭建
  6. opencv-描述图像运动(前篇)
  7. android中传感器的应用
  8. python csv转excel时候报错valueerror_ValueError: No engine for filetype: 'csv'解决与书本7-2代码改写...
  9. 合肥工业大学计算机组成原理实验报告
  10. android v4兼容包