数字反转

小模拟

 #include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int i,n;
char a[];
scanf("%s",&a);
n=strlen(a);
int t1=;
int t2=;
if (a[]=='-') {
printf("-");
t1++;
}
t2=n-;
for(i=n-;i>=;i--) if(a[i]=='')
t2--;
else break;
for(i=t2;i>=t1;i--) cout<<a[i];
return ;
}

数字反转

统计单词数

将待匹配字符串前后加空格,样本字符串前后加空格,这样无脑find就可以找出所有单词

 #include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
string s,sf;
int t;//计数器;
int main(){
getline(cin,sf);
getline(cin,s);
int j;
for(j=;j<=sf.size();j++)sf[j]=tolower(sf[j]);
for(j=;j<=s.size();j++)s[j]=tolower(s[j]);
sf=' '+sf+' ';
s=' '+s+' ';
int posi=-;
int fpos=;
if(s.find(sf)==string::npos){cout<<"-1"; return ;}
fpos=s.find(sf);
while(s.find(sf,posi+)!=string::npos){
posi=s.find(sf,posi+);
t++;
}
cout<<t<<" "<<fpos;
return ;
}

统计单词数

瑞士轮

按照题目要求排序,每次模拟完都要排一次序。

直接sort会T

原本有序的序列,比赛完积分只加0或1,仍然是有序的,此时用归并排序只要O(n)复杂度。

 /*by SilverN*/
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int mxn=;
int n,r,q;
struct node{
int pw;
int score;
int num;
}a[mxn],w[mxn],f[mxn];//所有人 胜者 败者
int cmp(node a,node b){
if(a.score!=b.score) return a.score>b.score;
return a.num<b.num;
}
int main(){
scanf("%d%d%d",&n,&r,&q);
n=n*;
int i,j;
for(i=;i<=n;i++){
scanf("%d",&a[i].score);
}
for(i=;i<=n;i++){
scanf("%d",&a[i].pw);
a[i].num=i;
}
sort(a+,a+n+,cmp); for(i=;i<=r;i++){
for(j=;j<=n;j+=){
if(a[j].pw>a[j+].pw){
w[(j+)>>]=a[j];
f[(j+)>>]=a[j+];
}
else{
w[(j+)>>]=a[j+];
f[(j+)>>]=a[j];
}
w[(j+)>>].score++;
}
merge(w+,w+n/+,f+,f+n/+,a+,cmp);
}
printf("%d\n",a[q].num);
return ;
}

表达式的值

