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 ...
随机推荐
- 利用dynamic解决匿名对象不能赋值的问题
原文:利用dynamic解决匿名对象不能赋值的问题 关于匿名对象 匿名对象是.Net Framework 3.0提供的新类型,例如: }; 就是一个匿名类,搭配Linq,可以很灵活的在代码中组合数据, ...
- Red5流媒体服务器开发
Red5流媒体服务器开发总结 Red5 是 支持Windows,Linux等多平台的RTMP流媒体服务器,最早属于谷歌下的开源项目,先已移植到Github,地址为https://github.com/ ...
- PROJECT | 四则运算UI设计 - 项目总结
[项目Github地址] https://github.com/oTPo/hw2 [项目规划] PSP表格 事项 预计时间(min) 实际花费时间(min) 需求分析 60 60 开发流程分析 30 ...
- C#链接Mysql
先在网上找到Mysql.Data.dll组件, 文件下载地址为http://dev.mysql.com/downloads/connector/net/6.6.html#downloads ,下载平台 ...
- ajax--getJSON
penson.json [ { "name":"张三", "age":25, "sex":"男", ...
- 关于synchronized和Lock
原文链接:关于volatile关键字解析,synchronized和Lock参考 深入浅出,解释的非常清楚,有条理~~~ 以下为转载内容: Java并发编程:volatile关键字解析 volatil ...
- cehsi
weibo https://oapi.dingtalk.com/robot/send?access_token=8c9ef96c99925383347c5f9f733ad6b8579c3f8ad072 ...
- 理解MITRE ATT&CK矩阵
最近准备学习一下关于ATT&CK的知识,这里面先来理解一下什么是ATT&CK(通过对ATT&CK的学习,可以很快的对安全领域有一个比较全面的认识). 什么是MITRE MITR ...
- ionic-Javascript:ionic 上拉菜单(ActionSheet)
ylbtech-ionic-Javascript:ionic 上拉菜单(ActionSheet) 1.返回顶部 1. ionic 上拉菜单(ActionSheet) 上拉菜单(ActionSheet) ...
- 【ARC072E】Alice in linear land
题目 瑟瑟发抖,这竟然只是个蓝题 题意大概就是初始在\(0\),要到坐标为\(D\)的地方去,有\(n\)条指令,第\(i\)条为\(d_i\).当收到一条指令\(x\)后,如果向\(D\)方向走\( ...