A题:题意背景就不描述了,阅读题。

总的说来就是,有4种优先级的东西,按照优先级挨着输出。如果优先级相同就输出较前面的。
rat>woman==child>man>captain。
数据比较小且优先级种类少,我挨着扫4遍就行了。

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <string>using namespace std;string a[105],b[105];
int main()
{int n;while(scanf("%d",&n) != EOF){for(int i=0;i<n;i++){cin >> a[i] >> b[i];}for(int i=0;i<n;i++){if(b[i] == "rat")cout <<a[i] << endl;}for(int i=0;i<n;i++){if(b[i] == "woman" || b[i] == "child")cout <<a[i]<< endl;}for(int i=0;i<n;i++){if(b[i] == "man")cout <<a[i]<< endl;}for(int i=0;i<n;i++){if(b[i] == "captain")cout << a[i] << endl;}}return 0;
}

B题:n个有rankl的士兵进行训练。相同优先级视为一个group,每个group每轮只能有一个人训练升级。问需要多少代价把所有士兵的rank都提升为k。

统计每个优先级的士兵数,然后模拟训练过程,嗯哼!好像完了。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>using namespace std;int n,k;
int a[111]= {0};
int rank[111]= {0};int main()
{cin >> n >> k;for (int i=1; i<=n; i++){cin >> a[i];rank[a[i]]++;}int ans = 0;bool ok = true;while (ok){ok=false;for (int i=k-1; i>=1; i--){if (rank[i] > 0){rank[i]--;rank[i+1]++;ok = true;}}if (ok) ans++;}cout << ans << endl;return 0;
}

C题:

Bulls and Cows是一个猜数字游戏,一个人写下一个数字,另一个人猜这个数字,其中b代表位置正确的数字有几个,而c代表位置不正确的数字有几个。
其中猜的数字由 0 ~ 9 的不重复的4个数字组成。
给你n组数据,每行有三个数字,第一个是你猜的数字,第二个是b,第三个是c
现在如果可能猜出的结果有1个输出该数字,如果不止一个输出Need more data
如果结果不肯能出现输出Incorrect data。
直接暴力求解10000以内所有的结果,如果遇到求解的数字为符合所有的可能,记cnt++
如果cnt == 1 输出结果,cnt == 0 输出Incorrect data,如果cnt > 1输出Need more data。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;struct Node
{int num[4];int a,b;
} node[20];int ans[4];
int vis[11];
bool ok(int num)
{memset(vis,0,sizeof(vis));int t;for(int i = 0; i < 4; i++){t = num % 10;if(vis[t]){return false;}ans[i] = t;vis[t] = 1;num /= 10;}return true;
}
int main()
{int n;char arr[5];while(scanf("%d",&n) != EOF){for(int i = 0; i < n; i++){scanf("%s %d %d",arr,&node[i].a,&node[i].b);for(int j = 0; j < 4; j++){node[i].num[j] = arr[j] - '0';}}int cnt1,cnt2,cnt;cnt = 0;int res;for(int i = 1; i < 10000; i++){if(ok(i)){int j;for(j = 0; j < n; j++){cnt1 = cnt2 = 0;for(int k = 0; k < 4; k++){if(ans[k] == node[j].num[k]){cnt1++;}if(vis[node[j].num[k]]){cnt2++;}}if(cnt1 != node[j].a || cnt2 - cnt1 != node[j].b){break;}}if(j == n){res = i;cnt++;}}}if(cnt == 1){for(int i = 0; i < 4; i++){printf("%d",res%10);res /= 10;}printf("\n");}else if(cnt > 1){printf("Need more data\n");}else{printf("Incorrect data\n");}}return 0;
}

D题:在一个字符串里面按着hello字符顺序找hello,找到就YES,否则NO;
贪心,挨着找过去就行了。

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <string>using namespace std;string s;
string word = "hello";
int main()
{while(cin >> s){int flag = 0;for(int i=0;i<s.size();i++){if(s[i] == word[flag])flag++;if(flag == 5)break;}if(flag == 5)printf("YES\n");elseprintf("NO\n");}return 0;
}

