[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/ 总时间限制: ...
随机推荐
- 测试杂感:Bug Bash
缺陷大扫除(Bug Bash)是一项短期的全员测试活动.在微软,许多开发团队会在里程碑(milestone)的末期执行缺陷大扫除.程序员.测试员.程序经理.内部用户.市场人员在1~3天的时间窗口中,运 ...
- iOS宏定义
1.__OBJC__宏定义作用 在.pch 文件中一般都会自动加上这句宏定义,表示宏内引用的文件确保只被使用Objective-C语言的文件所引用,保证引用关系的清晰.因为在一个OC工程中,可能包含. ...
- 转载:有关SQL server connection KeepAlive 的FAQ
转:http://blogs.msdn.com/b/apgcdsd/archive/2011/05/03/sql-server-connection-keepalive-faq.aspx 1.什么是S ...
- Integrating JAD decompiler into JDeveloper(转)
原文地址:Integrating JAD decompiler into JDeveloper In JDeveloper, when debugging or otherwise navigatin ...
- 20145215《Java程序设计》第10周学习总结
20145215<Java程序设计>第十周学习总结 教材学习内容总结 网络编程 网络概述 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定 ...
- Java并发编程-CAS
CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术.简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替 ...
- css为什么要用悬浮
如果这个100px的宽度是一个Img,横内元素.右边也是横内元素的话和块级元素是不同的. 2.文字环绕图片. div下有个img然后有个span标签 img最好悬浮,悬浮虽然说脱离文档,但是还是占空间 ...
- SpringMVC使用中遇到的问题总结
使用的IDE工具是MyEclipse2014, spring版本为3.1.1 在使用Spring MVC时需要修改web.xml配置文件,web.xml默认放在WEB-INF目录下. 1.web.xm ...
- linq入门系列导航
写在前面 为什么突然想起来学学linq呢?还是源于在跟一个同事聊天的时候,说到他们正在弄得一个项目,在里面用到了linq to sql.突然想到距上次使用linq to sql是三年前的事情了.下班回 ...
- (转载)Go语言开发环境配置
一.我为什么要学习go语言 当今已经是移动和云计算时代,Go出现在了工业向云计算转型的时刻,简单.高效.内 置并发原语和现代的标准库让Go语言尤其适合云端软件开发(毕竟它就是为此而设计的).到2014 ...