[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 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
随机推荐
- Web前端攻防,一不小心就中招了
随着各浏览器安全功能的提高,前端防御面临的问题也没有之前那么复杂,但浏览器的防御措施并不能百分百的保证网站的安全. 浏览器的XSS Auditor,使得反射型xss几乎被废:CSP(Content-S ...
- 移除sql数据所有链接用户
use master; go declare @temp nvarchar(20) declare myCurse cursor for select spid from sy ...
- vijos 1772 巧妙填数
描述 将1,2,\cdots,91,2,⋯,9共99个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:31:2:3的比例. 试求出所有满足条件的三个三位数.例如:三个三位数192,384, ...
- Linux OpenGL 实践篇-11-shadow
OpenGL 阴影 在三维场景中,为了使场景看起来更加的真实,通常需要为其添加阴影,OpenGL可以使用很多种技术实现阴影,其中有一种非常经典的实现是使用一种叫阴影贴图的实现,在本节中我们将使用阴影贴 ...
- finger - 用户信息查找程序
总览 finger [-lmsp ] [user ... ] [user@host ... ] 描述 The finger 显示关于系统用户的信息 参数: -s Finger 显示用户的登录名, 真名 ...
- dumpkeys - 转储显示键盘翻译表
总览 (SYNOPSIS) dumpkeys [ -hilfn1 -Sshape -ccharset --help --short-info --long-info --numeric --full- ...
- 将自己的数据制作成voc格式
VOCdevkit2007文件下只保存VOC2007,VOC2007下只保存Annotations ImageSets JPEGImages. JPEGImages存放所有的图片数据(即训练测试验证的 ...
- QT+信号有参数与无参数的实现+QT4和QT5在信号和槽使用上的区别
在QT5中,信号有参数和无参数 #ifndef SUBWIDGET_H #define SUBWIDGET_H #include <QWidget> #include <QPushB ...
- PHP22 PHP在线支付
易宝支付示例脚本 参考网址:https://blog.csdn.net/yerenyuan_pku/article/details/52239862 参数说明 p1_MerId:商户编号,网站在易宝上 ...
- C++ new delete(一)
在C#.Java這種managed語言,因為有garbage collection,所以完全不用考慮free()或delete,但在C/C++,有時候要delete的,有時又不用,到底哪些改delet ...