getchar

某种密码

落爺英雄遲暮 提交于 2020-04-03 22:04:08
时限1s 空间限制256M 题目描述 关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY。若 K E Y = ∑ 〖 A i ∗ B i 〗 ,则密文就是原文的一组合法密码。 现在有原文和钥匙码,请编一个程序来帮助他统计到底有多少个符合条件的密文。 输入文件 第一行两个数N,KEY,意义同题目描述; 第二行N个数表示原文A,意义同题目描述。 输出数据 一个数ANS,表示对于原文A和KEY,有多少组可行的密文B。 输入样例 3 2 1 1 2 输出样例 2 样例说明 密文 110 , 1 ∗ 1 + 1 ∗ 1 + 0 ∗ 2 = 2 密文 001 , 0 ∗ 1 + 0 ∗ 1 + 1 ∗ 2 = 2 一共两组可行的密文。 题解: 其实有点像双向搜索,因为2^40必定TLE,就不如这般搜索一下 (味道更好 我们先处理前一半的加和的情况,在处理后一半加和的情况,如果两个加起来是key的话计算时一种情况了 保存加和情况的最好用hash表 (但是本宝宝实在是太弱了,就用map了 差不多就是这样的。。emm #include <bits/stdc++.h> #include <map> using namespace std; typedef long long ll; inline ll read() { ll

Codeforces Round #570 Div. 3

筅森魡賤 提交于 2020-04-02 21:46:39
  A:暴力从小到大枚举判断。 #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;} int gcd(int n,int m){return m==0?n:gcd(m,n%m);} int read() { int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f; } signed main() { #ifndef ONLINE_JUDGE freopen("a.in","r",stdin); freopen("a.out","w",stdout); #endif int n=read(); for (int i=n;i<=n+10000;i++) { int s=0,x=i; while (x) s+

实验素材2

為{幸葍}努か 提交于 2020-04-01 22:37:20
实验21 1 #include<stdio.h> 2 3 int main() 4 5 { 6 7 char c1,c2,c3,c4,c5; 8 9 c1=getchar(); 10 11 c2=getchar(); 12 13 c3=getchar(); 14 15 c4=getchar(); 16 17 c5=getchar(); 18 19 putchar(c1); 20 21 putchar(c2); 22 23 putchar(c3); 24 25 putchar(c4); 26 27 putchar(c5); 28 29 return 0; 30 31 } 实验22 1 #include<stdio.h> 2 int main() 3 { 4 int year; 5 printf("input the year:"); 6 scanf("%d",&year); 7 if(year%4==0&&year%100!=0||year%400==0) 8 { 9 printf("year:%d,mouth:2,days:29",year); 10 } else { 11 printf("year:%d,mouth:2,days:28",year); 12 } 13 return 0; 14 } 实验23 1 #include<stdio.h> 2 int main() 3 {

[kuangbin带你飞]专题七 线段树

拟墨画扇 提交于 2020-03-30 12:01:58
https://vjudge.net/contest/66989 A、 敌兵布阵 单点修改、区间查询、维护区间和 1 //CSDN:https://blog.csdn.net/qq_40889820 2 #include<iostream> 3 #include<sstream> 4 #include<fstream> 5 #include<algorithm> 6 #include<cstring> 7 #include<iomanip> 8 #include<cstdlib> 9 #include<cctype> 10 #include<vector> 11 #include<string> 12 #include<cmath> 13 #include<ctime> 14 #include<stack> 15 #include<queue> 16 #include<map> 17 #include<set> 18 #define mem(a,b) memset(a,b,sizeof(a)) 19 #define random(a,b) (rand()%(b-a+1)+a) 20 #define ll long long 21 #define ull unsigned long long 22 #define e 2.71828182 23 #define Pi acos(-1

UCF Local Programming Contest 2016 J题(二分+bfs)

ぐ巨炮叔叔 提交于 2020-03-29 18:03:22
题目链接如下: https://nanti.jisuanke.com/t/43321 思路: 显然我们要采用二分的方法来寻找答案,给定一个高度如果能确定在这个高度时是否可以安全到达终点,那我们就可以很快二分出最大可行的高度。在判断一个高度是否可行时,搜索从起点开始,在限制的高度下所有可以到达的坐标位置,检验是否经过终点即可。 /************************************************ ┆ ┏┓   ┏┓ ┆ ┆┏┛┻━━━┛┻┓ ┆ ┆┃       ┃ ┆ ┆┃   ━   ┃ ┆ ┆┃ ┳┛ ┗┳ ┃ ┆ ┆┃       ┃ ┆ ┆┃   ┻   ┃ ┆ ┆┗━┓   ┏━┛ ┆ ┆  ┃   ┃  ┆       ┆  ┃   ┗━━━┓ ┆ ┆  ┃  AC代马   ┣┓┆ ┆  ┃    ┏┛┆ ┆  ┗┓┓┏━┳┓┏┛ ┆ ┆   ┃┫┫ ┃┫┫ ┆ ┆   ┗┻┛ ┗┻┛ ┆ ************************************************ */ #include <iostream> #include <algorithm> #include <set> #include <vector> #include <queue> #include <string> #include <sstream

HDU 6494 球赛 [dp]

纵饮孤独 提交于 2020-03-29 13:31:09
身体是革命的本钱,这道题是关于运动的。 Alice和Bob在进行乒乓球比赛,比赛一共打了 n 个球,对于每一球,如果Alice赢了,那么裁判员会在计分板上记下'A',如果Bob赢了则会记下'B'。 时间转眼间到了2050年,计分板上某些信息因为时间流逝丢失了,但我们想要复现当年的激烈局面。 丢失的位置用'?'表示,我们想知道,计分板上对应的乒乓球球赛,最多进行了多少局(最后一局可以没打完,但是如果没打完的话就不计入答案)? 在一局比赛中,先得11分的一方为胜方,10平后,先多得2分的一方为胜方。 第一行一个整数 T (1≤T≤51) 表示数据组数。 接下来 T 组数据,每行一个字符串表示计分板上记录的信息,计分板上只包含'A','B','?'这些字符,计分板长度 n≤10000。 \(dp_{i,j,k}\) 表示当前弄到第 \(i\) 个位置有 \(j:k\) 最大的局数。 // powered by c++11 // by Isaunoya #pragma GCC diagnostic error "-std=c++11" #include <bits/stdc++.h> #define rep(i, x, y) for (register int i = (x); i <= (y); ++i) #define Rep(i, x, y) for (register int i

单向链表实例:终端交互简易通讯录

狂风中的少年 提交于 2020-03-24 01:21:05
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 6 typedef struct Contacts_infomation{ 7 char name[13]; 8 char work_unit[61]; 9 char phone_number[12]; 10 char E_mail[61]; 11 struct Contacts_infomation *next; 12 }con_info; 13 14 15 con_info * Creat_node(void) 16 { 17 con_info *new; 18 19 new = (con_info *)malloc(sizeof(con_info)); 20 if(!new){ 21 printf("Malloc Error!\n"); 22 exit(-1); 23 } 24 new->next = NULL; 25 26 return new; 27 } 28 29 int insert_node(con_info ** phead) 30 { 31 con_info *new, *cur; 32 33 cur = *phead; 34 new = Creat_node(); 35 if(!new){ 36 return -1; 37

【luogu1472】 奶牛家谱 Cow Pedigrees [动态规划]

可紊 提交于 2020-03-23 21:30:30
一时暴搜一时爽 一直暴搜一直爽 cxl居然和我写的同款dfs,天呢 菜鸡开始对这题并没有什么想法 状态方程死活想不出来 还是暴搜好 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 #define rg register 5 const int N=200,K=100,P=9901; 6 int n,k,f[K+5][N+5],ans=0; 7 template <class t>void rd(t &x) 8 { 9 x=0;int w=0;char ch=0; 10 while(!isdigit(ch)) w|=ch=='-',ch=getchar(); 11 while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); 12 x=w?-x:x; 13 } 14 15 void dfs(int deep,int l,int r) 16 { 17 if(deep==k&&(l+r+1)==n) {++ans;ans%=P;return;} 18 if((l+r+1>=(1<<deep))||deep>k) return; 19 dfs(deep+1,l,r+2);dfs(deep+1,l+2,r); 20 dfs(deep,l+2

[Codeforces]Codeforces Global Round 1

不羁的心 提交于 2020-03-22 02:48:11
A - Parity 题意 给定一个$b$进制数,要求输出它在十进制下是奇数还是偶数。 分析 花了我略多的时间,首先题目中给的数字范围很大,不能直接转化为10进制。 分析性质,发现只有奇数乘奇数还是奇数,其他都是偶数。 对奇数进制和偶数进制分类讨论。 偶数进制看最低位的奇偶性,如果是奇数那么这个数就是奇数,不然是偶数。 奇数进制看每一位上奇数的个数,如果是奇数个奇数就是奇数,不然是偶数。 代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+1009; 4 int read(){ 5 char c;int num,f=1; 6 while(c=getchar(),!isdigit(c))if(c=='-')f=-1;num=c-'0'; 7 while(c=getchar(), isdigit(c))num=num*10+c-'0'; 8 return f*num; 9 } 10 int n,Base,v[N]; 11 bool f1,f2; 12 int main() 13 { 14 Base=read();n=read(); 15 for(int i=n-1;i>=0;i--)v[i]=read(); 16 f1=Base&1;f2=0; 17 if(!f1){ 18 f2=v[0]&1;

CSP2019QwQ

試著忘記壹切 提交于 2020-03-21 10:52:10
咕咕咕~~~ 话说这篇咕了好久到现在才开始写(暂时还是不会 \(day1T3\) ,先欠着),后来到改才发现其实 CSP2019不是很难? 先码题解 \(day1T1\) 傻逼题,不解释 ,确实对得起黄题的难度,这里思路是随便用个递归搞掉 \(1A\) 过算了 当然还可以用循环? ,复杂度 \(O(logk)\) ? 代码: #include<bits/stdc++.h> using namespace std; #define ll unsigned long long inline void read(ll &x) { x=0;char ch=getchar(); for(;!isalnum(ch);ch=getchar()); for(;isalnum(ch);ch=getchar()) x=x*10+ch-'0'; } ll fac[64]; inline void sol(ll n,ll k) { if(n==1) { cout<<k?1:0; return; } if(k>=fac[n-1]) { cout<<1; sol(n-1,fac[n-1]-k+fac[n-1]-1); } else { cout<<0; sol(n-1,k); } } int main() { ll n,k;read(n);read(k); fac[0]=1; for(register int