数字反转

小模拟

 #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. Android 手势识别类 ( 二 ) GestureDetector 源码浅析

    前言:Android 关于手势的操作提供两种形式:一种是针对用户手指在屏幕上划出的动作而进行移动的检测,这些手势的检测通过android提供的监听器来实现:另一种是用 户手指在屏幕上滑动而形成一定的不 ...

  2. js fs read json 文件json字符串无法解析

    读取 xxx.txt(里面就是一段 json)-> JSON.parse( fs.readFileSync( xxx.txt ) ) -> 报 SyntaxError: unexpecte ...

  3. Nginx反向代理+负载均衡简单实现(https方式)

    背景:A服务器(192.168.1.8)作为nginx代理服务器B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服 ...

  4. vuejs使用技巧

    组件创建自定义标签时,自定义的标签不要用驼峰写法,vue否者报错,例如<my-template></my-template>合法或者去掉中间的斜杠全部小写,只要出现大写字母就会 ...

  5. max_allowed_packet自动恢复

    https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html http://blog.chinaunix.net/uid-20304801 ...

  6. Visual C#编写3D游戏框架示例

    你可能对实际地编写游戏代码期待已久了.由于DirectX SDK 2004年夏季更新包含了一个牢固的示例框架组件,并且它被设计成能在你自己的代码中直接使用,同时还为你处理了很多事务,所以你只要简单的使 ...

  7. XML CDATA的作用

    操作XML文件时,如果允许用户输入内容,例如∶"< ".">"."/".""等,当生成XML时,会破坏了XM ...

  8. python数字图像处理(5):图像的绘制

    实际上前面我们就已经用到了图像的绘制,如: io.imshow(img) 这一行代码的实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据.因此,我们也可 ...

  9. opencv3中的机器学习算法之:EM算法

    不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注.相反,该算法从给定的样本集中,能计算出高斯混和参数的最大似然估计.也能得到每个样本对应的标注值,类似于kmea ...

  10. LeetCode:Word Break(DP)

    题目地址:http://oj.leetcode.com/problems/word-break/ 简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: class Solution { publi ...