T1

很简单,判断这个字符串有多少个不同的字符,让后用k减一减

注意:
1、如果不同字符数大于k,不要输出负数
2、变量名别打错

上代码

#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
#define ll long long using namespace std; string s; inline ll read(){
ll x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
} int vis[26]; int main(){
while (cin >> s){
memset(vis, 0, sizeof(vis));
int k, s_l = s.length(), cnt = 0, cnt2 = 0;
cin >> k;
if (k > s_l || k > 26)
printf("impossible\n");
else{
for (int i = 0; i < s_l; ++i){
if (s[i] < 'a' || s[i] > 'z')
continue;
if (!vis[s[i] - 'a']){
vis[s[i] - 'a'] = 1;
++cnt;
}
}
printf("%d\n", (k - cnt) < 0 ? 0 : (k - cnt));
}
}
return 0;
}

  

T2

我们发现可以计算组合数来解决问题
先把组合数求出来,然后我们发现,如果一行/一列有k个格子同色
相当于C1,k + C2,k + C3,k + ... + Ck,k
于是我们顺便在计算组合数的时候把上面这个序列求出来
让后问题变为求一行/一列有多少个格子颜色为0,有多少个格子颜色为一
注意单个格子也就是C1,1在行和列各被算了一次,所以要减去多算的部分即n*m

上代码:

#include <cstdio>
#include <iostream>
#define ll long long using namespace std; inline ll read(){
ll x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
} unsigned ll C[102][102];
unsigned ll sum[102];
ll cac_sum[102][2]; int main(){
ll n = read(), m = read();
C[1][0] = C[1][1] = 1;
sum[0] = 0;
sum[1] = 1;
for (ll i = 2; i <= 51; ++i){
C[i][0] = 1;
sum[i] = 0;
//cout << C[i][0] << ' ';
for (ll j = 1; j < i; ++j){
C[i][j] = C[i - 1][j - 1] + C[i - 1][j], sum[i] += C[i][j];
//cout << C[i][j] << ' ';
}
C[i][i] = 1, ++sum[i];
//cout << C[i][n] << endl;
}
ll tmp, cnt[2];
unsigned ll ans = 0;
for (ll i = 0; i < n; ++i){
cnt[0] = 0, cnt[1] = 0;
for (ll j = 0; j < m; ++j){
cin >> tmp;
++cac_sum[j][tmp], ++cnt[tmp];
}
ans += sum[cnt[0]] + sum[cnt[1]];
}
for (ll i = 0; i < m; ++i)
ans += (sum[cac_sum[i][0]] + sum[cac_sum[i][1]]);
cout << (ans - (n * m));
return 0;
}

  

T3

思路很简单,这一列主要是判断上一列排序相同的元素是否符合排列
注意开两个数组倒来倒去(可能我比较菜)

放个代码

#include <string>
#include <cstdio>
#include <iostream>
#define ll long long using namespace std; inline ll read(){
ll x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
} string s[105];
int is_not_same[105];
int is_not_same2[105]; int main(){
int n = read(), m = read();
for (int i = 0; i < n; ++i)
cin >> s[i];
int cnt = 0;
for (int i = 0; i < m; ++i){
for (int j = 1; j < n; ++j)
is_not_same2[j] = is_not_same[j];
int j;
for (j = 1; j < n; ++j){
if (!is_not_same[j]){
if (s[j - 1][i] > s[j][i]){
++cnt;
break;
}
else if (s[j - 1][i] == s[j][i])
is_not_same2[j] = 0;
else
is_not_same2[j] = 1;
}
}
if (j == n){
for (j = 1; j < n; ++j)
is_not_same[j] = is_not_same2[j];
}
}
printf("%d", cnt);
return 0;
}

  

T4

贪心
先排序
然后能往左倒就往左倒,不能往左倒就看可不可以往右倒
解释:
该树本身就占一格,如果不往左倒就是浪费
如果能往右倒,意味着对于后面的树来说,比下一颗树往左倒更优
解决

放个代码:

#include <cstdio>
#include <algorithm>
#define ll long long using namespace std; inline ll read(){
ll x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
} struct Tree{
int pos, hei;
} trees[100005]; int cut[100005]; bool Comp(const Tree &a, const Tree &b){
if (a.pos < b.pos)
return true;
else if (a.pos == b.pos){
if (a.hei < b.hei)
return true;
else
return false;
}
else
return false;
} int main(){
int n = read();
for (int i = 0; i < n; ++i){
trees[i].pos = read(), trees[i].hei = read();
}
sort(trees, trees + n, Comp);
int ans = 1, flg = 0;
for (int i = 1; i < n; ++i){
if (trees[i].pos - trees[i - 1].pos > trees[i].hei + (cut[i - 1] ? trees[i - 1].hei : 0)){
++ans;
} else if (((i == n - 1) ? 2147483647 : trees[i + 1].pos) - trees[i].pos > trees[i].hei){
cut[i] = 1;
++ans;
}
}
printf("%d", ans);
return 0;
}

  

T5

我们发现判断一个小于100的质数,只用用小于50的质数筛即可
但是,注意例如4这样的数需要特殊处理
于是如果输出一个质数的到yes,那么需要判断质数的平方
注意质数的平方如果大于100就别判了

放代码

