Skip to content

泉州一中信息学Blog

信息学奥赛技术分享博客

  • 登录
  • 小学oj
  • 中学oj
  • 测试页面1
  • Toggle search form

常州信竞Day2

Posted on 2024年8月13日2024年8月13日 By 彭鑫煜 常州信竞Day2无评论
2024-08-13 18:36:56 星期二

上午

上午学了穷举,教了如何优化循环;
如:

  1. 剪枝搜索
  2. 预处理
  3. 忘了
  4. 忘了
  5. 还是忘了
  6. ··························································································
    这是PPT网址:arrow_down:
    "穷举PPT"[http:/file/5995/%E7%A9%B7%E4%B8%BE.ppt ]

中午

中午打的题,没什么写的
我忘记中午打什么题了:innocent: 并不是没什么写的
这有个十分有意思的题目:arrow_down:
arrow_down:
http:/file/5995/%E8%B0%A2%E4%B8%BD%E5%B0%94%E7%9A%84%E7%94%9F%E6%97%A5%E6%98%AF%E5%93%AA%E5%A4%A9.doc

附:中午菜挺好吃还有饮料

下午

下午继续在打题
这是题解(需要自取):arrow_down:
1.

//tug.cpp
#include
using namespace std;
const int maxn=100;
const int maxn2=maxn / 2;
const int maxrange=450;
bool c[maxn2+1][maxn2*maxrange+1];
int a[maxn+1];
int main(){
    freopen("tug.in","r",stdin);
    freopen("tug.out","w",stdout);
    int n,n2,sum;
    scanf("%d",&n);
    n2=(n+1)/2;
    sum=0;
    for(int i=1;i=0;--j){
                if (c[i][j]) c[i+1][j+delta]=1;
            }
        }
    }
    int mm=sum;
    int mi=0;
    for(int j=0;j<=maxrange*n2;++j){
        if (c[n2][j]&&abs(sum-j*2)<mm){
            mm=sum-j*2;
            if (j<=sum/2) mi=j;
            else mi=sum-j;
        }
    }
    printf("%d %d\n",mi,sum-mi);
    return 0;
}
  1. “`cpp
    //stat.cpp
    #include
    using namespace std;
    string a;
    int main() {
    freopen("stat.in","r",stdin);
    freopen("stat.out","w",stdout);
    string s;
    getline(cin,s);
    getline(cin,a);
    for (int i=0;i<s>=&#039;a&#039;&& s[i]<=&#039;z&#039;) s[i]+=&#039;A&#039;-&#039;a&#039;;
    for (int i=0;i<a>=&#039;a&#039;&&a[i]<=&#039;z&#039;) a[i]+=&#039;A&#039;-&#039;a&#039;;
    s=" "+s+" ";
    a=" "+a+" ";
    int ans=0;
    int ans1=a.find(s);
    if (ans1==-1) {
    cout<<-1<<endl;
    return 0;
    }
    for (int i=0;i<a.length();i=a.find(s,i+1))
    ans++;
    cout<<ans-1+(a.find(s)==0)<<" "<<ans1<<endl;
    return 0;
    }
    </li>
    </ol>

    <pre><code class="line-numbers">1. ```cpp
    //paixu.cpp
    #include<bits/stdc++.h>
    char t;
    //bool f;
    inline void read(int &__temp) {
    while ((t<'0'|| t>'9') && t!='-') t=getchar();
    __temp=0;
    int _f=t=='-'?-1:1;
    if (t=='-') t=getchar();
    while (t>='0' && t<='9') {
    __temp=__temp*10+t-'0';
    t=getchar();
    }
    __temp*=_f;
    }
    const int maxn=10010;
    int a[maxn],la;
    int main() {
    freopen("paixu.in","r",stdin);
    freopen("paixu.out","w",stdout);
    //for (int T=0;T<=9;T++) {
    while ((t=getchar())!=EOF) {
    int sum=0;
    for (;;) {
    int __temp;
    read(__temp);
    sum+=__temp;
    if (t=='\n') break;
    }
    a[la++]=sum;
    }
    std::sort(a,a+la);
    for (int i=0;i<la;i++)
    printf("%d\n",a[i]);
    // fclose(stdout);
    // fclose(stdin);
    //}
    return 0;
    }
    </code></pre>

    <ol>
    <li>
    “`cpp
    //等式
    #include
    #define int long long
    using namespace std;
    long long a,s,n,k,tmp;
    long long fun(long long x) {
    long long rt=round(pow(x,0.5));
    if(rt*rt==x) return rt;
    return -1;
    }
    signed main() {
    // freopen("snarf.in","r",stdin);
    // freopen("snarf.out","w",stdout);
    cin>>a;
    k=a;
    while(1) {
    s=(k*(k-1ll))/2ll;
    tmp=fun(4*k*k+4*k+8*s+1);
    if(tmp==-1) {
    k++;
    continue;
    }
    if((tmp-1)%2==1) {
    k++;
    continue;
    }
    n=(tmp-1)/2;
    cout<<k<<" "<<n;
    return 0;
    }
    return 0;
    }
    </li>
    </ol>

    <pre><code class="line-numbers">1.
    “`cpp
    //cowmult.cpp
    #include
    #include
    #include
    using namespace std;
    int main(){
    freopen("cowmult.in","r",stdin);
    freopen("cowmult.out","w",stdout);
    char a[20],b[20];
    int i,j,ans = 0;
    cin >> a >> b;
    for(i = 0; i < strlen(a); i++)
    for(j = 0; j < strlen(b); j++)
    ans = ans + (a[i] – '0') * (b[j] – '0');
    cout << ans << endl;
    return 0;
    }
    </code></pre>

    <ol>
    <li>
    “`cpp
    //date.cpp
    #include<bits/stdc++.h>
    using namespace std;
    string s[10005];
    bool f[10005];
    int main(){
    freopen("date.in","r",stdin);
    freopen("date.out","w",stdout);
    for(int i=0;i<10000;i++){
    int t=i;
    char a,b,c,d;
    s[i]="";
    d=(t%10)+'0';
    t/=10;
    c=(t%10)+'0';
    t/=10;
    b=(t%10)+'0';
    t/=10;
    a=(t%10)+'0';
    s[i]+=a;
    s[i]+=b;
    s[i]+=c;
    s[i]+=d;
    s[i]+=d;
    s[i]+=c;
    s[i]+=b;
    s[i]+=a;
    int q,w,e,r;
    q=d-'0';
    w=c-'0';
    e=b-'0';
    r=a-'0';
    if(q*10+w>12||q*10+w==0) continue;
    q=q*10+w;
    e=e*10+r;
    if(e==0) continue;
    if((q==1||q==3||q==5||q==7||q==8||q==10||q==12)&&e>31) continue;
    if((q==4||q==6||q==9||q==11)&&e>30) continue;
    if(q==2&&e>28) continue;
    f[i]=1;
    }
    f[9220]=1;
    string in1="",in2="";
    int x,y;
    scanf("%d%d",&x,&y);
    for(int i=1;i<=8;i++){
    char c;
    c='0'+(x%10);
    x=x/10;
    in1=c+in1;
    }
    for(int i=1;i<=8;i++){
    char c;
    c='0'+(y%10);
    y=y/10;
    in2=c+in2;
    }
    int ans=0;
    for(int i=0;i<10000;i++)if(s[i]>=in1&&s[i]<=in2&&f[i])ans++;
    printf("%d\n",ans);
    return 0;
    }
    </li>
    </ol>

    <pre><code class="line-numbers">1. “`cpp
    //expr.cpp
    #include
    #include
    #include
    #include
    using namespace std;
    char s[20000000];
    #define mo 10000
    int main() {
    freopen(“expr.in”,”r”,stdin);
    freopen(“expr.out”,”w”,stdout);
    scanf(“%s”,s);
    int ans = 0, tmp = 0;
    int m= strlen(s);
    int n=0;
    for(int i=0; i<m; i++) if(s[i]==’*’ || s[i]==’+’) n++;
    int i=0;
    while(s[i]=’0′) tmp=(tmp*10+s[i]-48)%mo,i++;
    for(int j=1; j<=n; j++) {
    char op=s[i++];
    int val=0;
    while(i< m && s[i]=’0′) val=(val*10+s[i]-48)%mo,i++;
    if(op==’*’) tmp = tmp * val % mo;
    else ans = (ans + tmp) % mo, tmp = val;
    }
    ans = (ans + tmp) % mo;
    printf(“%d\n”,ans);
    return 0;
    }

      • “`cpp
        //mine1.cpp
        #include<iostream>
        #include<cstdio>
        using namespace std;
        int dx[8] = {-1,-1,0,1,1, 1, 0,-1};
        int dy[8] = { 0, 1,1,1,0,-1,-1,-1};
        int main() {
        freopen("mine.in","r",stdin);
        freopen("mine.out","w",stdout);
        char mine[101][101];
        int sum[101][101] = {0};
        int n,m,i,j,ni,nj,k,ans = 0;
        scanf("%d %d\n",&n,&m);
        for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) mine[i][j] = getchar();
        getchar();
        }
        for(i = 0; i < n; i++)
        for(j = 0; j < m; j++)
        if(mine[i][j] == '?')
        for(k = 0; k < 8; k++) {
        ni = i + dx[k];
        nj = j + dy[k];
        if(ni >= 0 && ni < n && nj >= 0 && nj < m && mine[ni][nj] == '*' ) sum[i][j]++;
        }
        for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++)
        if(mine[i][j] == '*') putchar('*');
        else putchar(sum[i][j]+48);
        putchar('\n');
        }
        return 0;
        }
        </li>
        </ul></li>
        </ol>

        <pre><code class="line-numbers">- “`cpp
        //mine2.cpp
        #include
        using namespace std;
        const int maxn=110;
        char a[maxn][maxn];
        int dx[8]= {0,0,1,1,1,-1,-1,-1};
        int dy[8]= {1,-1,1,-1,0,1,-1,0};
        int main() {
        freopen(“mine.in”,”r”,stdin);
        freopen(“mine.out”,”w”,stdout);
        int n,m;
        scanf(“%d %d”,&n,&m);
        for (int i=1; i<=n; i++)
        scanf(“%s”,a[i]+1);
        for (int i=1; i<=n; i++)
        for (int j=1; j<=m; j++)
        if (a[i][j]==’?’) {
        int cnt=0;
        for (int k=0; k<8; k++)
        cnt+=a[i+dx[k]][j+dy[k]]==’*’;
        a[i][j]=cnt+’0′;
        }
        for (int i=1; i<=n; i++)
        printf(“%s\n”,a[i]+1);
        return 0;
        }


        注:以上代码并非全是作者所作,请勿恶意搬运,侵权必删

        (目前最长BLOG)
        2024-08-13 19:48:03 星期二

