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. [eBook]Inside Microsoft Dynamics AX 2012 R3发布

    最近一本关于Microsoft Dynamics AX 2012开发的书<Inside Microsoft Dynamics AX 2012 R3> 发布. Book Descriptio ...

  2. Unable to load native-hadoop library for your platform(已解决)

    1.增加调试信息寻找问题 2.两种方式解决unable to load native-hadoop library for you platform 附:libc/glibc/glib简介 参考: 1 ...

  3. 服务器端使用DeferredResult异步推送技术

    注意1: org.springframework.web.context.request.async.DeferredResult; 是Spring4.0以后的版本才有的,注意Spring版本,然后添 ...

  4. css Flex布局(一)

    网页布局(layout) 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 6个属性 ...

  5. mac快捷键整理以及node的基本使用

    该文章是作为日常积累和整理,又是好久没有整理node的相关知识了,最近翻了翻自己的有道云笔记,怎一个乱字了的,重新整理下. 一.Mac常用快捷键 Command+M: 最小化窗口 Command+T: ...

  6. ecmall中的分页问题

    <ecmall>Ecmall系统自带的分页功能 在Ecmall的二次开发中,分页是必不可少的.这个系统已经自带了分页功能,下面来看看如何使用这个分页. 下面是一个自定义的类,用于查看订单的 ...

  7. HihoCoder1080 更为复杂的买卖房屋姿势(线段树+多重lazy)

    描述 小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们可以化身上帝模式,买卖房产. 在这个游戏里,会不断的发生如下两种事件:一种是房屋自发的涨价或者降价,而另一种是政 ...

  8. Docker-安装与部署

    本文在CentsOS下安装Docker 1.安装前准备工作 系统要求: 在CentOS下需要64位的CentsOS 7  OS requirements To install Docker, you ...

  9. Redis底层探秘(二):链表和跳跃表

    链表简介 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地跳转链表的长度. 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用C语言并没有内 ...

  10. 学习动态性能表(18)--v$system_event

    学习动态性能表 第18篇--V$SYSTEM_EVENT  2007.6.13 本视图概括了实例各项事件的等待信息.v$session_wait显示了系统的当前等待项,v$system_event则提 ...