B. 密码学

题意:

告诉你关于字符串加密的方法,然后给你一些加密操作和加密后的字符串,让你求原来的串

思路:

知道被加密后的串与加密字符可以向前推出被加密之前的串,不断向前模拟即可

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=;
char s[maxn][];
int b[maxn][];
struct node{
int x,y;
}a[maxn];
int n,m,len[maxn],tem[];
void repair(int x,int y) {
for(int i=;i<len[y];i++) tem[i]=b[x][(i%len[x])];
for(int i=;i<len[y];i++) b[y][i] = (b[y][i]-tem[i]+) % ;
} int main() {
cin>>n>>m;
for(int i=m;i>=;i--) cin>>a[i].x>>a[i].y;
for(int i=;i<=n;i++){
cin>>s[i];
len[i]=strlen(s[i]);
}
for(int i=;i<=n;i++){
for(int j=;j<len[i];j++){
if(s[i][j]>='a'&&s[i][j]<='z')
b[i][j]=s[i][j]-'a';
else if(s[i][j]>='A'&&s[i][j]<='Z')
b[i][j]=s[i][j]-'A'+;
}
}
for(int i=;i<=m;i++)repair(a[i].x,a[i].y);
for(int i=;i<=n;i++){
for(int j=;j<len[i];j++){
if(b[i][j]>=&&b[i][j]<=)
s[i][j]=b[i][j]+'a';
else if(b[i][j]>=&&b[i][j]<=)
s[i][j]=(b[i][j]-)+'A';
}
}
for(int i=;i<=n;i++)
cout<<s[i]<<endl;
return ;
}

H. 最大公约数

思路:

从k开始累乘k的倍数并且为素数的数

记得要用大数!!没发现爆了WA了好几发

#include<bits/stdc++.h>
using namespace std; int t,n,k;
string ans,str;
void initial(string &a, string &b){
while (a.size()<b.size())a = '' + a;
while (b.size()<a.size())b = '' + b;
}
//打印
void print(string &a, string &b){
cout << a << endl;
cout << b << endl;
}
//找出最大的字符串
void findMax(string &a, string &b){
string tmp;
if (a<b){
tmp = b;
b = a;
a = tmp;
}
}
//删除第一个字符'0'
bool del(string &a){
if (a[] == ''){
a.erase(, );
return true;
}
else
return false;
}
//删除前面所有的 0
void delAllZroe(string &a){
while (del(a)){
del(a);
};
}
//大数加法
string bigItergeAdd(string a, string b){
initial(a, b);
a = '' + a;
b = '' + b;
for (int i = a.size() - ; i >= ; i--){
int num1 = a[i] - '';
int num2 = b[i] - '';
if (num1 + num2>){
a[i - ] = a[i - ] - '' + + '';
a[i] = (num1 + num2) - + '';
}
else{
a[i] = (num1 + num2) + '';
}
}
del(a);
// cout<<a<<endl;
return a;
}
//大数减法
string bigItergeSub(string a, string b){
initial(a, b);
findMax(a, b);
for (int i = a.size() - ; i >= ; i--){
int num1 = a[i] - '';
int num2 = b[i] - '';
if (num1<num2){
a[i - ] = a[i - ] - '' - + '';
a[i] = (num1 + - num2) + '';
}
else{
a[i] = (num1 - num2) + '';
}
}
del(a);
// cout<<a<<endl;
return a;
}
//大数乘法(大数加法实现)
string bigItergeMul(string a, string b){
delAllZroe(a);
delAllZroe(b);
initial(a, b);
findMax(a, b);
string res = "";
int count = ;
delAllZroe(b);
for (int i = b.size() - ; i >= ; i--){
int num1 = b[i] - '';
if (i != b.size() - ) a = a + '';
for (int i = ; i <= num1; i++){
res = bigItergeAdd(res, a);
}
}
delAllZroe(res);
return res;
} bool prime(int x)
{
for(int i=;i<=sqrt(x);i++)
{
if(x%i==) return false;
}
return true;
}
int main()
{
cin>>t;
while(t--)
{
cin>>n>>k;
int temp=k;
ans="";
while(temp)
{
ans+=temp%+'';
temp/=;
}
reverse(ans.begin(),ans.end());
for(int i=;i*k<=n;i++)
{
if(prime(i))
{
str="";
temp=i;
while(temp)
{
str+=temp%+'';
temp/=;
}
// cout<<str<<endl;
reverse(str.begin(),str.end());
ans=bigItergeMul(ans,str);
}
} cout<<ans<<endl;
}
}

F. 乘法

题意:

给你一个由两个数组a,b相乘构成的矩阵C,求矩阵中第K大的数

思路:

先将b数组排序,之后在从-1e12到1e12中二分答案,特别要注意a数组中小于0时在b数组中二分的情况,与a元素等于0时的情况

