F 时间显示
题目信息
题目描述
小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
————————————————
这道题其他没什么注意 1 s=1000 ms
对应的 1 米 = 10 分米 = 100 厘米 = 1000 毫米
1 升 = 1000 毫升 =1 立方分米
————————————————
H 杨辉三角形
题目信息
题目描述
下面的图形是著名的杨辉三角形:
如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:
1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, …
给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?
————————————————————
看到这道题,一开始想的是用滚动数组来骗一些分,但是考试的时候凉的一批,连板子都模不出来,这是赛后又写的滚动数组,我真是太菜了
J 括号序列
code
#include<bits/stdc++.h>
using namespace std;
set<string> e;
int vis[5500];
bool judge(string s){
int count=0;
for(int i=0;i<s.length();i++){
if(s[i]=='('){
count++;
}
else{
count--;
if(count<0){
return false;
}
}
}
return true;
}
void dfs1(int n,vector<char>& v){
if(n==0){
string str;
for(int i=0;i<v.size();i++){
str+=v[i];
}
if(judge(str)){
e.insert(str);
}
return;
}
for(int i=0;i<=v.size();i++){
if(vis[i]==0){
vis[i]=1;
v.insert(v.begin()+i,')');
dfs1(n-1,v);
vis[i]=0;
v.erase(v.begin()+i);
}
}
}
void dfs2(int n,vector<char>& v){
if(n==0){
string str;
for(int i=0;i<v.size();i++){
str+=v[i];
}
if(judge(str)){
e.insert(str);
}
return;
}
for(int i=0;i<=v.size();i++){
if(vis[i]==0){
vis[i]=1;
v.insert(v.begin()+i,'(');
dfs2(n-1,v);
vis[i]=0;
v.erase(v.begin()+i);
}
}
}
int main(){
vector<char> v;
vector<char>::iterator Iter;
memset(vis,0,sizeof(vis));
string s;
cin>>s;
for(int i=0;i<s.length();i++){
v.push_back(s[i]);
}
int left=0,right=0;
for(int i=0;i<s.length();i++){
if(s[i]=='(') left++;
else right++;
}
int res;
if(left==right){
cout<<"0";
return 0;
}
else if(left>right){
res=left-right;
dfs1(res,v);
cout<<e.size();
}
else{
res=right-left;
dfs2(res,v);
cout<<e.size();
}
}
这个题考试时没写出来,现在重新写了一遍,骗了一些分,dfs,bfs算法还是比较生疏。。。。。