site:http://bailian.openjudge.cn/xly2018/

1、计算任意两天之间的天数

思路:以0为起始点计算天数,然后相减即可。这样的编码复杂度会减少很多。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool isleapyear(int y){
return (y%==&&y%!=||y%==);
}
int sum1(int a1,int b1,int c1){
int md[]={,,,,,,,,,,,,};
int res=a1*;
res+=(a1-)/+;
res-=(a1-)/+;
res+=(a1-)/+;
for(int i=;i<b1;i++)res+=md[i];
if(b1>&&isleapyear(a1)) res++;
res+=c1;
return res;
}
int cnt(int a1,int b1,int c1,int a2,int b2,int c2){
int res1=sum1(a1,b1,c1);
int res2=sum1(a2,b2,c2);
int ans=res2-res1;
return ans;
}
int main(){
int a1,b1,c1,a2,b2,c2;
cin>>a1>>b1>>c1>>a2>>b2>>c2;
printf("%d\n",cnt(a1,b1,c1,a2,b2,c2));
return ;
}

2、回文子串

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n;
cin>>n;
while(n--){
string s;
cin>>s;
int res=;
int residx=;
int length=;
for(int i=;i<s.size();i++){
int j=;
for(;;j++){
if(i-j<||i+j>=s.size()) break;
if(s[i-j]!=s[i+j]) break;
}
j--;
if(*j+>res){
res=*j+;
residx=i;
length=j;
}
}
for(int i=residx-length;i<=residx+length;i++){
printf("%c",s[i]);
}
printf("\n");
}
}

3、归并排序

#include<bits/stdc++.h>
#define maxn 50000
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int L[maxn],R[maxn],a[maxn],n;
void merge(int l,int mid,int r){
int n1=mid-l,n2=r-mid;
for(int i=;i<n1;i++) L[i]=a[l+i];
for(int i=;i<n2;i++) R[i]=a[mid+i];
L[n1]=R[n2]=inf;
int i=,j=;
for(int k=l;k<r;k++){
if(L[i]<=R[j]) a[k]=L[i++];
else a[k]=R[j++];
}
}
void mergesort(int l,int r){
if(l+<r){
int mid=(l+r)/;
mergesort(l,mid);
mergesort(mid,r);
merge(l,mid,r);
}
}
int main(){
cin>>n;
for(int i=;i<n;i++) cin>>a[i];
mergesort(,n);
for(int i=;i<n;i++){
printf("%d ",a[i]);
}
}

第二种归并排序的写法:

#include<bits/stdc++.h>
#define maxn 50000
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int tmp[maxn],a[maxn],n;
ll cnt=;
void merge(int l,int m,int r){
int i=l,j=m+,k=;
while(i<=m&&j<=r){
if(a[i]<=a[j]) tmp[k++]=a[i++];
else tmp[k++]=a[j++];
}
while(i<=m) tmp[k++]=a[i++];
while(j<=r) tmp[k++]=a[j++];
for(int i=l;i<=r;i++) a[i]=tmp[i-l];
}
void mergesort(int l,int r){
if(l<r){
int mid=(l+r)>>;
mergesort(l,mid);
mergesort(mid+,r);
merge(l,mid,r);
}
}
int main(){
cin>>n;
for(int i=;i<n;i++) cin>>a[i];
mergesort(,n-);
for(int i=;i<n;i++){
printf("%d ",a[i]);
}
//printf("%d\n",cnt);
}

求逆序对个数:

#include<bits/stdc++.h>
#define maxn 50000
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int tmp[maxn],a[maxn],n;
ll cnt=; void merge(int l,int m,int r){
int i=l,j=m+,k=;
while(i<=m&&j<=r){
if(a[i]<=a[j]) tmp[k++]=a[i++];
else tmp[k++]=a[j++],cnt+=m-i+;
}
while(i<=m) tmp[k++]=a[i++];
while(j<=r) tmp[k++]=a[j++];
for(int i=l;i<=r;i++) a[i]=tmp[i-l];
} void mergesort(int l,int r){
if(l<r){
int mid=(l+r)>>;
mergesort(l,mid);
mergesort(mid+,r);
merge(l,mid,r);
}
}
int main(){
cin>>n;
for(int i=;i<n;i++) cin>>a[i];
mergesort(,n-);
/*for(int i=0;i<n;i++){
printf("%d ",a[i]);
}*/
printf("%d\n",cnt);
}

2012年thu机试第二题:贪心或dp

#include<bits/stdc++.h>
#define maxn 10006
using namespace std;
typedef long long ll;
int a[maxn];
int main(){
int n,sum=;
cin>>n;
for(int i=;i<n;i++) cin>>a[i],sum+=a[i];
int ave=sum/n;
int store=,ans=,tmp;
for(int i=;i<n;i++){
tmp=a[i]-ave;
store+=tmp;
ans+=abs(store);
}
printf("%d\n",ans);
return ;
}