#include<iostream>
#include<algorithm>
#include<cstdio>
const int maxn=1e5+;
using namespace std;
typedef long long ll;
ll a[maxn],b[maxn];
int n,m;
ll ans,k;
ll find(ll temp,ll x)
{
int l=,r=m,mid,ret;
if(x>){
ret=m+;
while(l<=r){
mid=(l+r)>>;
if(b[mid]*x>=temp) r=(ret=mid)-;
else l=mid+;
}
return m-ret+;
}
else if(x<){
ret=;
while(l<=r){
mid=(l+r)>>;
if(b[mid]*x>=temp) l=(ret=mid)+;
else r=mid+;
}
return ret;
}
}
ll judge(ll mid)
{
ll cnt=;
for(int i=;i<=n;i++){
if(a[i]==)
cnt+=(>=mid)*m;
else
cnt+=find(mid,a[i]);
}
return cnt;
}
int main()
{
scanf("%d%d%lld",&n,&m,&k);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
for(int i=;i<=m;i++) scanf("%d",&b[i]);
sort(b+,b++m);
ll l=-1e12,r=1e12;
while(l<=r){
ll mid=(l+r)/;
if(judge(mid)>=k) l=(ans=mid)+;
else r=mid-;
}
cout<<ans<<endl;
}

CCPC-Wannafly Winter Camp Day 1的更多相关文章

  1. 2020 CCPC Wannafly Winter Camp Day1 C. 染色图

    2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...

  2. CCPC Wannafly Winter Camp Div2 部分题解

    Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果, ...

  3. 2020 CCPC Wannafly Winter Camp Day1 Div.1&amp F

    #include<bits/stdc++.h> #define forn(i, n) for (int i = 0; i < int(n); i++) #define fore(i, ...

  4. 2020 CCPC Wannafly Winter Camp Day1 - I. K小数查询(分块)

    题目链接:K小数查询 题意:给你一个长度为$n$序列$A$,有$m$个操作,操作分为两种: 输入$x,y,c$,表示对$i\in[x,y] $,令$A_{i}=min(A_{i},c)$ 输入$x,y ...

  5. 2020 CCPC Wannafly Winter Camp Day2-K-破忒头的匿名信

    题目传送门 sol:先通过AC自动机构建字典,用$dp[i]$表示长串前$i$位的最小代价,若有一个单词$s$是长串的前$i$项的后缀,那么可以用$dp[i - len(s)] + val(s)$转移 ...

  6. 2020 CCPC Wannafly Winter Camp Day1-F-乘法

    题目传送门 sol:二分答案$K$,算大于$K$的乘积有多少个.关键在于怎么算这个个数,官方题解上给出的复杂度是$O(nlogn)$,那么计算个数的复杂度是$O(n)$的.感觉写着有点困难,自己写了一 ...

  7. 2019 wannafly winter camp day 3

    2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...

  8. 2019 wannafly winter camp

    2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O ...

  9. Wannafly Winter Camp 2019.Day 8 div1 I.岸边露伴的人生经验(FWT)

    题目链接 \(Description\) 给定\(n\)个十维向量\(\overrightarrow{V_i}=x_1,x_2,...,x_{10}\).定义\(\overrightarrow{V}= ...

  10. Wannafly Winter Camp 2019.Day 8 div1 E.Souls-like Game(线段树 矩阵快速幂)

    题目链接 \(998244353\)写成\(99824435\)然后调这个线段树模板1.5h= = 以后要注意常量啊啊啊 \(Description\) 每个位置有一个\(3\times3\)的矩阵, ...

随机推荐

  1. 11-28-----vertor和list使用场景

    1.vector拥有一段连续的内存空间,因此支持随机访问,如果需要高效的随机访问,而不子啊胡插入和删除的效率,使用vector, 2.list拥有一段不连续的内存空间,如果需要高效的插入和删除,而不关 ...

  2. 如何更优雅地对接第三方API

    本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程 ...

  3. Linux使用expect和rsync实现密码自动输入无人值守自动同步备份

    我们常用sudo,ssh.ftp命令操作服务器或者修改权限的时候都会要求输入password,但是shell脚本运行中该如何交互实现自动输入密码呢? 下面总结三种实现方法. 一.重定向:用重定向方法实 ...

  4. 0016 CSS 背景:background

    目标 理解 背景的作用 css背景图片和插入图片的区别 应用 通过css背景属性,给页面元素添加背景样式 能设置不同的背景图片位置 [插入图片,不用设置img元素的父元素.自身元素大小,即可见,但是背 ...

  5. java引用类型的浅拷贝与深拷贝理解

    1.浅拷贝 只会复制地址值,也就是同一个对象两个引用,只是复制了一个引用而已. 2.深拷贝 重新在堆里创建一个新对象给新引用,连同地址值也不一样. 首先要知道Object的clone()方法, pub ...

  6. 20行Python代码爬取王者荣耀全英雄皮肤

    引言王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. 准备工作 ...

  7. [02]java数据类型和运算符等知识

    00 Java中的注释 为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释.注释不会出现在字节码文件中,即Java编译器编译时会跳 ...

  8. Kafka原理及应用(一)

    一. Kafka简介 (1) 消息中间件的两种实现模式 JMS (Java Message Service) 对消息的发送和接收定义了两种模式: 点对点模式:消息的生产和消费者均只有一个,消息由生产者 ...

  9. 「洛谷P3931」 SAC E#1 - 一道难题 Tree

    P3931 SAC E#1 - 一道难题 Tree 题目背景 冴月麟和魏潇承是好朋友. 题目描述 冴月麟为了守护幻想乡,而制造了幻想乡的倒影,将真实的幻想乡封印了.任何人都无法进入真实的幻想乡了,但是 ...

  10. 「2018-12-02模拟赛」T2 种树 解题报告

    2.种树(tree.pas/cpp/in/out) 问题描述: Fanvree 很聪明,解决难题时他总会把问题简单化. 例如,他就整天喜欢把图转化为树.但是他不会缩环,那他怎么转化呢? 这是一个有 n ...