csps模拟9495凉宫春日的忧郁,漫无止境的八月,简单计算,格式化,真相题解
题面:https://www.cnblogs.com/Juve/articles/11767239.html
94,95的T3都没改出来,是我太菜了。。。
凉宫春日的忧郁:
比较$x^y$和$y!$的大小,如果打高精会T掉
正解:把两个数取log,则$log_2x^y=ylog_2x$,$log_2y!=\sum\limits_{i=1}^{y}log_2i$
然后就A了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
int t,x,y;
signed main(){
freopen("yuuutsu.in","r",stdin);
freopen("yuuutsu.out","w",stdout);
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&x,&y);
long double xx=y*log2(x);
long double yy=0.0;
for(int i=;i<=y;++i){
yy+=log2(i);
}
if(xx<=yy) puts("Yes");
else puts("No");
}
return ;
}
漫无止境的八月:
如果满足的话必须保证所有%k同余的位置上的和一样,所以打个map就好了。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<unordered_map>
using namespace std;
const int MAXN=2e6+;
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){
if(ch=='-') f=-;
ch=getchar();
}
while(ch>=''&&ch<=''){
x=(x<<)+(x<<)+ch-'';
ch=getchar();
}
return x*f;
}
int n,k,q,a[MAXN],sum[MAXN];
unordered_map<int,int>mp;
signed main(){
freopen("august.in","r",stdin);
freopen("august.out","w",stdout);
n=read(),k=read(),q=read();
for(int i=;i<=n;++i){
a[i]=read();
sum[i%k]+=a[i];
}
for(int i=;i<k;++i) ++mp[sum[i%k]];
if(mp[sum[]]==k) puts("Yes");
else puts("No");
for(int i=;i<=q;++i){
int pos=read(),val=read();
a[pos]+=val;
--mp[sum[pos%k]];
sum[pos%k]+=val;
++mp[sum[pos%k]];
if(mp[sum[]]==k) puts("Yes");
else puts("No");
}
return ;
}
/*
5 2 5
1 1 1 2 1
3 −1
1 −1
3 1
3 1
1 −1
*/
简单计算:
$2*\sum\limits_{i=0}^{p}\lfloor\frac{i*q}{p}\rfloor=\sum\limits_{i=0}^{p}\lfloor\frac{i*q}{p}\rfloor+\lfloor\frac{(p-i)*q}{p}\rfloor$
所以原式=$(p+1)*q-\sum\limits_{i=0}^{p}[(p|i*q)?0:1]=(p+1)*q-p+gcd(p,q)$
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
int t,p,q,ans;
int gcd(int a,int b){
return b==?a:gcd(b,a%b);
}
signed main(){
freopen("simplecalc.in","r",stdin);
freopen("simplecalc.out","w",stdout);
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&p,&q);
ans=(p+)*q-p+gcd(p,q);
printf("%lld\n",ans>>);
}
return ;
}
格式化:
一个贪心,肯定是先选对容量有贡献的,即格式化后容量增加的,再选容量不增的,再选容量减少的,对于容量增加的,内部按格式化前从小到大排序,对于容量减小的,内部按格式化后的从大到小排序,然后check即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN=1e6+;
int n,ans=0x3f3f3f3f3f3f3f3f,l,r;
struct node{
int pre,now,w;
friend bool operator < (node p,node q){
if(p.w>&&q.w>){
return p.pre<q.pre;
}
if(p.w<&&q.w<){
return p.now>q.now;
}
if(p.w==&&q.w==){
return p.pre>q.pre;
}
if(p.w==){
return q.w<;
}
if(q.w==){
return p.w>;
}
if(p.w>&&q.w<) return ;
if(p.w<&&q.w>) return ;
return ;
}
}a[MAXN];
bool check(int val){
for(int i=;i<=n;++i){
if(a[i].pre>val) return ;
val-=a[i].pre,val+=a[i].now;
}
return ;
}
signed main(){
freopen("reformat.in","r",stdin);
freopen("reformat.out","w",stdout);
scanf("%lld",&n);
for(int i=;i<=n;++i){
scanf("%lld%lld",&a[i].pre,&a[i].now);
r+=a[i].pre;
a[i].w=a[i].now-a[i].pre;
}
sort(a+,a+n+);
while(l<r){
int mid=(l+r)>>;
if(check(mid)) ans=min(ans,mid),r=mid;
else l=mid+;
}
printf("%lld\n",ans);
return ;
}
真相:
我好弱啊,我太菜了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN=1e6+;
int t,n,sta[MAXN],top=,tru[MAXN],sum0[MAXN],sum1[MAXN],f[MAXN],g[MAXN];
struct node{
int opt,val;
}a[MAXN];
bool flagg=;
int calc(int p){
return (p-!=)?(p-):n;
}
vector<int>v[MAXN];
signed main(){
freopen("truth.in","r",stdin);
freopen("truth.out","w",stdout);
scanf("%d",&t);
while(t--){
top=flagg=;
scanf("%d",&n);
for(int i=;i<=n;++i){
char op[];
scanf("%s",op);
if(op[]=='+'){
a[i].opt=;
}else if(op[]=='-'){
a[i].opt=;
}else{
a[i].opt=;
scanf("%d",&a[i].val);
flagg=;
sta[++top]=i;
}
}
if(!flagg){
bool now=;
for(int i=;i<=n;++i){
if(now==){
if(a[i].opt==){
now=;
}else now=;
}else{
if(a[i].opt==){
now=;
}else now=;
}
}
if(now==) puts("consistent");
else puts("inconsistent");
continue;
}else{
bool flag=;
for(int i=;i<=top;++i){
int yy=sta[i];
++sum1[yy];
int p=yy;
bool now=;
while(a[calc(p)].opt!=){
p=calc(p);
if(now==){
if(a[p].opt==) now=;
else now=;
}else{
if(a[p].opt==) now=;
else now=;
}
sum1[yy]+=now;
}
p=yy;
now=;
while(a[calc(p)].opt!=){
p=calc(p);
if(now==){
if(a[p].opt==) now=;
else now=;
}else{
if(a[p].opt==) now=;
else now=;
}
sum0[yy]+=now;
}
}
int num=;
for(int i=;i<=top;++i){
f[a[sta[i]].val]+=sum0[sta[i]];
g[a[sta[i]].val]+=sum1[sta[i]];
num+=sum0[sta[i]];
}
for(int i=;i<=n;++i){
num-=f[i];
num+=g[i];
if(num==i){
flag=;
break;
}
num-=g[i];
num+=f[i];
}
if(flag) puts("consistent");
else puts("inconsistent");
for(int i=;i<=top;++i){
f[a[sta[i]].val]=g[a[sta[i]].val]=;
sum0[sta[i]]=sum1[sta[i]]=;
}
}
}
return ;
}
/*
1
3
$ 0
-
- */
csps模拟9495凉宫春日的忧郁,漫无止境的八月,简单计算,格式化,真相题解的更多相关文章
- [CSP-S模拟测试]:凉宫春日的忧郁(乱搞)
题目传送门(内部题101) 输入格式 第一行输入一个整数$T$,表示数据组数. 接下来$T$行,每行两个数$X,Y$,表示$T$组数据. 输出格式 输出共有$T$行,对于每一组数据,如果$X^Y\le ...
- [CSP-S模拟测试]:慢无止境的八月(乱搞)
题目传送门(内部题102) 输入格式 第一行三个正整数$n,k,q$,分别表示数列长度,操作长度和修改个数. 第二行$n$个数,表示给出的终止数列. 接下来$q$行,每行两个数$pos,dx$,表示将 ...
- csp-s模拟测试b组加餐antipalindome,randomwalking,string题解
题面:https://www.cnblogs.com/Juve/articles/11599318.html antipalindome: 打表找规律? 对于一个回文串,我们只要保证3位以内不回文即可 ...
- csp-s模拟测试94
csp-s模拟测试94 一场简单题,打爆了.$T1$脑抽分解质因数准备分子分母消,想了半天发现$jb$互质直接上天,果断码了高精滚蛋.$T2$无脑手玩大样例,突然灵光一闪想到映射到前$K$大小的区间, ...
- [CSP-S模拟测试94]题解
A.凉宫春日的忧郁 高精硬上似乎跑不过,其实可以都取个$log$.那么只需要比较$y\times log ^x$和$\sum \limits _{i=1}^y log^i$就好了. #include& ...
- 反省——关于csp-s模拟50
本人于搜索csp-s模拟49题解时,有意识地点开了一篇关于csp-s模拟50T2的题解,并知道了题解是二维前缀和以及四维偏序. 更重要的是,那篇博客说有解法二,叫二维莫队. 于是我上网搜索二维莫队,结 ...
- csp-s模拟测试99
csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...
- csp-s模拟测试98
csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...
- csp-s模拟测试97
csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...
随机推荐
- openssl编译方法
受不了了,终于编译成功了openssl,写一下编译方法吧 准备: 0:要编译openssl,必不可少的是代码,去下载 https://www.openssl.org/source/ 1:要有一个VS系 ...
- sanic连接mongo
方法一: #没有密码,就是没有用户和用户密码 settings={"MOTOR_URI":"mongodb://127.0.0.1:27017/zzy"} ap ...
- 从零开始搭建系统2.4——Jenkins安装及配置
1.安装wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.reporpm --impo ...
- MYSQL分数排名
编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有“间隔”. +----+----- ...
- jq-demo-点击选择(英雄联盟)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 16. 继承(extends)
1.语法 class 类名1 extends 类名2{ //成员变量和成员方法 } 2.继承要注意的事项: 1)千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承. 2)父类私有的 ...
- cmake -help
{ Usage cmake [options] <path-to-source> cmake [options] <path-to-existing-build> Speci ...
- c++ exit() 函数
函数用法 编辑 函数名: exit() 所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h) 功 能: 关闭所有文件,终止正在执行的进程. exit(0)表示正常退出, ...
- [原创] Java 流布局管理器 FlowLayout
参数原型: public FlowLayout(int align, int hgap, int vgap) { this.hgap = hgap; this.vgap = vgap; setAlig ...
- java script 数组去重两种方法
第一种方法: var arr=[1,1,2,3,4,4,4,5,6,6,6,6]; var arrb=Array(); for(var i=0;i<arr.length;i++) ...