E题:生成保证一个数是前面出现所有数的约数的数组,保证数组最长。
只要枚举前一个数的所有约数,只要这个数能将前面一个数整除,必然能将前面的所有的数整除。
贪心思想:保证当前生出的约数最大,后面可找到更多的数。

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <string>using namespace std;int main()
{int n;cin >> n;cout << n;while(n>1){int i;for(i=2; i<n; i++)if(n%i == 0){n = n/i;cout << " " << n;break;}if(i == n){cout << " " << 1;break;}}return 0;

F题:给一个序列代表一排树。现在需要把这排树砍成beautiful的。怎么叫beautiful的看题目。

呜~ 大概你需要明白2件事情。
1.beautiful sequence is can be determined with any member
2.at least one tree will remain the same height.
然后我们就统计一下,前一半中相对距离相同数量最多的那些树,后一半镜像统计,这个数量表示的就是我们最多可以不动的树的数量。
然后用n个去减掉这个最大数量,就是需要改变最小数量。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int maxn = 100010;int a[maxn], d[maxn];int main()
{int n;while(scanf("%d", &n)!=EOF){for(int i=1; i<=n; i++)scanf("%d",&a[i]);memset(d,0,sizeof(d));int k = n/2 + n%2;for(int i=1; i<=k; i++){if(a[i]-i+1>0)d[a[i]-i+1]++;}for(int i=n; i>k; i--)if(a[i]+i-n>0)d[a[i]+i-n]++;int ma = -1;for(int i=1; i<=100000; i++)ma = max(ma, d[i]);printf("%d\n", n - ma);}return 0;
}

CQUPT WEEKLY TRAINING (7)DIV2 解题报告相关推荐

  1. CQUPT WEEKLY TRAINING (6)DIV2 解题报告

    A题:IQ test,23333.就是给你n个数,求出一个跟其他数不一样的数的下标. 很明显,不同是根据奇偶区分.然后就容易了. #include <cstdio> #include &l ...

  2. CQUPT WEEKLY TRAINING (3)解题报告

    T1: 一些士兵围成圈,每个士兵有个高度.求一个最小的相离高度差. 循环维护一遍,然后判断一下头尾. #include <cstdio> #include <algorithm> ...

  3. LeetCode第187场周赛(Weekly Contest 187)解题报告

    差点又要掉分了,还好最后几分钟的时候,绝杀 AK.干巴爹!!! 第一题:思路 + 模拟暴力. 第二题:线性扫描. 第三题:双指针(滑动窗口) + 优先队列. 第四题:暴力每一行最小 k 个 + 优先队 ...

  4. LeetCode第176场周赛(Weekly Contest 176)解题报告

    又是一周掉分之旅,我发现,LeetCode周赛的数据好水,所以有的时候,实在没思路,先暴力解决试试(即使分析出时间复杂度会超时),比如第二题和第三题都可以暴力通过,GG思密达. 这周主要使用了数据结构 ...

  5. DLNU weekly(May 18,2013)解题报告

    找到了草稿箱里,我大学写的博客,但是我发现已经看不懂了,大坑.自从工作后,我已经好长时间没有A题了.依稀记得我大学寝室的标语是 ,"今天你AC了吗?".看到"川神兽&qu ...

  6. 【解题报告】CF DIV2 #ROUND 723 A~D

    [解题报告]CF DIV2 #ROUND 723 A~D 比赛链接 比赛评价: 发现这场十点就开了,然后就和ph巨佬一起玩了一场.我两分别再A和B罚时罚飞了,索性后面把C1,C2整出来了 排名2500 ...

  7. USACO Training Section 1.3 Calf Flac 解题报告AC代码

    解题报告: 主要方法是生长法,考虑每一位的左右各有多长的回文串,输出最长的那个,比较好想--不过要注意区分字串的奇偶. 其他实现细节看代码里的注释吧-- AC代码: /* ID: yuanmz91 P ...

  8. USACO 3.3.2 Shopping Offers解题报告

    写在前面:因为之前没写的C++的USACO Training的解题报告太多--所以就不写了,要是想要代码可以联系我:xiedong_1993@foxmail.com 这题就是传说中的五维背包,其实写起 ...

  9. 【解题报告】CF DIV3 #ROUND 734 A~D1

    [解题报告]CF DIV2 #ROUND 707 A~D 比赛链接 比赛评价: 一般性,有段时间没打了,甚至忘记多组输入hh.顺便吐槽一下翻译软件确实不行,以后还是直接看英文好了 A. Polycar ...

最新文章

  1. 如何通过“流量线索”进行恶意程序感染分析
  2. ossim-agent代理和要监控的服务器的配置
  3. 【重复制造精讲】REM Pull List 拉料单简介
  4. mysql 内存越界_linux内存管理浅析
  5. 一个json格式转xml格式的java实现
  6. 【SPOJ 694】Distinct Substrings (更直接的求法)
  7. [C++11]final关键字的使用
  8. 2018-2019-2 网络对抗技术 20165320 Exp2 后门原理与实践
  9. 中秋快乐:数据库的全家福喜添新员
  10. 卸载 Oracle 19c
  11. 用手机打开word图表位置很乱_原来Word还可以自动生成图片和图表目录!
  12. 如何使用手机裁剪图片大小?
  13. 前端网页水印实现方法
  14. Linux学习笔记——Linux基本命令篇
  15. java 分布式缓存 开源_Java开源分布式键-值缓存系统Voldemort
  16. 经方时方接轨之――茵陈蒿汤合甘露饮
  17. UI设计中图标设计规范是什么
  18. 二十岁的男人(应该需要做什么)
  19. 如何应对云安全技术遇到的挑战?可从这三点入手
  20. 随手记录系列-伯克森悖论-李永乐谈学习-辛普森悖论

热门文章

  1. 我没回老家过春节的那4点原因
  2. 提升论文影响力的方法
  3. Vegas Pro中移动马赛克的制作方法
  4. stc8a_步进电机控制,加减速
  5. OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)
  6. 苹果手机打印驱动使用手册(详细操作版本)
  7. HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
  8. python数组除以常数_Python中自我除以数组的乘积
  9. Linux第一课 了解Linux
  10. java 比较字符串前几位_java截取字符串前几位