thu2016第一题:

#include<bits/stdc++.h>
#define maxn 100006
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int n,m,k,tmp[maxn];
struct node{
int num;
int idx;
}a[maxn];
bool cmp(node &a,node &b){
return (a.num<b.num)||(a.num==b.num&&a.idx<b.idx);
}
bool check(int x){
// printf("%d:\n",x);
int num=;
for(int i=;i<=n;i++){
if(a[i].idx<=x){
tmp[num++]=a[i].num;
}
} if(num<m) return false;
for(int i=;m+i-<num;i++){
if(a[m+i-].num-a[i].num<=k) return true;
}
return false;
} int erfen(int l,int r){
while(l<r){
int mid=(l+r)>>;
if(check(mid)) r=mid;
else l=mid+;
}
return l;
}
int main(){
cin>>n>>m>>k;
for(int i=;i<=n;i++) cin>>a[i].num,a[i].idx=i;
sort(a+,a+n+,cmp);
//for(int i=1;i<=n;i++) printf("%d ",a[i].num);
int ans=erfen(,n+);
if(ans==n+){
printf("impossible\n");
}
else printf("%d\n",ans);
return ;
}
/*
6 3 5
170 169 175 171 180 175
*/
/*
6 4 5
170 169 175 171 180 175
6 5 5
170 169 175 171 180 175
*/

一定会有大模拟。。。

url大模拟:

#include<bits/stdc++.h>
#define maxn 10006
using namespace std;
typedef long long ll;
string s[maxn],t[maxn],tmps;
bool match(string s,string t,bool flag){
int lens=s.size(),lent=t.size();
int ps=,pt=;
while(ps<lens&&pt<lent){
if(s[ps]==t[pt]){
ps++,pt++;
}else{
if(t[pt++]!='<') return false;
if(flag) cout<<" ";
if(t[pt]=='i'){
bool ok=false;
while(s[ps]&&isdigit(s[ps])){
if(s[ps]!='') ok=true;
if(flag&&ok) cout<<s[ps];
ps++;
}
if(!ok) return false;
pt+=;
}else if(t[pt]=='s'){
bool ok=false;
while(s[ps]&&s[ps]!='/'){
ok=true;
if(flag) cout<<s[ps];
ps++;
}
if(!ok) return false;
pt+=;
}else if(t[pt]=='p'){
if(flag){
while(s[ps]) cout<<s[ps],ps++;
}
return true;
}
}
}
return ps==lens&&pt==lent;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=;i<n;i++) cin>>s[i]>>t[i];
for(int i=;i<m;i++){
cin>>tmps;
bool f1=false;
for(int j=;!f1&&j<n;j++){
if(match(tmps,s[j],false)){
cout<<t[j]<<" ";
f1=true;
match(tmps,s[j],true);
}
}
if(!f1) cout<<"";
cout<<"\n";
}
return ;
}

ccf-csp第三题:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string text,line;
void solve(){
int l1=text.find("_");
while(l1!=string::npos){
text.replace(l1,,"<em>");
int r1=text.find("_",l1);
text.replace(r1,,"</em>");
l1=text.find("_",r1);
} l1=text.find("[");
while(l1!=string::npos){
int r1=text.find("]",l1);
int l2=text.find("(",r1);
int r2=text.find(")",l2);
string tmp1=text.substr(l1+,r1-l1-);
string tmp2=text.substr(l2+,r2-l2-);
string tt="<a href=\""+tmp2+"\">"+tmp1+"</a>";
text.replace(l1,r2-l1+,tt);
l1=text.find("[",r2);
} //主要分为三部分
if(text[]=='#'){
int i=;
while(text[i]=='#') i++;
text="<h"+string(,''+i)+">"+text.substr(i+,text.size()-i-)+"</h"+string(,''+i)+">\n";
}else if(text[]=='*'){
text.insert(,"<ul>\n");
text.insert(text.size(),"</ul>\n");
l1=text.find("*");
while(l1!=string::npos){
text.replace(l1,,"<li>");
int r1=text.find("\n",l1);
text.insert(r1,"</li>");
l1=text.find("*",r1);
}
}else{
text="<p>"+text.substr(,text.size()-)+"</p>\n";
}
cout<<text;
text="";
}
int main(){
freopen("C:\\Users\\Administrator\\Desktop\\demo2047.txt","r",stdin);
text="";
while(getline(cin,line)){
if(line.size()>) text+=line+"\n";
else if(line.size()==&&text.size()>) solve();
}
if(text.size()>) solve();
return ;
}