一边用栈计算表达式,计算过程中DP(其实是递推)

 /*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
const int mod=;
const int mxn=;
int f[mxn][],ntp=;
int n;
char st[mxn];int ctop=;
char s[mxn];
int cmp(char x){
if(!ctop)return ;
if(st[ctop]=='(')return ;
if(st[ctop]=='*')return ;
if(x=='*')return ;
if(st[ctop]=='+')return ;
return ;
}
void clc(char x){
int xa=f[ntp][],xb=f[ntp--][];//0 1
int ya=f[ntp][],yb=f[ntp--][];//0 1
int resa=,resb=;
if(x=='+'){
(resa+=xa*ya)%=mod;
(resb+=xa*yb)%=mod;
(resb+=xb*yb)%=mod;
(resb+=xb*ya)%=mod;
}
else{
(resb+=(xb*yb))%=mod;
(resa+=xa*yb+xb*ya)%=mod;
(resa+=xa*ya)%=mod;
}
f[++ntp][]=resa;
f[ntp][]=resb;
return;
}
int main(){
scanf("%d",&n);
scanf("%s",s+);
s[]='(';
s[++n]=')';
int i,j;
for(int i=;i<=n;i++){
// printf("%d %c\n",i,s[i]);
// for(j=1;j<=4;j++)printf("%d %d\n",f[j][0],f[j][1]);
// for(j=1;j<=4;j++)printf("%c ",st[j]);
// printf("\n");
if(s[i]=='('){
st[++ctop]=s[i];
continue;
}
if(s[i-]!=')'){ f[++ntp][]=;
f[ntp][]=;
}
if(s[i]=='+'){
while(cmp(st[ctop]))clc(st[ctop--]);
st[++ctop]=s[i];
}
else if(s[i]=='*'){
while(cmp(st[ctop]))clc(st[ctop--]);
st[++ctop]=s[i];
}
else if(s[i]==')'){
while(ctop && st[ctop]!='('){
clc(st[ctop--]);
}
ctop--;
}
}
printf("%d\n",f[][]);
return ;
}

[NOIP2011] 普及组的更多相关文章

  1. NOIP2011 普及组 T3 洛谷P1309 瑞士轮

    今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...

  2. NOIP2011普及组 数字反转

    题目OJ链接: http://codevs.cn/problem/1130/ https://www.luogu.org/problemnew/show/P1307 2011年NOIP全国联赛普及组 ...

  3. [NOIP2011普及组]瑞士轮 JAVA实现

    题目描述 2*N名编号为1~2N的选手共进行R轮比赛.每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名.选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和.总分 ...

  4. noip2011普及组——统计单词数

    统计单词数 时间限制:1 s 内存限制:128MB [问题描述]一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实 ...

  5. noip2011普及组——数字反转

    数字反转 时间限制:1s 内存限制:128MB[问题描述]给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零 ...

  6. NOIP2011普及组 瑞士环 保序性

    题目链接:http://noi.openjudge.cn/ch0401/4363/ 分析:如果直接模拟,时间复杂度是O(r*nlogn)超时 然后我们发现每次一轮开始时,刚开始是保序的,然后我们可以把 ...

  7. 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)

    题目链接: https://vijos.org/p/1771 题目大意: 给定2N个人(N<=100 000)和其初始分数.能力值(能力两两不同),比赛M次(M<=50),每次PK都是按分 ...

  8. 【解题报告】瑞士轮(NOIP2011普及组T3)

    [题外话:这道题吧……说实话我不太喜欢……因为卡快排.] 题目不贴了,就是给你一个赛制,然后各个选手的初始得分和能力值,问你进行R轮比赛之后第Q名的编号是多少(这个编号读进来就要算OYZ,初始快排的时 ...

  9. NOIP2011普及组 瑞士轮

    OJ地址: https://www.luogu.org/problemnew/show/P1309 http://bailian.openjudge.cn/practice/4031/ 总时间限制:  ...

随机推荐

  1. JavaEE

    1.  为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程 ...

  2. 认识实验室信息管理系统(LIMS)

    在当今互联网如日中天的大环境下,各种伴随着互联网的产物如p2p,o2o在如火如荼的进行着,吸引了大量的开发人员都涌向了这个行业,所有的技术似乎都在围绕着互联网发展,传统行业软件开发的人气和关注度就相形 ...

  3. 分布式环境下Unique ID生成方法

    ID即标示符,在某个搜索域内能唯一标示其中某个对象.在关系型数据库中每个表都需要定义一个主键来唯一标示一条记录.为了方便一般都会使用一个auto_increment属性的整形数做为ID.因为数据库本身 ...

  4. .NET编译的目标平台(AnyCPU,x86,x64)

    转载:http://blog.sina.com.cn/s/blog_78b94aa301014i8r.html 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有D ...

  5. 怎么写针对IE9的CSS

    (自己亲自试过有用)针对IE9的CSS只需在相应CSS代码加入只有IE9识别的 \9\0.具体代码如下: .div{ background-color:#0f0\9\0;/* ie9 */ } 其他浏 ...

  6. MySQL基础 - mysql命令行客户端

    在Linux系统当中,mysql作为一个客户端命令程序,在很大程度上连接数据库都是使用mysql,因此很有必要熟悉mysql命令行的使用. 这里假设数据库用户为icebug,密码为icebug_pas ...

  7. 将Axure用于需求分析工具

    http://www.cnblogs.com/hnlong1/p/4113517.html?utm_source=tuicool 今年以来开始接触需求分析工作,uml是必用的建模语言. 一开始是使用最 ...

  8. Caffe学习系列(11):图像数据转换成db(leveldb/lmdb)文件

    在深度学习的实际应用中,我们经常用到的原始数据是图片文件,如jpg,jpeg,png,tif等格式的,而且有可能图片的大小还不一致.而在caffe中经常使用的数据类型是lmdb或leveldb,因此就 ...

  9. Linux第13周学习笔记

    网络编程 客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型. 一个应用是由一个服务器进程和一个或者多个客户端进程组成. 服务器管理某种资源,并通过操作资源来为客户端提供某种服务. 基本操 ...

  10. WPF之TreeList的实现方法(一)

    做项目的时候根据需求,WPF现有的控件不能完全满足我们的需求, 很多时候我们需要对现有的控件做一下加工. 最简单的我们可能会把Tree转换成List形式有的叫Grid形式就像下图一样 今天我先做一个完 ...