[CF707 Div2, A ~ D]
(相信进这个博客的人,都已经看过题目了,不再赘述)
这把打小号打到了\(484\),\(rating + 636\)
\(A\)
考虑进行模拟就行了,说白了这是一个英语阅读题
// code by Dix_
#include<bits/stdc++.h>
#define ll long long
inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
}
ll T,a[200],b[200],t[200],now;
int main(){
scanf("%lld",&T);
while(T -- ){
ll n;
scanf("%lld",&n);
for(int i = 1;i <= n;++i){
scanf("%lld%lld",&a[i],&b[i]);
}
for(int i = 1;i <= n;++i)
scanf("%lld",&t[i]);
ll now = t[1] + a[1];
for(int i = 1;i <= n - 1;++i){
now += std::ceil(((double)b[i] - a[i]) / 2.0);
now = std::max(now,b[i]);
now += (a[i + 1] - b[i] + t[i + 1]);
}
std::cout<<now<<std::endl;
}
}
\(B\)
考虑进行一个差分处理,再还原原数组
// code by Dix_
#include<bits/stdc++.h>
#define ll long long
inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
}
ll t,cnt[200010],now;
int main(){
scanf("%lld",&t);
while(t -- ){
ll n;
scanf("%lld",&n);
for(int i = 0;i <= n + 1;++i)
cnt[i] = 0;
for(int i = 1;i <= n;++i){
ll x = read();
cnt[i + 1] -= 1;
cnt[std::max((ll)0,i - x + 1)] += 1;
}
for(int i = 1;i <= n;++i){
cnt[i] = cnt[i - 1] + cnt[i];
if(cnt[i])
std::cout<<1<<" ";
else
std::cout<<0<<" ";
}
puts("");
}
}
\(C\)
大毒瘤题,想了\(1h\)的做法最后和暴力一样写
观察\(n\)的范围和值域,我们发现在\(n\)较大时,点对数\((n * (n - 1)) / 2 > 2 * |V|\),所以必定有解,那么我们利用这个来进行一个抽屉原理证明
可以证明暴力写法复杂度是对的
// code by Dix_
#include<bits/stdc++.h>
#define ll long long
inline ll read(){
char C=getchar();
ll N=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
return F*N;
}
ll n;
std::map<ll,int>QWQ;
std::map<ll,int>QAQ;
ll num[200005];
int main(){
scanf("%lld",&n);
for(int i = 1;i <= n;++i)
scanf("%lld",&num[i]);
for(int i = 1;i <= n;++i)
for(int j = i + 1;j <= n;++j){
ll sum = num[i] + num[j];
if(QWQ.count(sum))
if(QWQ[sum] != i && QAQ[sum] != j && QWQ[sum] != j && QAQ[sum] != i){
puts("YES");
std::cout<<QWQ[sum]<<" "<<QAQ[sum]<<" "<<i<<" "<<j<<std::endl;
return 0;
}
QWQ[sum] = i,QAQ[sum] = j;
}
puts("NO");
}
\(D\)
考虑一个周期内有多少个不同的,再二分求出后面零散的天数
\(Excrt\)不会,得去学,这题是后来补的
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int N=1e6+5;
LL muler(LL x,LL k,LL MOD)
{
LL res=0; x=(x%MOD+MOD)%MOD; k=(k%MOD+MOD)%MOD;
while(k) {
if(k&1) res=(res+x)%MOD;
x=(x+x)%MOD; k>>=1;
}
return res%MOD;
}
LL power(LL x,LL k,LL MOD)
{
LL res=1; x%=MOD;
while(k) {
if(k&1) res=muler(res,x,MOD);
x=muler(x,x,MOD); k>>=1;
}
return res%MOD;
}
LL exgcd(LL a,LL b,LL& x,LL& y)
{
if(b==0) {
x=1; y=0;
return a;
}
LL z=exgcd(b,a%b,y,x);
y-=a/b*x;
return z;
}
LL inv(LL x,LL p)
{
LL y,z; exgcd(x,p,y,z);
return (y%p+p)%p;
}
LL excrt(int n,LL b[],LL a[])
{
LL m=a[1],ans=b[1];
for(int i=2;i<=n;i++) {
LL y,z,d=exgcd(m,a[i],y,z);
if((b[i]-ans)%d!=0) return -1;
y=muler(y,(b[i]-ans)/d,a[i]/d);
ans+=y*m;
m=a[i]/d*m;
ans=(ans%m+m)%m;
}
return ans;
}
LL gcd(LL a,LL b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
LL lcm(LL a,LL b) { return a/gcd(a,b)*b; }
int n,m;
LL kth;
int a[N],b[N],c[N];
LL A[N],B[N];
vector<LL> v;
LL calc(LL day)
{
// cerr<<day<<" "<<day-(upper_bound(v.begin(),v.end(),day)-v.begin())<<endl;
if(day<=0) return 0;
else return day-(upper_bound(v.begin(),v.end(),day)-v.begin());
}
int main()
{
// freopen("1.in","r",stdin);
int i,j;
LL x;
scanf("%d%d%lld",&n,&m,&kth);
for(i=0;i<n;i++) scanf("%d",&a[i]);
for(i=0;i<m;i++) scanf("%d",&b[i]);
memset(c,-1,sizeof c);
for(i=0;i<n;i++) c[a[i]]=i;
for(i=0;i<m;i++) {
if(~c[b[i]]) {
j=c[b[i]];
A[1]=n; A[2]=m;
B[1]=j; B[2]=i;
x=excrt(2,B,A);
if(x==-1) continue;
v.push_back(x+1);
// cerr<<x<<endl;
}
}
sort(v.begin(),v.end());
LL times=lcm(n,m)-v.size();
LL turns=(kth-1)/times;
kth-=turns*times;
LL L=-1,R=lcm(n,m),mid;
while(L+1<R) {
mid=(L+R)>>1;
if(calc(mid)>=kth) R=mid;
else L=mid;
}
printf("%lld\n",turns*lcm(n,m)+R);
return 0;
}
[CF707 Div2, A ~ D]的更多相关文章
- bc#54 div2
用小号做的div2 A:竟然看错了排序顺序...白白WA了两发 注意读入一整行(包括空格):getline(cin,st) [gets也是资瓷的 #include<iostream> us ...
- $('div a') 与$('div>a'),.div+.div2与.div~.div2
$('div a'):div标签下所有层次a元素的jquery对象 $('div>a'):div标签下子元素层次a元素的jquery对象 <body> <div class=' ...
- SRM 657 DIV2
-------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了.但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了.. T1: 题目大意: ...
- CodeForces Round 192 Div2
This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...
- Codeforce Round #211 Div2
真的是b到不行啊! 尼玛C题一个这么简单的题目没出 aabbccddee 正确的是aabccdee 我的是 aabcdee 硬是TM的不够用,想半天还以为自己的是对的... A:题... B:题. ...
- Topcoder srm 632 div2
脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...
- TopCoder 603 div1 & div2
div2 250pts MiddleCode 题意:s串长度为奇数时,将中间字符取掉并添加到t末尾:长度为偶数时,将中间两个较小的字符取掉并添加到末尾. 分析:直接做,学习了一下substr(s, p ...
- TopCoder 649 div1 & div2
最近一场TC,做得是在是烂,不过最后challenge阶段用一个随机数据cha了一个明显错误的代码,最后免于暴跌rating,还涨了一点.TC题目质量还是很高的,非常锻炼思维,拓展做题的视野,老老实实 ...
- 220 DIV2 B. Inna and Nine
220 DIV2 B. Inna and Nine input 369727 output 2 input 123456789987654321 output 1 题意:比如例子1:369727--& ...
随机推荐
- pycharm环境下配置scrap爬虫环境
[写在开头] 参考文章后面给出了备注信息,是在解决这个问题的时候,查找的比较有亮点的参考文章,如果本文章写的不太清楚的,可以去原文章进行查看.下面列举的四个文章有参考的成分也有验证的成分,解决办法重点 ...
- 【数据结构与算法Python版学习笔记】算法分析
什么是算法分析 算法是问题解决的通用的分步的指令的聚合 算法分析主要就是从计算资源的消耗的角度来评判和比较算法. 计算资源指标 存储空间或内存 执行时间 影响算法运行时间的其他因素 分为最好.最差和平 ...
- Windows主机入侵排查
检查系统信息.用户账号信息 系统信息 ● 查看系统版本以及补丁信息 systeminfo 用户账号信息 ● 基本使用 ○ 创建普通账号并加入administrarors 组 net user test ...
- 23.合并k个有序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- Java:AQS 小记-1(概述)
Java:AQS 小记-1(概述) 概述 全称是 Abstract Queued Synchronizer(抽象队列同步器),是阻塞式锁和相关的同步器工具的框架,这个类在 java.util.conc ...
- 看动画学算法之:队列queue
目录 简介 队列的实现 队列的数组实现 队列的动态数组实现 队列的链表实现 队列的时间复杂度 简介 队列Queue是一个非常常见的数据结构,所谓队列就是先进先出的序列结构. 想象一下我们日常的排队买票 ...
- [no code][scrum meeting] Beta 5
$( "#cnblogs_post_body" ).catalog() 例会时间:5月18日14:30,主持者:叶开辉 下次例会时间:5月19日11:30,主持者:黎正宇 一.工作 ...
- [ NOIP2013 D2-T3 ] 华容道
NOIP2013 华容道 图论好题. 介于网上全是些令蒟蒻头昏的题解和排版一塌糊涂以及过于详细的题解...蒟蒻记录一下.. 显然需要将白格移动到 \(s\) 相邻格,然后交换 \(s\) 与白格,再将 ...
- 单片机STM32的启动文件详解--学习笔记
启动文件简介 启动文件由汇编编写,是系统上电复位后第一个执行的程序.主要做了以下工作: 1.初始化堆栈指针SP=_initial_sp 2.初始化PC 指针=Reset_Handler 3.初始化中断 ...
- 决策树 机器学习,西瓜书p80 表4.2 使用信息增益生成决策树及后剪枝
使用信息增益构造决策树,完成后剪枝 目录 使用信息增益构造决策树,完成后剪枝 1 构造决策树 1 根结点的选择 色泽 信息增益 根蒂 信息增益 敲声 信息增益 纹理 信息增益 脐部 信息增益 触感 信 ...