题面: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凉宫春日的忧郁,漫无止境的八月,简单计算,格式化,真相题解的更多相关文章

  1. [CSP-S模拟测试]:凉宫春日的忧郁(乱搞)

    题目传送门(内部题101) 输入格式 第一行输入一个整数$T$,表示数据组数. 接下来$T$行,每行两个数$X,Y$,表示$T$组数据. 输出格式 输出共有$T$行,对于每一组数据,如果$X^Y\le ...

  2. [CSP-S模拟测试]:慢无止境的八月(乱搞)

    题目传送门(内部题102) 输入格式 第一行三个正整数$n,k,q$,分别表示数列长度,操作长度和修改个数. 第二行$n$个数,表示给出的终止数列. 接下来$q$行,每行两个数$pos,dx$,表示将 ...

  3. csp-s模拟测试b组加餐antipalindome,randomwalking,string题解

    题面:https://www.cnblogs.com/Juve/articles/11599318.html antipalindome: 打表找规律? 对于一个回文串,我们只要保证3位以内不回文即可 ...

  4. csp-s模拟测试94

    csp-s模拟测试94 一场简单题,打爆了.$T1$脑抽分解质因数准备分子分母消,想了半天发现$jb$互质直接上天,果断码了高精滚蛋.$T2$无脑手玩大样例,突然灵光一闪想到映射到前$K$大小的区间, ...

  5. [CSP-S模拟测试94]题解

    A.凉宫春日的忧郁 高精硬上似乎跑不过,其实可以都取个$log$.那么只需要比较$y\times log ^x$和$\sum \limits _{i=1}^y log^i$就好了. #include& ...

  6. 反省——关于csp-s模拟50

    本人于搜索csp-s模拟49题解时,有意识地点开了一篇关于csp-s模拟50T2的题解,并知道了题解是二维前缀和以及四维偏序. 更重要的是,那篇博客说有解法二,叫二维莫队. 于是我上网搜索二维莫队,结 ...

  7. csp-s模拟测试99

    csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...

  8. csp-s模拟测试98

    csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...

  9. csp-s模拟测试97

    csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...

随机推荐

  1. openssl编译方法

    受不了了,终于编译成功了openssl,写一下编译方法吧 准备: 0:要编译openssl,必不可少的是代码,去下载 https://www.openssl.org/source/ 1:要有一个VS系 ...

  2. sanic连接mongo

    方法一: #没有密码,就是没有用户和用户密码 settings={"MOTOR_URI":"mongodb://127.0.0.1:27017/zzy"} ap ...

  3. 从零开始搭建系统2.4——Jenkins安装及配置

    1.安装wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.reporpm --impo ...

  4. MYSQL分数排名

    编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有“间隔”. +----+----- ...

  5. jq-demo-点击选择(英雄联盟)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 16. 继承(extends)

    1.语法 class 类名1 extends 类名2{ //成员变量和成员方法 } 2.继承要注意的事项: 1)千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承. 2)父类私有的 ...

  7. cmake -help

    { Usage cmake [options] <path-to-source>  cmake [options] <path-to-existing-build> Speci ...

  8. c++ exit() 函数

    函数用法 编辑 函数名: exit() 所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h) 功 能: 关闭所有文件,终止正在执行的进程. exit(0)表示正常退出, ...

  9. [原创] Java 流布局管理器 FlowLayout

    参数原型: public FlowLayout(int align, int hgap, int vgap) { this.hgap = hgap; this.vgap = vgap; setAlig ...

  10. 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++)   ...