T2  统计单词数

也是一道经典题

字符串匹配

#include<iostream>
#include<cstdio>
#include<map>
#include<vector>
#include<cstring>
using namespace std;
string a;
string jus;
int main(){
getline(cin,a);
getline(cin,jus);
//含有空格的字符串输入
int lenw=a.length();
int lena=jus.length();
for(int i=0;i<lenw;i++) {
if(a[i]>='a'&&a[i]<='z') a[i]-=32;
}
for(int j=0;j<lena;j++) {
if(jus[j]>='a'&&jus[j]<='z') jus[j]-=32;
}
int sum=0,pos=-1;
for(int i=0;i<=lena-lenw;i++){ //注意上限
int j; //呜呜呜呜要自闭了这个要写在外面,因为j在后面判断
for(j=0;j<lenw;++j){
if(a[j]!=jus[i+j]) break;
if(i>0&&jus[i-1]!=' ') break; //如果不是单词开头就结束
}
if(j==lenw&&(jus[i+j]==' '||i+j==lena)) { //!!!!!
sum++;
if(sum==1) pos=i ;
}
}
if(sum==0) cout<<"-1"<<endl;
else cout<<sum<<" "<<pos<<endl;
return 0;
}

  

T3  瑞士轮

归并排序的思想,(没想到吧)这些事基础要掌握的东西啊!!!
每打完一轮后,都要通过归并排序的思想再次确定一个顺序表(2*N)的,然后在顺序表中确定这一次的输赢结果,分别放在win,lose里面,然后再放在顺序表中

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<cstdio>
#include<queue>
#include<map>
#include<vector>
#include<set>
using namespace std;
const int maxn=200002;
const int INF=0x3fffffff;
//这道题用了归并排序的思想,排两个有序表,这两个有序表就是处理之后的输赢表
//处理好输赢表(根据能力)之后,需要再次排序(根据分数),也就是设置两个下标i,j,这样就是归并排序的思想,直接用sort的话会超时
struct node{
int fen; //分数
int rank;
int power; //能力
};
node win[maxn],lose[maxn],d[maxn];
int n,r,q;
bool cmp(node a,node b){
if(a.fen!=b.fen) return a.fen>b.fen;
else return a.rank<b.rank;
} void guibing(){
int i=0,j=0;
int index=-1;
//对有序的输赢表进行排序,用分数来排序
while(1){
if(i==n/2){
//把lose剩下的全部放进去
for(int k=j;k<i;k++){
index++;
d[index]=lose[k];
}
break;
}
else if(j==n/2){
//把win剩下的全部放进去
for(int k=i;k<j;k++){
index++;
d[index]=win[k];
}
break;
}
else{
if(win[i].fen<lose[j].fen||(win[i].fen==lose[j].fen&&win[i].rank>lose[j].rank)){
index++;
d[index]=lose[j];
j++;
}
else{
index++;
d[index]=win[i];
i++;
}
}
}
} int main(){
scanf("%d %d %d",&n,&r,&q);
n*=2;
for(int i=0;i<n;i++){
scanf("%d",&d[i].fen);
d[i].rank=i;
}
for(int i=0;i<n;i++) scanf("%d",&d[i].power);
sort(d,d+n,cmp);
for(int j=0;j<r;j++){
for(int i=0;i<n;i+=2){
int t1=d[i].power,t2=d[i+1].power,t3=i/2;
if(t1>t2){
win[t3]=d[i];
lose[t3]=d[i+1];
win[t3].fen++;
}
else{
win[t3]=d[i+1];
lose[t3]=d[i];
win[t3].fen++;
}
}
guibing(); // cout<<endl;
}
printf("%d\n",d[q-1].rank+1); return 0;
}

  

T4  表达式的值

是一道没有头绪的题目

通过保存计算结果(上一步的)

首先这道题目,我们要先搞清楚我们如何从前往后退出答案。可以肯定的是,在出现某个特定符号的时候,我们要知道如何从已知答案中推出之后的答案。这其实就是一个用公式递推的过程。每一步计算下一步答案为0或1的方法数:设两个步骤的运算结果经过每个符号到一个结果时,第一个运算结果算出0的方案数为t1,1的方案数为t2。第二个算出0的方案数为t3,算出1的方案数为t4,则有: 当符号是“⊕”时,得到0的方案数为t1*t3,1的方案数:t1*t4+t2*t3+t2*t4 当符号是“×”时,得到0的方案数为t1*t3+t1*t4+t2*t3,1的方案数:t2*t4 用一个栈记录下来即可。