训练日志

文章导航

Previous Post: 2024 CZYZ DAY2
Next Post: 常州集训Day2

发表回复 取消回复

要发表评论,您必须先登录。

2025年 6月
一 二 三 四 五 六 日
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« 2月    

2024常州 Class Classic OI Problems Contest cqr的长乐集训2023 CZYZ LOC New Game NOI NOIP Password Protected PM_PK Preview Problems Retrospect Selfmade Qusetion STL The end Training Uneasy Problem 蒟蒻 通报

  • 训练日志
  • 链表
  • 入门
  • 模拟
  • dfs序
  • 并查集
  • spfa
  • 最小割
  • 矩阵树定理
  • 仙人掌
  • BSGS
  • 凸包
  • 回文自动机
  • 递推与动归
  • 堆
  • 莫队算法
  • ST表
  • Treap
  • 树套树
  • 可持久化线段树
  • 初赛
  • 搜索
  • 贪心
  • 深度优先搜索
  • 欧拉图
  • dijkstra
  • 费用流
  • 哈夫曼树
  • kruskual
  • 置换
  • 旋转卡壳
  • KMP
  • 区间动归
  • STL
  • 链表
  • 可并堆
  • sply
  • 主席树
  • 可持久化字典树
  • 算法
  • 动态规划
  • 构造
  • 广度优先搜索
  • 最短路
  • floyd
  • 最大流
  • 虚树
  • prim
  • 筛法
  • 半平面交
  • 字典树
  • 背包动归
  • 基础数据结构
  • 分块
  • 线段树
  • 替罪羊树
  • K-DTree
  • 图论
  • 二分法
  • 迭代搜索
  • 拓扑排序
  • 有上下界网络流
  • 生成树
  • 快速幂
  • 后缀数组
  • 树形动归
  • 哈希表
  • 中级数据结构
  • 平衡树
  • 可持久化数据结构
  • 数据结构
  • 三分法
  • 启发式搜索
  • 图的连通
  • 点分治
  • 博弈论
  • AC自动机
  • 状压动归
  • 单调栈
  • 树状数组
  • 高级数据结构
  • OI资料
  • 数学
  • 高精度
  • 差分约束
  • 树上倍增
  • 素数测试
  • 后缀自动机
  • 数位动归
  • 单调队列
  • 新闻
  • 几何
  • 随机化
  • 二分图染色
  • 树链剖分
  • 欧拉函数
  • manacher
  • 斜率优化
  • 离线处理
  • 信息学奥赛学长风采
  • 字符串
  • 二分图匹配
  • prufer编码
  • 卡特兰数
  • 密码学
  • 决策单调
  • 赛后总结
  • 其他
  • 2-SAT
  • 最近公共祖先
  • 矩阵乘法
  • 记忆化搜索
  • 网络流
  • Link cut tree
  • 排列组合
  • 树
  • 高斯消元
  • 乘法逆元
  • 容斥原理
  • 调和级数
  • 概率与期望
  • 模线性方程组
  • 莫比乌斯反演
  • 快速傅里叶变换
  • 扩展欧几里德
  • 最大公约数与最小公倍数

近期文章

  • DP杂题
  • 2025年2月13日模拟赛
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 3
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 2
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 1

近期评论

归档

  • 2025年2月
  • 2025年1月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月

Copyright © 2025 泉州一中信息学Blog.

Powered by PressBook WordPress theme