[日常水题 3.16] codeforce 948A, 949A

本文提供两道算法题目的解决方案:一是通过放置狗来保护羊不受狼威胁的问题;二是构建斑马队列以最大化子序列长度的问题。通过C++代码实现并分析了每道题目的解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

948 A. Protect Sheep

  • 描述(略)
  • 所有空地放犬,如果所有狼上下左右都没有羊,则安全。
  • code
#include <bits/stdc++.h>  
//#define LOCAL_DEFINE
#define for0(i, n) for(int i = 0; i < n; i++)
using namespace std;     
char mp[505][505];
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1};
int main() {    
    ios::sync_with_stdio(false);cin.tie(0);       
#ifdef LOCAL_DEFINE    
    freopen("input.txt", "rt", stdin);    
#endif     

    int r, c;
    char ch;
    bool bo = false;
    cin >> r >> c;
    for0(i, r) {
        for0(j, c) {
            cin >> ch;
            if(ch == '.') ch = 'D';
            mp[i][j] = ch;
        }
    }
    for0(i, r) {
        for0(j ,c) {
            if(mp[i][j] == 'S') {
                for0(k, 4) {
                    int tx = i + dx[k];
                    int ty = j + dy[k];
                    if (!(tx >= 0 && tx < r && ty >= 0 && ty < c)) continue;
                    if(mp[tx][ty] == 'W') 
                        bo = true;
                }
            }
        }
    }   
    if(bo == true) cout << "No" << endl;
    else {
        cout << "Yes" << endl;
        for0(i, r) {
            for0(j, c) {
                cout << mp[i][j];
            }
            cout << endl;
        }
    }


#ifdef LOCAL_DEFINE    
    cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";    
#endif    
    return 0;    
}  

949 A. Zebras

  • 描述(略)
  • 思路:用优先队列利用0,1的变更去增加子序列nlogn。看别人的代码感觉用普通队列也可以,甚至可以不用队列保存状态。。还是要多思考多学习。
#include <bits/stdc++.h>  
//#define LOCAL_DEFINE
using namespace std;

const int maxn = (int)2e6 + 10;
priority_queue<int, vector<int>, greater<int> > q0, q1;
//queue<int> q0, q1;
vector<int> v[maxn];
int cnt;
int main(void) {
    ios::sync_with_stdio(false);cin.tie(0);       
#ifdef LOCAL_DEFINE    
    freopen("input.txt", "rt", stdin);    
#endif     

    string s;
    cin >> s;
    for(int i = 0, x; i < (int)s.size();i++) {
        if(s[i] == '0') {
            if(q1.empty()) {
                x = ++cnt;
                v[x].push_back(i);
                q0.push(x);
            }
            else {
                x = q1.top();
                q1.pop();
                v[x].push_back(i);
                q0.push(x);
            }
        }
        else if(s[i] == '1') {
            if(q0.empty()) puts("-1"), exit(0);
            else {
                x = q0.top();
                q0.pop();
                v[x].push_back(i);
                q1.push(x);
            }
        }
    }
    if(!q1.empty()) puts("-1"), exit(0);
    else {
        cout << cnt << endl;;
        for(int i = 1; i <= cnt; i++) {
            cout << (int)v[i].size();
            for(int j = 0; j <(int)v[i].size(); j++)
                cout << " " << v[i][j] + 1;
            cout << endl;
        }
    } 

#ifdef LOCAL_DEFINE    
    cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";    
#endif 
        return 0;
}
#include <bits/stdc++.h>
using namespace std;

const int maxn = (int)2e6 + 10;
vector<int> v[maxn];
string s;
int sum, temp;

int main(void) {
    ios::sync_with_stdio(false);cin.tie(0);       
#ifdef LOCAL_DEFINE    
    freopen("input.txt", "rt", stdin);    
#endif

    cin >> s;
    for(int i = 0; i < (int)s.size(); i++) {
        if(s[i] == '0') {
            if(temp == 0) {
                v[++sum].push_back(i);
            }
            else {
                v[temp--].push_back(i);
            }
        }
       else if(s[i] == '1') {
            v[++temp].push_back(i);
           if(temp > sum) puts("-1"), exit(0); 
        }
    }
    if(temp != 0) puts("-1"), exit(0);
    cout << sum << endl;
    for(int i = 1; i <= sum; i++) {
        cout << (int)v[i].size();
        for(auto j :v[i]) {
            cout << " " << j + 1;
        }
        cout << endl;
    }

#ifdef LOCAL_DEFINE    
    cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";    
#endif 
    return 0;
}

每天复习完坚持水水题,一套cf的 A-C,其实不太需要算法,多思考可以提高编程思维。
厚积薄发,一年后爬分。

内容概要:《中文大模型基准测评2025年上半年报告》由SuperCLUE团队发布,详细评估了2025年上半年中文大模型的发展状况。报告涵盖了大模型的关键进展、国内外大模型全景图及差距、专项测评基准介绍等。通过SuperCLUE基准,对45个国内外代表性大模型进行了六大任务(数学推理、科学推理、代码生成、智能体Agent、精确指令遵循、幻觉控制)的综合测评。结果显示,海外模型如o3、o4-mini(high)在推理任务上表现突出,而国内模型如Doubao-Seed-1.6-thinking-250715在智能体Agent和幻觉控制任务上表现出色。此外,报告还分析了模型性价比、效能区间分布,并对代表性模型如Doubao-Seed-1.6-thinking-250715、DeepSeek-R1-0528、GLM-4.5等进行了详细介绍。整体来看,国内大模型在特定任务上已接近国际顶尖平,但在综合推理能力上仍有提升空间。 适用人群:对大模型技术感兴趣的科研人员、工程师、产品经理及投资者。 使用场景及目标:①了解2025年上半年中文大模型的发展现状与趋势;②评估国内外大模型在不同任务上的表现差异;③为技术选型和性能优化提供参考依据。 其他说明:报告提供了详细的测评方法、评分标准及结果分析,确保评估的科学性和公正性。此外,SuperCLUE团队还发布了多个专项测评基准,涵盖多模态、文本、推理等多个领域,为业界提供全面的测评服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值