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. 02-THREE.JS 辅助线使用

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  2. LeetCode OJ:Binary Tree Level Order Traversal(二叉树的层序遍历)

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  3. 《Effective C++》——条款20:宁以pass-by-reference-to-const替换pass-by-value

    切割(slicing)问题 请看下面代码: class Window { public: ... std::string name()const; //返回窗口名称 virtual void disp ...

  4. 源码编译安装mysql5.6

    1.download the source package and unzip to the destination dir http://mirror.switch.ch/mirror/mysql/ ...

  5. python的单例模式--解决多线程的单例模式失效

    单例模式 单例模式(Singleton Pattern) 是一种常用的软件设计模式,主要目的是确保某一个类只有一个实例存在.希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场 比如,某个 ...

  6. Leetcode 974. Subarray Sums Divisible by K

    前缀和(prefix sum/cumulative sum)的应用. 还用了一个知识点: a≡b(mod d) 则 a-b被d整除. 即:a与b对d同余,则a-b被d整除. class Solutio ...

  7. windows下matplotlib的安装

    在上一篇中我想用matplotlib,无奈一直装不上,就在卸了又装装了又卸,反反复复之后,终于装好了. 初学python,首先就装了numpy,倒也没有多复杂,有需要的朋友可以直接http://sou ...

  8. PHP数据结构之实现单链表

    学习PHP中,学习完语法,开始尝试实现数据结构,今天实现单链表 <?php class node //节点的数据结构 { public $id; public $name; public $ne ...

  9. django的related_name

    转:https://segmentfault.com/q/1010000003705677 就是一个反向关联的属性,比方说model里面定义两个class,一个是A,一个是B class A(Mode ...

  10. php处理redis

    1,connect 描述:实例连接到一个Redis.参数:host: string,port: int返回值:BOOL 成功返回:TRUE;失败返回:FALSE 示例: 1 2 3 4 5 <? ...