[NOIP2002] 普及组
预处理出一个数能变成多少种数,然后遍历原串的每一位,累乘方案数即可。
需要用到高精度。
/*By SilverN*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
char s[];
int ans[],len;
int num[];
int n;
int mp[][];
void mul(int x){
int i;
for(i=;i<=len;i++){ans[i]=ans[i]*x;}
for(i=;i<=len;i++){
if(ans[i]<)continue;
ans[i+]+=ans[i]/;
ans[i]%=;
}
while(ans[len]){
ans[len+]+=ans[len]/;
ans[len]%=;
len++;
}
return;
}
int main(){
scanf("%s",s);
int i,j;
scanf("%d",&n);
int u,v;
for(i=;i<=n;i++){
scanf("%d%d",&u,&v);
mp[u][v]=;
}
for(i=;i<=;i++)mp[i][i]=;
for(int l=;l<=;l++)
for(i=;i<=;i++)
for(j=;j<=;j++)
mp[i][j]|=(mp[i][l]&mp[l][j]);//floyd判一个数字能转换成什么数字
for(i=;i<=;i++){
int cnt=;
for(j=;j<=;j++)if(mp[i][j])cnt++;//累计方案数
num[i]=cnt;
// printf("%d\n",num[i]);
}
int sl=strlen(s);
ans[]=;len=;
for(i=;i<sl;i++) mul(num[s[i]-'']);//累乘方案数
for(i=len-;i;--i)printf("%d",ans[i]);
return ;
}
产生数
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct xs{
bool bo[];
int num[];
}x;
int sum=,k,n,coun=,ct=;
int pd(int p);
int search(int t,int pos){
for(int i=pos;i<=n;i++){
if(!x.bo[i]){
sum+=x.num[i];
x.bo[i]=;
if(t>=k){
if(pd(sum)==)coun++;
}
else search(t+,i+);
sum-=x.num[i];
x.bo[i]=;
}
}
} int pd(int p){
int i;
if(p==)return ;
for(i=;i<=p/;i++){
if(p%i==)return ;
}
return ;
}
int main(){
memset(x.bo,,sizeof(x.bo));
memset(x.num,,sizeof(x.num));
int i;
scanf("%d%d",&n,&k);
for(i=;i<=n;i++){
scanf("%d",&x.num[i]);
}
search(,);
printf("%d",coun);
return ;
}
选数
搜索各种组合方式,注意判重。
暴力模拟
/*By SilverN*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n;
double smm,k;
int main(){
cin>>k;
smm=;
n=;
while(n){
smm+=(double)/n;
if(smm>k)break;
n++;
}
cout<<n<<endl;
return ;
}
级数求和
暴力动规
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int mxn=;
bool mp[mxn][mxn];
long long f[mxn][mxn];
int x1,y1,x2,y2;
int main(){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
x1+=;x2+=;y1+=;y2+=;
f[][]=;
mp[x2][y2]=mp[x2-][y2-]=mp[x2+][y2-]=mp[x2-][y2+]=mp[x2+][y2+]=
mp[x2-][y2+]=mp[x2-][y2-]=mp[x2+][y2-]=mp[x2+][y2+]=;
for(int i=;i<=x1;i++)
for(int j=;j<=y1;j++){
if(mp[i][j])mp[i][j]=;
else f[i][j]=f[i-][j]+f[i][j-];
}
printf("%lld\n",f[x1][y1]);
return ;
}
过河卒
[NOIP2002] 普及组的更多相关文章
- NOIP2002普及组复赛B 选数
题目链接:https://ac.nowcoder.com/acm/contest/230/B 题目大意: 略 分析: DFS模板题. 代码如下: #include <bits/stdc++.h& ...
- noip2002 普及组 过河卒
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过 ...
- 题解 【洛谷P1035】[NOIP2002普及组]级数求和
[NOIP2002普及组]级数求和 这个题……用循环也是可以的,不过我写了两种循环的题解,供各位dalao参考!O(∩_∩)O谢谢! for循环版本: #include<bits/stdc++. ...
- C++算法代码——级数求和[NOIP2002 普及组]
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1078 或者:https://www.luogu.com.cn/problem/P10 ...
- 洛谷P1036 [NOIP2002 普及组] 选数 (搜索)
n个数中选取k个数,判断这k个数的和是否为质数. 在dfs函数中的状态有:选了几个数,选的数的和,上一个选的数的位置: 试除法判断素数即可: 1 #include<bits/stdc++.h&g ...
- 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 ...
- 05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
随机推荐
- CF983A Finite or not?
思路: 如果p,q不互质,先把q除以p,q的最大公约数.接下来只要b中包含了所有q的质因子就可以了.可以在gcd(q, b) 不等于1的时候不断地用q除以gcd(q, b).最后如果q等于1,说明Fi ...
- 【经验总结】VS2010下建立MFC程序
孙鑫的MFC教学视频非常不错,但是由于视频中孙鑫老师采用VC6.0版本,而现在 许多人都转向了使用VS,VS为我们生成了许多不需要的代码,这也导致在这节课的学习编程中总是遇到一些困难.那么,如何去掉这 ...
- HTTP协议 处理流程
我们平时在浏览网页的时候都是使用浏览器,输入你要的网址后回车,就会显示出我们所想要的内容,看似这个简单的用户操作行为的背后,Web的工作原理是怎样的呢?到底隐藏了些什么呢? 对于传统的上网流程,系统它 ...
- SQL Server2012 T-SQL对分页的增强尝试
简介 SQL Server 2012中在Order By子句之后新增了OFFSET和FETCH子句来限制输出的行数从而达到了分页效果.相比较SQL Server 2005/2008的ROW_Numbe ...
- MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB
Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作.Spring Boot的目的是提供一组工具,以便快速构建容易配置的Spring应用程序,省去大量传统S ...
- SQL数据库移植到ARM板步骤
SQL作为一种存储数据的数据结构,具有体积小(能堵存储的数据多),容易移植等优点.例如,在Ubuntu或者ARM开发板上被大量应用.下面就简单说一下SQL移植到ARM板的步骤. 下载源代码 (记得在家 ...
- fgetpos, fseek, fsetpos, ftell, rewind - 重定位某个流
总览 (SYNOPSIS) #include <stdio.h> int fseek(FILE *stream, long offset, int whence); long ftell( ...
- unnamed not found for the web module
intellij idea tomcat 启动报错not found for the web module 使用intellij idea 创建tomcat项目的时候会出现该错误: 启动tomcat的 ...
- java根据freeMark模板生成内容
根据ftl模板生成文件内容可以用来生成代码模板,如下所示: aa.ftl name : ${name} age : ${age} aa.java package mall_tools; import ...
- 制作SD更新系统时和用mfgtool工具烧录时,文件如何替换?
制作SD更新系统时和用mfgtool工具烧录时,文件如何替换? 答:制作SD更新系统时,请按照需求选择不同mfgimages-myd*文件夹.每个文件夹里面有一个Manifest文件, 里面规定了ub ...