Codeforces Round #277(Div. 2) (A Calculating Function, B OR in Matrix, C Palindrome Transformation)

简介:

#include<iostream>
#include<cstring>
#include<cstdio>
/*
 题意:计算f(n) = -1 + 2 -3 +4.....+(-1)^n *n的值    
 思路:偶数和 - 奇数和(或者用等差数列计算化简得到结果) 
*/
#include<algorithm>
#define N 10000
using namespace std;

int main(){
    long long n;
    cin>>n;
    if(n%2==0)  cout<<n/2<<endl;
    else cout<<(n-1)/2 - n<<endl;
    return 0;
} 

/*
题意:给定B矩阵,判定能否通过A矩阵得到,如果能,打印出这样的A矩阵
    Bij = Ai1||Ai2....||Ain || A1j || A2j .....|| Amj
思路:如果Bij == 0, 那么A矩阵的第i行和第j列的值都为0;
      然后检查Bij == 1的时候,那么A矩阵的第i行元素和第j列元素至少要一个1! 
*/ 
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 105
using namespace std;

int a[N][N];
int b[N][N];
int row[N], col[N];
int main(){
    int n, m;
    cin>>n>>m;
    for(int i=1; i<=100; ++i)
        for(int j=1; j<=100; ++j)
            a[i][j] = 1;
    bool flag = true;
    for(int i=1; i<=n; ++i)
        for(int j=1; j<=m; ++j){
            cin>>b[i][j];
            if(b[i][j] == 0){
                for(int k=1; k<=m; ++k)
                    a[i][k] = 0;
                for(int k=1; k<=n; ++k)
                    a[k][j] = 0;
            }
        } 
    for(int i=1; flag && i<=n; ++i)
        for(int j=1; flag&& j<=m; ++j)
            if(b[i][j] == 1){
                int k, h;
                for(k=1; k<=m; ++k)
                    if(a[i][k]==1) break;
                for(h=1; h<=n; ++h)
                      if(a[h][j] ==1 ) break;
                if(k>m && h>n) flag = false;
            }
    if(flag){
        cout<<"YES"<<endl;
        for(int i=1; i<=n; ++i){
            cout<<a[i][1];
            for(int j=2; j<=m; ++j)
                cout<<" "<<a[i][j];
              cout<<endl;
        } 
    }
    else cout<<"NO"<<endl;
    return 0;
} 

/*
题意:从字符串的某一个位置开始,执行向左,向右的操作到达某一个字符的位置,
    通过向上,向下来完成字符的转换,知道字符串变成一个回文串为止!
    
思路:贪心,在一半的区间完成这些操作一定是最少的(回文串是对称的,所以我们只考虑
      一半的区间是对的),并且最多转一次弯儿! 
*/ 
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 100005
using namespace std;
char str[N];
int num;
int main(){
    int n, p;
    cin>>n>>p;
    cin>>str+1;
    int len = n;
    if(p>len/2) p = len-p+1;
    int lx = N, rx = -1;
    for(int i=1; i<=len/2; ++i)//找到个需要更改字符区间 
        if(str[i] != str[len-i+1]){
            num += min(abs(str[i]-str[len-i+1]), 'z'-max(str[i], str[len-i+1])+(min(str[i], str[len-i+1])-'a')+1);
            if(lx > i) lx=i;
            if(rx < i) rx=i;
        }
     
    if(lx != N){
        if(lx<=p && rx>=p){
            int d1 = abs(rx-p);
            int d2 = abs(lx-p);
            if(d1>d2) num+=2*d2+d1;
            else num+=2*d1+d2;
        } 
        else if(rx<=p)  num+=p-lx;
        else if(lx>=p)  num+=rx-p; 
        cout<<num<<endl;
    } else cout<<0<<endl;
    return 0;
}

目录
相关文章
|
机器学习/深度学习 人工智能 BI
Codeforces Round #277(Div. 2) (A Calculating Function, B OR in Matrix, C Palindrome Transformation)
1 #include 2 #include 3 #include 4 /* 5 题意:计算f(n) = -1 + 2 -3 +4.....+(-1)^n *n的值 6 思路:偶数和 - 奇数和(或者用等差数列计算化简得到结果) 7 */ ...
905 0
|
8月前
|
人工智能 Python
083_类_对象_成员方法_method_函数_function_isinstance
本内容主要讲解Python中的数据类型与面向对象基础。回顾了变量类型(如字符串`str`和整型`int`)及其相互转换,探讨了加法在不同类型中的表现。通过超市商品分类比喻,引出“类型”概念,并深入解析类(class)与对象(object)的关系,例如具体橘子是橘子类的实例。还介绍了`isinstance`函数判断类型、`type`与`help`探索类型属性,以及`str`和`int`的不同方法。最终总结类是抽象类型,对象是其实例,不同类型的对象有独特运算和方法,为后续学习埋下伏笔。
165 7
083_类_对象_成员方法_method_函数_function_isinstance
|
8月前
|
Python
[oeasy]python086方法_method_函数_function_区别
本文详细解析了Python中方法(method)与函数(function)的区别。通过回顾列表操作如`append`,以及随机模块的使用,介绍了方法作为类的成员需要通过实例调用的特点。对比内建函数如`print`和`input`,它们无需对象即可直接调用。总结指出方法需基于对象调用且包含`self`参数,而函数独立存在无需`self`。最后提供了学习资源链接,方便进一步探索。
196 17
|
8月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
204 11
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
599 1
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
150 0
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新语法,相比传统函数表达式更简洁,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。这使得箭头函数在处理回调和闭包时更加灵活方便。

热门文章

最新文章