保研机试训练[bailianoj]的更多相关文章

  1. 题目1205:N阶楼梯上楼问题(2008年华中科技大学计算机保研机试真题:递推求解)

    题目1205:N阶楼梯上楼问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2447 解决:927 题目描写叙述: N阶楼梯上楼问题:一次能够走两阶或一阶,问有多少种上楼方式. (要求 ...

  2. 华为OJ机试训练(一)

    题目1 -- 通过输入英文句子.将每一个单词反过来,标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? 比如输入:Hello, I need an apple. ...

  3. SAP成都研究院Sunshine: 我的C4C实习感受和保研之路

    今天的文章来自SAP成都一位实习生,曾经和Jerry同在C4C成都开发团队一起工作过.在Sunshine最后一个工作日里,Jerry和Sunshine一起吃饭的时候,她曾经聊到接下来的保研打算和将来工 ...

  4. 计算机保研,maybe this is all you need(普通双非学子上岸浙大工程师数据科学项目)

    写在前面 9.28接收了拟录取通知,也终究是尘埃落定了,我人生的又一个阶段也终于结束.面对最终录取结果,或多或少会有所遗憾,但也还是基本达到了预期的目标了. 作为在今年严峻的保研形势下幸存的我,一直想 ...

  5. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

    原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...

  6. java机试要点

    Java机试准备 一般结构:   import java.util.Scanner; public class Main{ public static void main(String[] args) ...

  7. 2015 NI 校招笔试机试面试

    美国国家仪器NI也算是入驻上海很好的一家外企了,它是我们院的合作公司,加上今年NI在我们院扩招实习生,这次是一个难得的机会可以进入NI实习,可惜我并没有好好把握... 一.笔试 几个做错的印象特别深刻 ...

  8. 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。

    package 华为机试; //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的 ...

  9. 保垒机SSH登录脚本

    线上服务器一般都会有一个保垒机,我们登录线上服务器的时候都要通过这个堡垒机来实现登录,这样我们就要维护很多线上服务器的ip,很麻烦. 所以写了一个脚本用来便捷的登录各个服务器,可以把这个脚本放到跳板机 ...

随机推荐

  1. Python爬虫之利用BeautifulSoup爬取豆瓣小说(二)——回车分段打印小说信息

    在上一篇文章中,我主要是设置了代理IP,虽然得到了相关的信息,但是打印出来的信息量有点多,要知道每打印一页,15个小说的信息全部会显示而过,有时因为屏幕太小,无法显示全所有的小说信息,那么,在这篇文章 ...

  2. nexus上传jar带依赖

    编写pom文件 比如我上传alipay-sdk-java.jar   依赖是commons-logging.jar <project> <modelVersion>1.3.1& ...

  3. 基于vue的滚动条组件之--element隐藏组件滚动条scrollbar使用

    在项目中,总是需要用到滚动条,但windows浏览器默认的滚动条是很丑的,为了页面美观,可以考虑优化滚动条样式.  vue Element UI官方文档上并没有放出滚动条相关的示例说明,但是实际上是有 ...

  4. Elasticsearch使用积累

    常用插件 Head查看分片情况,操作简单api Bigdesk监控所在机器的CPU,IO,JVM等指标,简单分片概览 KOPF查看集群gc回收磁盘性能, 分片情况, 简单操作api, 感觉该插件较He ...

  5. Git_学习_09_Commit message 和 Change log 编写指南

    一.前言 二.Commit message编写 1.规范 2.用空行分开主题和正文 提交时只执行 git commit,这时就会跳出文本编辑器,让你写多行. git commit 主题和正文分开 每次 ...

  6. Spring_总结_04_高级配置(四)_bean的作用域

    一.前言 本文承接上一节:Spring_总结_04_高级配置(三)之处理歧义 1.单例bean Spring应用上下文中所有的bean默认都是单例的.也就是说,不管一个bean被注入到其他bean多少 ...

  7. gradle_学习_01_gradle安装与基本使用

    一.下载安装 1.下载地址 官方下载地址: https://gradle.org/install/#manually 下载二进制文件,解压即可 2.环境变量配置 加入以下环境变量 GRADLE_HOM ...

  8. 性能测试工具BenchmarkDotnet

    .NET Core中的性能测试工具BenchmarkDotnet https://www.cnblogs.com/lwqlun/p/9671611.html 背景介绍 之前一篇博客中,我们讲解.NET ...

  9. Mayor's posters (线段树加离散化)

    个人心得:线段树也有了一定的掌握,线段树对于区间问题的高效性还是挺好的,不过当区间过大时就需要离散化了,一直不了解离散化是什么鬼,后面去看了下 离散化,把无限空间中有限的个体映射到有限的空间中去,以此 ...

  10. BZOJ5091: [Lydsy1711月赛]摘苹果

    BZOJ5091: [Lydsy1711月赛]摘苹果 https://lydsy.com/JudgeOnline/problem.php?id=5091 分析: 点\(x\)第\(1\)次选中的概率是 ...