然后按以下方法计算:

  1. 如果是左括号,就直接进栈;
  2. 如果是右括号,就一直弹栈并加以计算,直到弹到左括号;
  3. 如果是运算符,则弹栈,直到这个运算符的优先级大于符号栈栈顶的符号的优先级 或是左括号或栈空,然后将运算符进栈; 最后再将栈中残余的符号和结果一直弹到只剩一个结果,这个就是最后的结果。
#include <bits/stdc++.h>
const int M=10007,N=100005;
int n, u[N], v[N], top, k;
char c[N], S[N], ans[2*N];
int main()
{
scanf("%d",&n);
scanf("%s",c);
ans[++k]='.';
for(int i = 0; c[i]; i++)
{
if(c[i] == '(' || c[i] == '*')
S[++top] = c[i];
if(c[i] == '+')
{
while(S[top] == '*')
ans[++k] = S[top--];
S[++top] = c[i];
}
if(c[i] == ')')
{
while(S[top] != '(')
ans[++k] = S[top--];
top--;
}
if(c[i] != '(' && c[i] != ')')
ans[++k]='.';
}
while(top > 0)
ans[++k] = S[top--];
for(int i = 1; i <= k; i++)
{
if(ans[i] == '.')
{
u[++top] = 1;
v[top] = 1;
}
if(ans[i] == '*')
{
top--;
u[top] = (u[top+1]*v[top]+u[top]*v[top+1]+u[top]*u[top+1])%M;
v[top] = v[top]*v[top+1]%M;
}
if(ans[i] == '+')
{
top--;
v[top] = (u[top+1]*v[top]+u[top]*v[top+1]+v[top]*v[top+1])%M;
u[top] = u[top]*u[top+1]%M;
}
}
printf("%d",u[1]);
return 0;
}

  

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] 普及组

    数字反转 小模拟 #include<cstdio> #include<iostream> #include<cstring> using namespace std ...

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

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

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

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

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

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

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

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

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

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

  10. NOIP2011普及组 瑞士轮

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

随机推荐

  1. 使用centos8.5配置一台YUM源服务器

    公司的生产环境部署的Centos8.5, 现在已经EOL了, 为了给生产和测试机继续提供yum/dnf服务, 特意在公司的内部机房部署了一套本地yum源. 环境:centos 8.5 1. 下载镜像 ...

  2. (K8s学习笔记五)Pod的使用详解

    1.Pod用法 K8s里使用的容器不能使用启动命令是后台执行程序,如:nohup ./start.sh &,该脚本运行完成后kubelet会认为该Pod执行结束,将立刻销毁该Pod,如果该Po ...

  3. Idea报错:Command line is too long.

    https://blog.csdn.net/qq_40682764/article/details/109215368 run–>edit configurations–>你的项目–> ...

  4. java的知识点

    java 知识点 1.包装类自带有parse方法 Integer i = 315; int i1 = Integer.parseInt("315"); System.out.pri ...

  5. 封装python代码,避免被轻易反编译

    可使用Cython对python代码进行封装,封装成.pyd库,大致流程可参考: cython打包py成pyd,pyinstaller打包uvicorn服务过程记录_Bolly_He的博客-CSDN博 ...

  6. Vue 局部过滤器和全局过滤器

    Vue 过滤器总结: 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理) 语法: 1.注册过滤器: Vue.filter(name,callback) 或 new Vue{filt ...

  7. Kettle初使用

    Kettle的使用还是比较简单,但使用过程中会遇到一些问题: 1.mysql8以上版本连接数据库的时候汇报如下错误: 解决方法:参考链接:https://www.cnblogs.com/wuzaipe ...

  8. Python 获取IP地址

    import socket def get_host_ip(): """ 查询本机ip地址 :return: """ try: s=sock ...

  9. beforeRouteLeave vue监听返回的使用方法

    beforeRouteLeave(to, from, next) { console.log(this, to, from, next, "thissss"); if (to.fu ...

  10. 部署及配置Mycat数据库中间件

    Mycat关键特性关键特性支持SQL92标准支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用 ...