【短期】文化课后的康复训练

中考结束了嘛

然后由于D萎蛋了 所以前期是上午OI下午文化课晚上作业 提前把高一知识搞完这样停课比较稳

这几天先是简单题的康复训练 NOIP提高难度吧 然后中间穿插一些之前想补的题

嗯就这样,开始吧。

6.17

做了一下下面的小朋友【大雾 的题 还是很好做的嘛233

poj2437

有点辣鸡的贪心题 贪就完事了 处理边界有点麻烦

//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define inf 20021225
using namespace std;

struct mud
{
    int st,ed;
    bool operator<(const mud &x)
    {
        return st<x.st;
    }
}m[10010];
int n,l;
int main()
{
    scanf("%d%d",&n,&l);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&m[i].st,&m[i].ed);
    sort(m+1,m+n+1); int ans=0,lst=0;
    for(int i=1;i<=n;i++)
    {
        int tmp=max(lst,m[i].st);// printf("%d\n",tmp);
        int len=m[i].ed-tmp; if(len<=0)    continue;
        len=(len-1)/l+1;
        ans+=len; lst=tmp+len*l;
    }
    printf("%d\n",ans);
    return 0;
}
View Code

bzoj1614

比较好做的题 简化题意就是求路径上第(k+1)大最小

这种什么最大最小二分就很靠谱 然后spfa更新个dp数组就好啦

//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#define ll long long
#define inf 20021225
#define N 10001
#define MX 1000001
using namespace std;
 
struct edge{int to,lt,v;}e[N<<1];
int in[N],f[N],cnt,n,p,k;
void add(int x,int y,int v)
{
    e[++cnt].to=y; e[cnt].lt=in[x]; e[cnt].v=v; in[x]=cnt;
    e[++cnt].to=x; e[cnt].lt=in[y]; e[cnt].v=v; in[y]=cnt;
}
queue<int> q;
bool spfa(int t)
{
    //while(!q.empty()) q.pop();
    memset(f,48,sizeof(f)); q.push(1); f[1]=0;
    while(!q.empty())
    {
        int x=q.front(); q.pop();
        for(int i=in[x];i;i=e[i].lt)
        {
            int y=e[i].to,tmp=f[x];
            if(e[i].v>t) tmp++;
            if(tmp<f[y]) f[y]=tmp,q.push(y);
        }
    }
    if(f[n]<=k)  return 1;
    return 0;
}
int main()
{
    int x,y,v;
    scanf("%d%d%d",&n,&p,&k);
    for(int i=1;i<=p;i++)
        scanf("%d%d%d",&x,&y,&v),add(x,y,v);
    int l=0,r=MX,mid; int ans=MX;
    while(l<=r)
    {
        mid=l+r>>1;
        if(spfa(mid))   ans=min(ans,mid),r=mid-1;
        else    l=mid+1;
    }
    if(ans==MX) ans=-1;
    printf("%d\n",ans);
    return 0;
}
View Code

ATC034A 放在长期计划了

LOJ6435 PKUSC2018 星际穿越

在这里->戳我

6.18

emm感觉康复训练好像不是很适合 还是直接学东西 和 写代码恢复比较快 然后就是写题和学新算法同时进行吧

写的神仙的游戏 具体见这里->戳我

再就是学了2-SAT和线段树优化建图 都是好理解的东西 今天写写题√ 【洛谷任务计划里堆了一堆QAQ

6.19

线段树优化建图w!CF1045A 戳我

6.20

太颓了 搭博客去了

然后写了个板子 CF768B 戳我

6.21

太颓了 学了个2sat

写了下洛谷模板 深刻的认识到了自己的语文问题 再写了CF27D 不想写题解了 把代码扔这里了

