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了

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 #define int long long
 7 using namespace std;
 8 int t,x,y;
 9 signed main(){
10     freopen("yuuutsu.in","r",stdin);
11     freopen("yuuutsu.out","w",stdout);
12     scanf("%lld",&t);
13     while(t--){
14         scanf("%lld%lld",&x,&y);
15         long double xx=y*log2(x);
16         long double yy=0.0;
17         for(int i=1;i<=y;++i){
18             yy+=log2(i);
19         }
20         if(xx<=yy) puts("Yes");
21         else puts("No");
22     }
23     return 0;
24 }

漫无止境的八月:

如果满足的话必须保证所有%k同余的位置上的和一样,所以打个map就好了。。。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<unordered_map>
 6 using namespace std;
 7 const int MAXN=2e6+5;
 8 int read(){
 9     int x=0,f=1;char ch=getchar();
10     while(ch<‘0‘||ch>‘9‘){
11         if(ch==‘-‘) f=-1;
12         ch=getchar();
13     }
14     while(ch>=‘0‘&&ch<=‘9‘){
15         x=(x<<3)+(x<<1)+ch-‘0‘;
16         ch=getchar();
17     }
18     return x*f;
19 }
20 int n,k,q,a[MAXN],sum[MAXN];
21 unordered_map<int,int>mp;
22 signed main(){
23     freopen("august.in","r",stdin);
24     freopen("august.out","w",stdout);
25     n=read(),k=read(),q=read();
26     for(int i=1;i<=n;++i){
27         a[i]=read();
28         sum[i%k]+=a[i];
29     }
30     for(int i=0;i<k;++i) ++mp[sum[i%k]];
31     if(mp[sum[0]]==k) puts("Yes");
32     else puts("No");
33     for(int i=1;i<=q;++i){
34         int pos=read(),val=read();
35         a[pos]+=val;
36         --mp[sum[pos%k]];
37         sum[pos%k]+=val;
38         ++mp[sum[pos%k]];
39         if(mp[sum[0]]==k) puts("Yes");
40         else puts("No");
41     }
42     return 0;
43 }
44 /*
45 5 2 5
46 1 1 1 2 1
47 3 −1
48 1 −1
49 3 1
50 3 1
51 1 −1
52 */

简单计算:

$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\limist_{i=0}^{p}[(p|i*q)?0:1]=(p+1)*q-p+gcd(p,q)$

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define int long long
 6 using namespace std;
 7 int t,p,q,ans;
 8 int gcd(int a,int b){
 9     return b==0?a:gcd(b,a%b);
10 }
11 signed main(){
12     freopen("simplecalc.in","r",stdin);
13     freopen("simplecalc.out","w",stdout);
14     scanf("%lld",&t);
15     while(t--){
16         scanf("%lld%lld",&p,&q);
17         ans=(p+1)*q-p+gcd(p,q);
18         printf("%lld\n",ans>>1);
19     }
20     return 0;
21 }

格式化:

一个贪心,肯定是先选对容量有贡献的,即格式化后容量增加的,再选容量不增的,再选容量减少的,对于容量增加的,内部按格式化前从小到大排序,对于容量减小的,内部按格式化后的从大到小排序,然后check即可

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define int long long
 6 using namespace std;
 7 const int MAXN=1e6+5;
 8 int n,ans=0x3f3f3f3f3f3f3f3f,l,r;
 9 struct node{
10     int pre,now,w;
11     friend bool operator < (node p,node q){
12         if(p.w>0&&q.w>0){
13             return p.pre<q.pre;
14         }
15         if(p.w<0&&q.w<0){
16             return p.now>q.now;
17         }
18         if(p.w==0&&q.w==0){
19             return p.pre>q.pre;
20         }
21         if(p.w==0){
22             return q.w<0;
23         }
24         if(q.w==0){
25             return p.w>0;
26         }
27         if(p.w>0&&q.w<0) return 1;
28         if(p.w<0&&q.w>0) return 0;
29         return 1;
30     }
31 }a[MAXN];
32 bool check(int val){
33     for(int i=1;i<=n;++i){
34         if(a[i].pre>val) return 0;
35         val-=a[i].pre,val+=a[i].now;
36     }
37     return 1;
38 }
39 signed main(){
40     freopen("reformat.in","r",stdin);
41     freopen("reformat.out","w",stdout);
42     scanf("%lld",&n);
43     for(int i=1;i<=n;++i){
44         scanf("%lld%lld",&a[i].pre,&a[i].now);
45         r+=a[i].pre;
46         a[i].w=a[i].now-a[i].pre;
47     }
48     sort(a+1,a+n+1);
49     while(l<r){
50         int mid=(l+r)>>1;
51         if(check(mid)) ans=min(ans,mid),r=mid;
52         else l=mid+1;
53     }
54     printf("%lld\n",ans);
55     return 0;
56 }

原文地址:https://www.cnblogs.com/Juve/p/11774952.html

时间: 2024-08-01 02:17:18

csps模拟9495凉宫春日的忧郁,漫无止境的八月,简单计算,格式化题解的相关文章

