[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 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
随机推荐
- Spring-bean(零)
内容提要:红为1,黄2,绿3 -----配置形式:基于xml文件的方式:基于注解的方式 -----Bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法&实例工厂方法),Facto ...
- 在js中怎样获得checkbox里选中的多个值?(jQuery)
思路:利用name属性值获取checkbox对象,然后循环判断checked属性(true表示被选中,false表示未选中).下面进行实例演示: 1.HTML结构 <input type=&qu ...
- Servlet 3.0 新特性详解 (转载)
原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性概述 Servlet 3.0 作为 Jav ...
- Angular和SAP C4C的事件处理队列
Angular 我们在Angular框架的代码里能看到一个名为processQueue的函数: 这个函数是通过$scope.$apply启动的: 核心代码位于一个for循环里,循环体是一个存储异步处理 ...
- Python 循环结构语句
1.for循环:计次循环 2.while循环:条件循环 3.嵌套循环 4.跳转语句 一.for循环的使用 1.进行数值循环 利用数值循环输出三次‘你好’: >>> for i in ...
- VBA Promming——入门教程
VBA Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言.主要能用来 ...
- DROP USER - 删除一个数据库用户帐号
SYNOPSIS DROP USER name DESCRIPTION 描述 DROP USER 从数据库中删除指定的用户. 它不删除数据库里此用户所有的表,视图或其他对象. 如果该用户拥有任何数据库 ...
- error C2143: 语法错误 : 缺少“;”(在“&”的前面)
报错: error C2143: 语法错误 : 缺少“;”(在“&”的前面) 代码: #include <iostream> ostream & << (ost ...
- 使用VS自带WCF测试客户端
打开VS自带WCF测试客户端 打开VS2015 开发人员命令提示 输入:wcftestclient,回车 提取wcftestclient 当然,可以看到VS2015 开发人员命令提示知道,当前路径在C ...
- 错误的语法:"create view必须是批处理中仅有的语句"
编写脚本提示: 错误的语法:"create view必须是批处理中仅有的语句" FROM sys.views WHERE name = 'v_CS_UserRoleNames' ) ...