[NOIP2003] 普及组
模拟
- /*By SilverN*/
- #include<iostream>
- #include<algorithm>
- #include<cstring>
- #include<cstdio>
- #include<cmath>
- using namespace std;
- const int mxn=;
- char s[];
- int a[mxn],b[mxn];//11分制胜负计数
- int c[mxn],d[mxn];//21分制计数
- int main(){
- bool flag=;
- int i,j;
- int r1=,r2=;//比赛局数
- while(scanf("%s",s)!=EOF && flag){
- int n=strlen(s);
- for(i=;i<n;i++){
- if(s[i]=='E'){
- flag=;
- break;
- }
- if(s[i]=='W'){
- a[r1]++;c[r2]++;
- if(a[r1]>= && a[r1]-b[r1]>=)r1++;
- if(c[r2]>= && c[r2]-d[r2]>=)r2++;
- }
- if(s[i]=='L'){
- b[r1]++;d[r2]++;
- if(b[r1]>= && b[r1]-a[r1]>=)r1++;
- if(d[r2]>= && d[r2]-c[r2]>=)r2++;
- }
- }
- }
- for(i=;i<=r1;i++)printf("%d:%d\n",a[i],b[i]);
- cout<<endl;
- for(i=;i<r2;i++)printf("%d:%d\n",c[i],d[i]);
- printf("%d:%d",c[r2],d[r2]);
- return ;
- }
DP 枚举分组 f[k组][前i个]=最值
- /*By SilverN*/
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #include<cmath>
- using namespace std;
- int read(){
- int x=,f=;char ch=getchar();
- while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
- while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- int n,m;
- int a[];
- int smm[];
- int fmx[][];
- int fmi[][];
- int mxans=,minans=1e8;
- void dp(int b[]){
- memset(fmx,,sizeof fmx);
- memset(fmi,0x2f,sizeof fmi);
- int i,j;
- for(i=;i<=n;i++)smm[i]=smm[i-]+b[i];
- for(i=;i<=n;i++){
- fmx[i][]=fmi[i][]=(smm[i]%+)%;
- }
- fmi[][]=fmx[][]=;
- int k;
- for(k=;k<=m;k++){
- for(i=k;i<=n;i++){
- for(j=k-;j<i;j++){
- fmx[i][k]=max(fmx[i][k],fmx[j][k-]*(((smm[i]-smm[j])%+)%));
- fmi[i][k]=min(fmi[i][k],fmi[j][k-]*(((smm[i]-smm[j])%+)%));
- }
- }
- }
- mxans=max(mxans,fmx[n][m]);
- minans=min(minans,fmi[n][m]);
- return;
- }
- int main(){
- n=read();m=read();
- int i,j;
- for(i=;i<=n;i++){
- a[i]=read();
- a[n+i]=a[i];
- }
- for(i=;i<n;i++)dp(a+i);
- printf("%d\n%d\n",minans,mxans);
- return ;
- }
卡塔兰数
C(2*n,n)/(n+1)
- /*By SilverN*/
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #include<cmath>
- #include<string>
- using namespace std;
- int n;
- long long ans=;
- int main(){
- int i,j;
- scanf("%d",&n);
- int ed=n*;
- for(i=n+;i<=ed;i++){
- ans=ans*i/(i-n);
- }
- ans/=(n+);
- printf("%lld\n",ans);
- return ;
- }
位数直接计算:log(10,2^n)
数字用高精度乘法模拟
- #include<iostream>
- #include<cstring>
- #include<cmath>
- #include<cstdio>
- using namespace std;
- int la;
- int t=;
- unsigned int n=;//指数
- struct node{
- int v[];
- int s;
- }a,b,c;
- node multiple(const node a,const node b );
- void pbi(node &c,unsigned int n1)//底数 指数
- {
- if(n1==||n1==){
- c.s=;
- c.v[]=n1+;
- return;
- }
- pbi(c,n1/);
- c=multiple(c,c);
- if(n1%==){
- b.s=;
- b.v[]=;
- c=multiple(b,c);
- }
- }
- node multiple(const node a,const node b ){ //高精度乘法部分
- int i,j,x=;
- if(a.s==&&a.v[]==)return a;
- if(b.s==&&b.v[]==)return b;
- const int L=;
- node c1={};
- for(i=;i<L && i<a.s;i++){
- for(j=;j<L && j<b.s;j++){
- c1.v[i+j]+=a.v[i]*b.v[j];
- c1.v[i+j+]+=c1.v[i+j]/;
- c1.v[i+j]%=;
- }
- c1.s=i+j;
- if(c1.v[i+j]!=)c1.s++;
- }
- if(c1.s>) c1.s=;
- return c1;
- }
- int main(){
- int i;
- cin>>n;
- int p=ceil(n*log10());//位数
- printf("%d\n",p);
- pbi(c,n);
- c.v[]-=;
- if(c.s>) c.s=;
- for (int i=;i>=;i--)//mx
- {
- printf("%d",c.v[i]);
- if (i%==)//50位的倍数时回车
- cout<<endl;
- }
- return ;
- }
/*By SilverN*/#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>usingnamespacestd; int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int n,m; int a[120]; int smm[120]; int fmx[120][20]; int fmi[120][20]; int mxans=0,minans=1e8; void dp(int b[]){ memset(fmx,0,sizeof fmx); memset(fmi,0x2f,sizeof fmi); int i,j; for(i=1;i<=n;i++)smm[i]=smm[i-1]+b[i]; for(i=1;i<=n;i++){ fmx[i][1]=fmi[i][1]=(smm[i]%10+10)%10; } fmi[0][0]=fmx[0][0]=1; int k; for(k=2;k<=m;k++){ for(i=k;i<=n;i++){ for(j=k-1;j<i;j++){ fmx[i][k]=max(fmx[i][k],fmx[j][k-1]*(((smm[i]-smm[j])%10+10)%10)); fmi[i][k]=min(fmi[i][k],fmi[j][k-1]*(((smm[i]-smm[j])%10+10)%10)); } } } mxans=max(mxans,fmx[n][m]); minans=min(minans,fmi[n][m]); return; } int main(){ n=read();m=read(); int i,j; for(i=1;i<=n;i++){ a[i]=read(); a[n+i]=a[i]; } for(i=0;i<n;i++)dp(a+i); printf("%d\n%d\n",minans,mxans); return0; }
[NOIP2003] 普及组的更多相关文章
- 洛谷 P1045 & [NOIP2003普及组] 麦森数
题目链接 https://www.luogu.org/problemnew/show/P1045 题目大意 本题目的主要意思就是给定一个p,求2p-1的位数和后500位数. 解题思路 首先看一下数据范 ...
- [NOIP2003普及组]麦森数(快速幂+高精度)
[NOIP2003普及组]麦森数(快速幂+高精度) Description 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998 ...
- 【转】[NOIP2003普及组]麦森数
来源:http://vivid.name/tech/mason.html 不得不纪念一下这道题,因为我今天一整天的时间都花到这道题上了.因为这道题,我学会了快速幂,学会了高精度乘高精度,学会了静态查错 ...
- 【动态规划】Vijos P1218 数字游戏(NOIP2003普及组)
题目链接: https://vijos.org/p/1218 题目大意: 一个N个数的环,分成M块,块内的数求和%10,最后每块地值累乘,求最大和最小. n(1≤n≤50)和m(1≤m≤9)太小了可以 ...
- P1045 [NOIP2003 普及组] 麦森数
题目描述 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P−1不一定也是素数. 到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377, ...
- NOIP2003 普及组 洛谷P1045 麦森数 (快速幂+高精度)
有两个问题:求位数和求后500位的数. 求位数:最后减去1对答案的位数是不影响的,就是求2p的位数,直接有公式log10(2)*p+1; 求后500位的数:容易想到快速幂和高精度: 1 #includ ...
- NOIP2002-2017普及组题解
虽然普及组一般都是暴力省一,但是有一些题目还是挺难的qwq个人觉得能进TG的题目会在前面打上'*' NOIP2002(clear) #include<bits/stdc++.h> usin ...
- NOIP2012 普及组 T3 摆花——S.B.S.
题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...
- NOIP2016普及组复赛解题报告
提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...
随机推荐
- AJPFX关于JAVA多线程实现的三种方式
JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...
- tcpdump 使用详解——转载
http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 简介 用简单的话来定义tcpdump,就是:dump the traf ...
- 激活eclipse自动提示功能
eclipse设置: Window->Preferences->Java->Editor->Content Assist
- 基于jmeter和shell的接口性能自动化
基于jmeter和shell的接口性能自动化 1. 总体需求 由于性能测试中涉及的查询接口多,版本迭代频繁,版本更新后自动跑一轮查询业务的性能,可以及时发现一些开发修复bug触发的非预期的bug,利用 ...
- SEO 第六章
SEO第六章 本次课程目标: 1. 掌握网站的内链优化 2. 网站的URL优化 一. 网站地图 1. 什么是网站地图? 网站地图也叫站点地图,英文名叫sitemap,指的网站所有内 ...
- fork后子进程从哪里开始执行
子进程和父进程都从调用fork函数的下一条语句开始执行
- python基础一 day2
内容: 3%%s 输出:3%s 后面的全部转义 结果: 如果是因为执行break语句导致循环提前结束,就不会执行else. 单位换算: 编码方式: ascii unicode u ...
- input_shape { dim: 1 dim: 3 dim: 224 dim: 224 }
http://blog.csdn.net/u010417185/article/details/52619593
- 16.04 下修改 ssh 默认端口
打开/etc/ssh/ssh_config,在Port指令下追加新的端口设置: Port 8888 即允许通过端口 8888 进行 ssh 访问. 打开/etc/ssh/sshd_config,进行同 ...
- delphi并行压缩
real case test MM parallel 4x scalable (i7 6700)(on the newer processors will be linear) I did a sma ...