codeforces #197(div2)

A:就是将1、2、3、排序后后,中间依次加上'+'

#include
#include
#include
#include
#include
#include
using namespace std;
char s[110];
char ss[110];
int main()
{
    cin>>s;
    int len=strlen(s);
    int c1=0,c2=0,c3=0;
    for(int i=0;i


 

B:一步一步算,注意结果变量定义为__int64

#include
#include
#include
#include
#include
#include
using namespace std;
int a,now;
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    now=1;
    __int64 ans=0;
    for(int i=0;i=now)
            ans+=(a-now);
        else if(a


 

C:dfs 因为少加了一个条件,一直T,中间有一个细节处理参考其他人的

#include
#include
#include
#include
bool h[12],flag=false;
int a[1100];
int m;
void dfs(int n,int ch,int prev)
{
    if(n>m)
    {
        flag=true;
        printf("YES\n%d",a[0]);
        for(int i=1; i


 

D:处理太巧妙了,如果会做很简洁、优美的代码就过了。

它是这样处理的,加入n=3,数组标号:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  17将初始的8个数处在8-17中,输入一个处理一个,

第一轮或运算结果放在4-7中,第二轮异或运算放在2-3中,。。。。最后一个数放1中。

在询问时加入改变第n个数,则改变需要改变的数组中存放的值。加入8个数改变第五个,那么首先要改变6,3,1;需要处理的数只有几个而已。

#include
#include
#include
#include
#include
using namespace std;
int l[400000];
int n,m;
void solve(int p,int a)
{
    int t=1;
    l[p]=a;
    while(p>1)
    {
        p/=2;
        if(t==1)
            l[p]=l[p*2]|l[p*2+1];
        else
            l[p]=l[p*2]^l[p*2+1];
        t=t^1;
    }
}
int main()
{
    //cout<


 

你可能感兴趣的:(codeforces)