//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<stack>
#define tr(x) (x<<1)
#define fs(x) ((x<<1)|1)
#define ll long long
#define inf 20021225
#define N 2000100
using namespace std;
int n,m;
struct edge{int to,lt;}e[N]; int col[N],c,vc[N],opp[N];
int in[N],cnt,dfn[N],low[N],poi,tag[N]; bool vis[N]; stack<int> st;
void add(int x,int y)
{
    e[++cnt].to=y; e[cnt].lt=in[x]; in[x]=cnt;
}
void tarjan(int x)
{
    low[x]=dfn[x]=++poi; st.push(x); vis[x]=1;
    for(int i=in[x];i;i=e[i].lt)
    {
        int y=e[i].to;
        if(vis[y])    low[x]=min(low[x],dfn[y]);
        else if(!dfn[y])
            tarjan(y),low[x]=min(low[x],low[y]);
    }
    if(low[x]==dfn[x])
    {
        ++c; int w,s=0;
        do
        {
            w=st.top(); st.pop();
            col[w]=c; s++; vis[w]=0; 
        }while(w!=x);
        vc[c]=s;
    }
}
void work()
{
    for(int i=1;i<=n;i++)
    {
        if(!dfn[tr(i)])    tarjan(tr(i));
        if(!dfn[fs(i)])    tarjan(fs(i));
        if(col[tr(i)]==col[fs(i)])
        {
            printf("IMPOSSIBLE\n"); return;
        }
    }
    for(int i=1;i<=n;i++)
        opp[col[tr(i)]]=col[fs(i)],
        opp[col[fs(i)]]=col[tr(i)];
    for(int i=1;i<=c;i++)
        if(!tag[i])    tag[i]=1,tag[opp[i]]=-1;
    printf("POSSIBLE\n");
    for(int i=1;i<=n;i++)
        printf("%d ",tag[col[tr(i)]]==1?1:0);
    printf("\n");
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int x,y,ax,ay;
        scanf("%d%d%d%d",&x,&ax,&y,&ay);
        x=ax?tr(x):fs(x); y=ay?tr(y):fs(y);
        add(x^1,y); add(y^1,x);
    }
    work();
    return 0;
}
洛谷模板
//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<stack>
#include<cstring>
#define ll long long
#define inf 20021225
#define tr(x) (x<<1)
#define fs(x) (x<<1|1)
#define N 200010
using namespace std;

struct edge{int to,lt;}e[N];
int col[N],c,dfn[N],low[N],poi,n,m; bool vis[N];
int in[N],cnt,opp[N],tag[N]; stack<int> st; int p[N][2]; 
void add(int x,int y){e[++cnt].to=y; e[cnt].lt=in[x]; in[x]=cnt;}
void tarjan(int x)
{
    dfn[x]=low[x]=++poi; vis[x]=1; st.push(x);
    for(int i=in[x];i;i=e[i].lt)
    {
        int y=e[i].to;
        if(vis[y])    low[x]=min(low[x],dfn[y]);
        else if(!dfn[y])
            tarjan(y), low[y]=min(low[x],low[y]);
    }
    if(low[x]==dfn[x])
    {
        ++c; int w;
        do
        {
            w=st.top(); st.pop();
            col[w]=c; vis[w]=0;
        }while(w!=x);
    }
}
bool left(int ax,int ay,int x)
{
    if(ax>ay)    swap(ax,ay);
    return (x<ax)|(x>ay);
}
bool check(int ax,int ay,int bx,int by)
{
    if(bx==ax||bx==ay||by==ax||by==ay)    return 0;
    if(left(ax,ay,bx)^left(ax,ay,by))    return 1;
    return 0;
}
void work()
{
    for(int i=1;i<=m;i++)
    {
        if(!dfn[tr(i)])    tarjan(tr(i));
        if(!dfn[fs(i)])    tarjan(fs(i));
        if(col[tr(i)]==col[fs(i)])
        {
            printf("Impossible\n"); return;
        }
    }
    for(int i=1;i<=m;i++)
        opp[col[tr(i)]]=col[fs(i)],opp[col[fs(i)]]=col[tr(i)];
    for(int i=1;i<=c;i++)
        if(!tag[i])    tag[i]=1,tag[opp[i]]=-1;
    for(int i=1;i<=m;i++)
        printf("%c",tag[col[tr(i)]]==1?'i':'o');
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&p[i][0],&p[i][1]);
        for(int j=1;j<i;j++)
        {
            //if(j==1 && i==2)    printf("%d\n",check(p[i][0],p[i][1],p[j][0],p[j][1]));
            if(check(p[i][0],p[i][1],p[j][0],p[j][1]))
                add(tr(i),fs(j)),add(fs(j),tr(i)),
                add(tr(j),fs(i)),add(fs(i),tr(j));
        }
    }
    work();
    return 0;
}
CF27D

6.22

今天上午休息 下午还是文化课

晚上准备打ABC131恢复下手速 然后写完可能继续做atc泛做

6.23

昨晚abc在wph和scb的帮助下顺利阿克啦 他俩都太神仙了w

白天出去玩了www 蹦床好好玩的说

晚上回来写了个看起来很计数的题agc028B 放在atc泛做里了

感觉有时候看起来不可做的话 可以试试强推式子...

以及不行可以把计数转期望... 但感觉这对我来说好像有点困难... 推大柿子也不会期望的... 这辈子不会期望的【大雾

这样看看计数能力还是有点提升的QAQ

 6.24

写了两个题 都不是很难 link 还有一个在atcoder泛做里面

看了一下sun做了不少字符串 自己字符串也不是很好 可能接下来几天 跟着sun做题了233

转载于:https://www.cnblogs.com/hanyuweining/p/11043307.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值