#include <cstdio>
#include <string>
#include <iostream> using namespace std; const int p_num = 15;
int prime[20] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47}; int main(){
int cnt = 0;
string s;
for (int i = 0; i < p_num; ++i){
cout << prime[i] << endl;
fflush(stdout);
cin >> s;
if (s[0] == 'y'){
if ((prime[i] * prime[i]) <= 100){
cout << (prime[i] * prime[i]) << endl;
fflush(stdout);
cin >> s;
if (s[0] == 'y'){
cout << "composite" << endl;
return 0;
}
}
++cnt;
if (cnt >= 2){
cout << "composite" << endl;
return 0;
}
}
}
if (cnt == 1 || cnt == 0)
cout << "prime" << endl;
else
cout << "composite" << endl;
fflush(stdout);
return 0;
}

  

总结

  1、据说cout自带fflush

  2、5道水题,但我自闭了好几次

HG奋斗赛A[20190428]的更多相关文章

  1. HG奋斗赛B[20190429]

    T1 >传送门< 记忆化搜索,听说有更简单的方法(但博主比较菜) #include <cstdio> #include <cstdlib> #define ll l ...

  2. [HG]奋斗赛M

    题A     请进入链接↑ 题B     请进入链接↑ 题C     请进入链接↑ 题D     请进入链接↑ 题E     请进入链接↑ 题F     懒得写了,借用一下Chtholly_Tree巨 ...

  3. [HG]奋斗赛G

    T1 题目描述 安娜斯塔西娅喜欢去乌日扬迪安中央公园散步. 但她对简单的散步不感兴趣,于是她开始收集公园里的鹅卵石. 一开始,她决定收集所有她能在公园里找到的鹅卵石. 她只有两个口袋. 她能在每个口袋 ...

  4. [hgoi#2019/3/10]赛后总结

    关于本次hg模拟赛,题目来源于CF1110. t1-无意义运算符(meaning) 题目描述 最大公约数和位运算之间有共同点吗?是时候来研究一下了. 给定一个正整数a,请找到一个闭区间[1,a-1] ...

  5. 第六届acm省赛总结(退役贴)

    前言: 这是我的退役贴,之前发到了空间里,突然想到也要在博客里发一篇,虽然我很弱,但是要离开了还是有些感触,写出来和大家分享一下,希望不要见笑.回来看看,这里也好久没有更新了,这一年确实有些懈怠,解题 ...

  6. 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)

    队名:Unlimited Code Works(无尽编码)  队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...

  7. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  8. 2019-CCPC广东省赛总结

    2018年11月第一次参加ICPC区域赛青岛赛区,打铁了! 2019年5月第一次参加CCPC广东省赛,4题滚粗,C题莫队TLE13发,只拿了个铜牌! 教训总结: 比赛时千万不能犹豫,不能犹豫,不能犹豫 ...

  9. 2018年 第43届ACM-ICPC亚洲区域赛(青岛)现场赛 赛后总结

    下了动车后,又颠颠簸簸的在公交车上过了接近一个小时,本来就晕车,于是,到的时候脑子晕死了,而且想吐.可能是没吃早饭的缘故,午饭好好次QWQ. 开幕式 还是第一次在这种环境下参赛,记得以前是看老师发的学 ...

随机推荐

  1. Var的用法解析

    C#关键字是伴随着.NET 3.5以后,伴随着匿名函数.LINQ而来, 由编译器帮我们推断具体的类型.总体来说,当一个变量是局部变量(不包括类级别的变量),并且在声明的时候初始化,是使用var关键字的 ...

  2. C语言中printf,scanf,puts,%%等输出格式

    #include<stdio.h> int main(void){    int a;    printf("请输入一个整数,程序求取他的最后一位数字:");    s ...

  3. 菜鸟学IT之python网页爬取多页爬取

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3002 0.从新闻url获取点击次数,并整理成函数 newsUrl news ...

  4. js获取元素宽高、位置相关知识汇总

    常见clientWidth.clientHeight.offsetWidth.offsetLeft,clientX.scrollTop等词语,比较混乱,现在总结下他们的区别. 1. clientWid ...

  5. dataTable tab栏切换时错位解决办法

    做后台管理类网站肯定要写列表,首选dataTable,功能强大 最近在做一个tab栏切换时发现了一个很诡异的事情:表头错位了! 主要时因为当table被隐藏后,table的header宽度会计算错乱, ...

  6. C#中字符串转日期类型

    1,yyyyMMdd DateTime date = DateTime.ParseExact(", "yyyyMMdd", System.Globalization.Cu ...

  7. python-itchat 统计微信群、好友数量的实例

    今天小编就为大家分享一篇python-itchat 统计微信群.好友数量,及原始消息数据的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧   效果:   好友: # 获取自己的用 ...

  8. IntelliJ IDEA2017 激活方法 最新的激活注册方式方法,破解,密钥

    IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...

  9. react-redux的基本用法

    注意:读懂本文需要具备redux基础知识, 注明:本文旨在说明如何在实际项目中快速使用react-redux,限于篇幅,本文对具体的原理并未做分析,请参考redux官网 我一直以为我写了一篇关于rea ...

  10. Nginx CONTENT阶段 autoindex、index模块

    L 66 autoindex 指令 syntax : on | off; default : off; context : http,server,location; autoindex_exact_ ...