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. 安装zookeeper 和 kafka

    本文用到的同步脚本   https://www.cnblogs.com/sdgtxuyong/p/16907986.html 一 . 安装zookeeper 修改hosts文件,将test1,test ...

  2. 从FGUI中取一张图片并返回一个Sprite

    从Fgui中的图集中取一个图素,把图素用到场景等非UI的地方. 此操作会动态创建一个Sprite对象,效率不好,不适合大量使用. private static Dictionary<string ...

  3. jmeter-时间处理

    ${__time(,)} 1486091280955 //无格式化参数,返回当前毫秒时间,默认13位.一般用来做时间戳 ${__time(/1000,)} //为取10位的时间戳的函数表达式(时间精确 ...

  4. 【转】BIO,NIO和AIO

    本文转自:https://blog.csdn.net/qxy_1218/article/details/123941039 BIO,NIO和AIO是Java网络编程的三种模型 BIO:同步并阻塞,服务 ...

  5. Docker宿主机agetty进程cpu占用率100% 问题

    参考  https://blog.51cto.com/u_15450131/4751959 systemctl stop getty@tty1.service systemctl mask getty ...

  6. maven 引入了jar包,但却不能使用jar包里类

    无报错,但是就是 无法 使用 lombok 的类. 发现classpath 里面也的确没有lombok jar包. 最后把json 的 version 属性加上 就正常了. 所以 结论: 不加vers ...

  7. js中常用的运算符

    1. ?. 链接运算符 特性: 一旦遇到空置就会终止 例子: let name = obj?.name persion.getTip?.() // 没有getTip 方法则不会执行 2. ?? 空值合 ...

  8. 华三防火墙主备ACL

    dis cur | in policy 查看 policy-based-route 有线网络 permit node 5 policy-based-route 有线网络 permit node 10 ...

  9. Uncaught ReferenceError: Vue is not defined(之二)

    背景最近开发的一个项目,前段时间开发过程中还好好的,最近一次打包部署后,浏览器访问一直是打不开: 打开控制台,看到的一个报错如下: 作为一个前端不太熟练的后端研发,我在网上根据关键字:Vue is n ...

  10. 当FTP不能满足大文件、海量文件传输时,有没有好的替代方案?

    很多企业存在大文件.海量文件的传输需求,如涉及到图像数据采集和回传.海量用户数据收集和同步等业务,一般情况,企业还是会采用传统的FTP传输,或者以此为基础,使用脚本或结合其他办公工具来解决传输需求. ...