[NOIP2011] 普及组
小模拟
#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] 普及组的更多相关文章
- NOIP2011 普及组 T3 洛谷P1309 瑞士轮
今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...
- NOIP2011普及组 数字反转
题目OJ链接: http://codevs.cn/problem/1130/ https://www.luogu.org/problemnew/show/P1307 2011年NOIP全国联赛普及组 ...
- [NOIP2011普及组]瑞士轮 JAVA实现
题目描述 2*N名编号为1~2N的选手共进行R轮比赛.每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名.选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和.总分 ...
- noip2011普及组——统计单词数
统计单词数 时间限制:1 s 内存限制:128MB [问题描述]一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实 ...
- noip2011普及组——数字反转
数字反转 时间限制:1s 内存限制:128MB[问题描述]给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零 ...
- NOIP2011普及组 瑞士环 保序性
题目链接:http://noi.openjudge.cn/ch0401/4363/ 分析:如果直接模拟,时间复杂度是O(r*nlogn)超时 然后我们发现每次一轮开始时,刚开始是保序的,然后我们可以把 ...
- 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)
题目链接: https://vijos.org/p/1771 题目大意: 给定2N个人(N<=100 000)和其初始分数.能力值(能力两两不同),比赛M次(M<=50),每次PK都是按分 ...
- 【解题报告】瑞士轮(NOIP2011普及组T3)
[题外话:这道题吧……说实话我不太喜欢……因为卡快排.] 题目不贴了,就是给你一个赛制,然后各个选手的初始得分和能力值,问你进行R轮比赛之后第Q名的编号是多少(这个编号读进来就要算OYZ,初始快排的时 ...
- NOIP2011普及组 瑞士轮
OJ地址: https://www.luogu.org/problemnew/show/P1309 http://bailian.openjudge.cn/practice/4031/ 总时间限制: ...
随机推荐
- [转] 国外程序员整理的 C++ 资源大全
关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz 发起和维护. 内容包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++标准库,包括了S ...
- 转载 ---> UITableViewCell的分割线
在iOS7中,表格中经常看到的一个情况是如下所示, 解决方法: 1,手写代码控制 1 self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, ...
- Python-操作Memcache、Redis、RabbitMQ、
Memcache 简述: Memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要 ...
- POJ 1088滑雪
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 89168 Accepted: 33474 Description ...
- Contains Duplicate II
Given an array of integers and an integer k, find out whether there there are two distinct indices i ...
- Android 主题和选择器
今天在做底部tab的时候因为样式都一样 所以就自定义一个style 这样省的写很多重复的样式(懒懒懒懒), 修改的话直接在样式里修改省去一个一个修改一样的代码 1 在values/styles.xml ...
- Linux 基础入门 第二周9.21~9.27
一.学习内容 本周主要学习内容主要贴合: 在进行<深入理解计算机系统>这门课的实验中没有遇到什么大问题,学习内容与上周实验<linux基础入门>有相似之处.本实验中的内容比较贴 ...
- 20145215《Java程序设计》第5周学习总结
20145215<Java程序设计>第五周学习总结 教材学习内容总结 异常处理 语法与继承架构 异常就是程序在运行时出现不正常情况,异常的由来是因为Java把出现的问题封装成了对象,换句话 ...
- 秒杀9种排序算法(JavaScript版)
一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...
- brew-cask之本地安装应用
cask 固然好用,但是无奈很多资源在墙外,能下载的非常有限,就是能下载,也慢的要死.但是很多下载软件却可以下载这些资源,很奇怪,要么是有人FQ下载了,缓存到他们的服务器了,要么就是软件可以FQ下载. ...