csp-s模拟测试94「凉宫春日的犹豫&#183;漫无止境的八月&#183;射手座之日」

凉宫春日的犹豫 题解 第一次秒切题,5分钟切掉 比较$x^y$和$y!$大小 如果$x^y<y!$输出Yes 问题转化为 $\frac{1}{x} *\frac{2}{x}*\frac{3}{x},,,,,*\frac{y}{x}>=1$输出$Yes$ 开双端队列维护,一直保持单调,然后让队首*队尾就行了 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define A 111111 lon

csp-s模拟测试94

csp-s模拟测试94 一场简单题,打爆了.$T1$脑抽分解质因数准备分子分母消,想了半天发现$jb$互质直接上天,果断码了高精滚蛋.$T2$无脑手玩大样例,突然灵光一闪想到映射到前$K$大小的区间,$T3$写完暴力准备划水,突然发现特殊性质可写,$10$分钟拯救了$25$分. 80 03:24:46 70 03:24:58 65 03:25:10 215 03:25:10 没办法就是菜,退役也不暝目. A. 凉宫春日的忧郁 转成对数轻松过. B. 漫无止境的八月 取模到$K$大小的区间,$ha

csp-s模拟测试60

csp-s模拟测试60       2019-10-05 RT. 又颓又垃圾. 状态低迷,题都交不上去. 交了也是爆零,垃圾玩家没有什么可说的,就是垃圾. A. 嘟嘟噜 $mlogn$的毒瘤做法. 贴一个不一样的毒瘤做法. 1 //ans=(ans+m)%i 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 #define re re

csp-s模拟测试83(集训过半)

csp-s模拟测试83(集训过半) 一场信心赛.起初$OJ$爆了我就看见全场$A$了$T1$并且夹杂着$A$掉$T2$我就很难受. 这场比赛没有深入思考,很失败,一个多小时后就结束了我罪恶的一生. 100 00:44:43 50 02:51:09 20 02:50:48 170 02:51:09 没什么水平暴力都没打满. A. 最大异或和 打表可知异或$sum$为$0$则平局反之先手必胜. B. 简单的括号序列 $B$组的一道垃圾题.记得考虑柿子的实际含义就好了. C. 旅行计划 分块处理,考场

csp-s模拟测试92

csp-s模拟测试92 关于$T1$:最短路这一定建边最短路. 关于$T2$:傻逼$Dp$这一定线段树优化$Dp$. 关于$T3$:最小生成树+树P+换跟一定是这样. 深入(?)思考$T1$:我是傻逼. 深入(?)思考$T2$:我是天才! 深入(?)思考$T3$:我是天才! 100 01:14:19 10 02:36:26 15 03:19:48 125 03:19:48 事实证明我是傻逼. A. 数列 故意删掉负数读入$Rp--$ $Exgcd$,对绝对值大力分类讨论,一次函数求最值. 考场死

csp-s模拟测试93

csp-s模拟测试93 自闭场. $T1$想到$CDQ$,因为复杂度少看见一个$0$打了半年还用了$sort$直接废掉,$T2$,$T3$直接自闭暴力分都没有.考场太慌了,心态不好. 80 02:07:34 0 03:12:11 0 03:11:53 80 03:12:11 没有前途就是垃圾趁早滚回实验二安度晚年吧. A. 序列 $CDQ$不接受反驳. B. 二叉搜索树 最简单的$Dp$都没认真想,太垃圾了,积累一个决策单调性优化$Dp$.一些看似是$n^3$的题可以通过特殊性质优化,还比如以前

csp-s模拟测试96

csp-s模拟测试96 $T1$一眼慢速乘,$T2$稍证一手最优性尝试用神奇数据结构优化,无果,弃.$T3$暴力+信仰. 100 03:16:38 95 03:16:56 35 03:17:10 230 03:17:10 比较意外. 和天皇$Skyh$同分祭. 起码可以伪证退役前我努力过. A. 求和 等差数列慢速乘,$/2$特判. B. 分组配对 二分右端点倍增优化. 考场把两个性能各异的暴力拼在一起,设一个参数,拿了$95$. C. 城市游戏 调不出来,咕. 神様(かみさま)ありがとう 运命

csp-s模拟测试97

csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 100 00:31:38 10 02:49:26 150 02:49:26 $T1$特判错了希望人品可以++. A. 小盆友的游戏 像题解一样构造一个函数那么这个题就是水题了. B. 花 随手$Dp$. C. 表格 $Dee$树帅但是我咕了. 酷(ひど)いよ 酷(ひど)いよ.もういっそ仆(ぼく)の体(か

csps模拟87888990部分题解

题面:https://www.cnblogs.com/Juve/articles/11752338.html https://www.cnblogs.com/Juve/articles/11752414.html 最近咕的稍多,就简单写一下题解了(其实也不算题解),反正就是一句话,而且都是这几套题改完的 模拟87: maze: 在实数上二分,跑最短路check,spfa比dij快多l 1 #include<iostream> 2 #include<cstdio> 3 #includ