2019 gplt团体程序设计天梯赛总结
分很菜…

以后写题一定记得把题意理清楚了再开始写。
模拟题还是大坑,代码还是写得不够多,代码量一大就写bug。
补题
l1-8 估值一亿的AI核心代码
补题链接:https://pintia.cn/problem-sets/994805046380707840/problems/1111914599412858885
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <set>
#include <map>
#define INF 0x3f3f3f3f
#define ll long long
#define lowbit(x) (x&(-x))
#define PI acos(-1)
#define ms(x,y) memset(x, y, sizeof(x))
using namespace std; const int maxn = 1e4+;
char s[maxn];
char punc[] = "`~!@#$%^&*()_+-={}|[]\\;':\",./<>?";
char canYou[] = "can you"; //
char couldYou[] = "could you"; //
char me[] = "me"; // inline bool isPunc(char c) { for(int i=;punc[i]!='\0';i++) if(c == punc[i]) return true; return false; }
inline bool isCapit(char c) { return c >= 'A' && c <= 'Z'; }
inline bool isSepar(char c) { return (c == ' ') | isPunc(c); }
inline bool isCanYou(int ptr, int lim)
{
for(int i=;canYou[i] != '\0'; i++)
{
if(i+ptr >= lim) return false;
if(s[i+ptr] != canYou[i]) return false;
}
return +ptr >= lim || isSepar(s[+ptr]);
}
inline bool isCouldYou(int ptr, int lim)
{
for(int i=;couldYou[i] != '\0'; i++)
{
if(i+ptr >= lim) return false;
if(s[i+ptr] != couldYou[i]) return false;
}
return +ptr >= lim || isSepar(s[+ptr]);
}
inline bool isMe(int ptr, int lim)
{
for(int i=;me[i] != '\0'; i++)
{
if(i+ptr >= lim) return false;
if(s[i+ptr] != me[i]) return false;
}
return +ptr >= lim || isSepar(s[+ptr]);
} int print(int i, int lim)
{
if(isCanYou(i+, lim))
{
printf("I can");
i += ;
}
else if(isCouldYou(i+, lim))
{
printf("I could");
i += ;
}
else if(isMe(i+, lim))
{
printf("you");
i += ;
}
else if(i+ < lim && s[i+] == 'I' && (i+ >= lim || isSepar(s[i+])))
{
printf("you");
i += ;
}
return i;
} int main()
{
int T;
scanf("%d", &T);
getchar();
while(T--)
{
cin.getline(s, maxn); puts(s);
int len = strlen(s); int tp_begin = -, tp_end = ;
int now_cnt = ;
for(int i=; i<len; i++)
if(s[i] != ' ')
{
tp_begin = i-; break;
}
for(int i=len-; i>=; i--)
if(s[i] != ' ')
{
tp_end = i; break;
} for(int i=tp_begin+; i<=tp_end; i++)
{
if(s[i] == ' ')
{
int j = i+;
while(j <= tp_end && s[j] == ' ') j ++; // i+1~j-1: redundant space
if(!isPunc(s[j]))
s[now_cnt++] = s[i];
i = j-;
}
else
{
if(isCapit(s[i]) && s[i] != 'I') s[i] = s[i] - 'A' + 'a';
else if(s[i] == '?') s[i] = '!';
s[now_cnt ++] = s[i];
}
} s[now_cnt] = '\0'; printf("AI: ");
int i = ;
while(i < now_cnt && s[i] == ' ') i ++; // first un-space
i = print(i-, now_cnt);
for(i=i+;i<now_cnt;i++)
{
if(isSepar(s[i]))
{
printf("%c", s[i]);
i = print(i, now_cnt); }
else printf("%c", s[i]);
} puts("");
}
}
2019 gplt团体程序设计天梯赛总结的更多相关文章
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3009 长城 方法证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)
前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...
随机推荐
- 创建虚拟机中的nova-scheduler 调度配置
一个Openstack 系统中通常包括多个计算节点 root@controller:/etc/nova# nova hypervisor-list +----+-------------------- ...
- LeetCode208:Implement Trie (Prefix Tree)
Implement a trie with insert, search, and startsWith methods. Note: You may assume that all inputs a ...
- luogu1522 牛的旅行
题目大意 每个牧场里的某些坐标位置有牧区,牧区间有一个个路径(长度为位置间的直线距离).一个连通块内两个节点间的最短路径长度最大值为它的直径.请编程找出一条连接两个不同牧场的路径,使得连上这条路径后, ...
- UESTC--1252--24点游戏(dfs)
24点游戏 Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu Submit Status ...
- 74.资金管理-员工工资配置 extjs 页面
1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&quo ...
- html5的Form新特性
form新增的输入型控件: 名称 说明 图例 email 电子邮箱文本框,显示跟普通的没什么区别 tel 电话号码,pc端不会有明显的变化,但是移动端会自动切换键盘,输入有误不会阻止默认提交 u ...
- Zeppelin0.6.2之shiro安全配置 初探
0.序 默认情况下,Zeppelin安装好并且配置完zeppelin-site.xml和zeppelin-env.sh后,我们进入的模式,从右上角就能看出来是anonymous模式,这种模式下会看见所 ...
- BZOJ 3876 有上下界的网络流
思路: 套用有上下界的网络流 就好了 (这算是裸题吧) 比如 有条 x->y 的边 流量上限为R 下限为L 那么du[x]-=L,du[y]+=L 流量上限变成R-L du[x]>0 ...
- xcode制作越狱后ipa安装文件
正常情况下发布测试版给用户需要问到对方设备ID并添加到开发者证书里去感觉有点麻烦,如果是已越狱过的机器可以使用xcode制作ipa文件,并直接用itunes同步进去,这样方便多了. 将运行目标选为iO ...
- Spring Boot (18) @Async异步
通常我们在某网站发送邮件验证码时,首先会提示验证码已发送,然而此时可能没有收到验证码,过几秒种才真正的收到.如果是同步会先验证发送是否成功然后再通知,如果是异步可以先通知用户已发送,并释放请求,然后再 ...