【csp】2017-9
2024-08-28 10:16:18
1、打酱油
题目:
题意:如上。
题解:经典问题。看代码吧。qwq
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<cstring>
using namespace std;
#define ll long long
const int maxn = +; int main(){
int n;
cin>>n; cout<<( (n/)* + (n%/)* + (n%%)/ )<<endl; return ;
}
2、公共钥匙盒
题目:
题意:题意描述很清楚啦。
题解:一个小型模拟题。。可能第一题太简单了。。第二题其实卡了一下。。考虑还钥匙和借钥匙。每一个都开vector去进行模拟。借就把原数组置0,还就对比原数组在0的位置赋值。
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = +; int n,k;
int a[maxn]; vector<int> re;
vector<int> br; struct node{
int w;
int s;
int t;
}tea[maxn]; bool cmp(node a,node b){
if(a.s != b.s){
return a.s < b.s;
}
return a.t < b.t;
} void init(int n){
for(int i = ;i <= n ;i++){
a[i] = i;
}
} void findre(int t){
for(int i = ; i < k ;i++){
if(tea[i].t == t){
re.push_back( tea[i].w);
}
}
} void findbr(int t){
for(int i = ; i < k ;i++){
if(tea[i].s == t){
br.push_back( tea[i].w);
}
} } void returnkey(){
sort(re.begin(),re.end());
for( int i = ; i < re.size(); i++){
for( int j = ; j <= n; j++){
if(a[j] == ){
a[j] = re[i];
break;
}
}
}
re.clear(); } void borrowkey(){
sort(br.begin(),br.end());
for( int i = ; i < br.size(); i++){
for( int j = ; j <= n; j++){
if(a[j] == br[i]){
a[j] = ;
break;
}
}
}
br.clear();
} int main(){
cin>>n>>k;
int w,s,c;
init(n);
for(int i = ; i < k ;i++){
cin>>w>>s>>c;
tea[i].w = w;
tea[i].s = s;
tea[i].t = s+c;
}
sort(tea,tea+k,cmp); int maxt = ;
for(int i = ; i < k; i++){
if(maxt < tea[i].t){
maxt = tea[i].t;
}
}
//cout<<maxt<<endl; for(int i = ;i <= maxt; i++){
findre(i);
findbr(i);
//还
if(re.size()){
returnkey();
}
//借
if(br.size()){
borrowkey(); }
} for(int i = ; i <= n ;i++){
cout<<a[i]<<" ";
}
cout<<endl; return ;
}
3、JSON查询
题目:
题意:有点被恶心到。其实就是按照规则模拟。规则在图上。
题解:输入的时候一行一行判断。map直接进行映射。
1、{ 判断,当前是不是需要成为一个object。存储头。对值的存储进行标记。
2、" 判断是起始的还是结束的。以此获取key值。通过标记判断是对象还是直接映射。
3、} 判断是结束标志,还是对象结束标志。分情况进行取值。
4、后面都是一些字符的特判。稍作理解即可。
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<cstring>
#include<map> using namespace std;
#define ll long long
const int maxn = +; map<string,string> mp; int main(){
int n,m;
cin>>n>>m;
string s;
int flag = ;
string header = "";
string val = "";
string key = "";
cin.get();
while(n--){
getline(cin,s);
int len = s.size(); for (int i = ; i < len; i++){
if(s[i] == '{'){
if(key.size()){
header = key;
header += '.';
}
flag = ;
} else if (s[i] == '"'){
if(val.size()){
if(flag){
if(key.size() > ){
val = header + val;
}
mp[val] = "OBJECT";
key = val;
}
else{
mp[key] = val;
}
val = "";
}
} else if (s[i] == ':')
flag = ; else if (s[i] == ',' ){
flag = ;
} else if(s[i] == '\\'){
i++;
val += s[i];
}
else if (s[i] == ' ')continue; else if (s[i] == '}'){
int t = header.rfind('.',header.size()-);
if(t > )
header = header.substr(,t+);
else
header = "";
}
else{
val += s[i];
} }
//cout<<key<<" "<<val<<endl;
}
/*
map<string,string> :: iterator it = mp.begin();
while(it != mp.end()){
cout<<it->first<<" "<<it->second<<endl;
it++;
} */ for (int i = ; i < m ; i ++) {
getline(cin,s); if(mp.count(s)){
if(mp[s] != "OBJECT")
cout<<"STRING "<<mp[s]<<endl;
else
cout<<mp[s]<<endl;
}
else
cout<<"NOTEXIST"<<endl;
} return ;
}
最新文章
- SRETAN
- Windows系统Stunnel客户端的配置
- App lifecycle(UWP深入学习一)
- Cocos2d-x 3.0修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
- ios 应用程序图标、启动画面、itune图标设置
- js获取时间格式化
- foreach -begin -process -end
- Java中匿名类的两种实现方式(转)
- poj1007 qsort快排
- Tomcat 用户配置
- 【Linux】日志分析工具grep sed sort
- page0902未完成
- C# 调用线程并行上下文穿透-ILogicalThreadAffinative+CallContext
- ccf-20170303--Markdown
- HTML表格的简单使用1
- easyui再学习的一部分代码
- VS编译duilib项目时候的错误解决方法整理(转载)
- 配置搭建与使用redis
- [C#]跨模块的可选参数与常量注意事项
- Vscode rg.exe cpu 占用过高
热门文章
- 带头结点的循环单链表----------C语言
- win 解除鼠标右键关联
- POJ 2451 Uyuw&#39;s Concert (半平面交)
- PAT_A1121#Damn Single
- redis 配置文件aof配置
- CDH5..4.7+phoenix实现查询HBase异常:java.sql.SQLException: ERROR 1102 (XCL02): Cannot get all table regions
- python项目部署
- thinkphp助手函数
- BBS论坛 后台管理
- vagrant ssh try