codeforces #197(div2)
A:就是將1、2、3、排序後後,中間依次加上'+'
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
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<len;i++)
{
if(s[i]=='1')
c1++;
if(s[i]=='2')
c2++;
if(s[i]=='3')
c3++;
}
for(int i=0;i<c1;i++)
s[i]='1';
for(int i=c1;i<c1+c2;i++)
s[i]='2';
for(int i=c1+c2;i<c1+c2+c3;i++)
s[i]='3';
int ret=0;
for(int i=0;i<len;i++)
{
if(i%2==0)
{
ss[i]=s[ret];
ret++;
}
else
ss[i]='+';
}
puts(ss);
return 0;
}
B:一步一步算,注意結果變數定義為__int64
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
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<m;i++)
{
scanf("%d",&a);
if(a>=now)
ans+=(a-now);
else if(a<now)
ans+=(n+a-now);
now=a;
//cout<<ans<<endl;
}
cout<<ans<<endl;
return 0;
}
C:dfs 因為少加了一個條件,一直T,中間有一個細節處理參考其他人的
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
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<n; ++i)
printf(" %d",a[i]);
printf("\n");
return;
}
for(int i=ch+1; !flag&&i<=10; ++i) //flag沒做判斷,一直T
if(h[i]&&i!=prev)
{
a[n]=i;
dfs(n+1,i-ch,i); //**很神奇的安排 i-ch加入後使之相等的值,i前一個值作比較
}
}
int main()
{
char c;
for(int i=1;i<=10;i++)
{
scanf("%c",&c);
if(c=='1')
h[i]=true;
}
scanf("%d",&m);
m--;
dfs(0,0,0);
if(flag==false )
printf("NO\n");
return 0;
}
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<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
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<<pow(2,18)<<endl;
scanf("%d%d",&n,&m);
int a,b;
n=1<<n;
for(int i=1;i<=n;i++)
{
scanf("%d",&a);
solve(i+n-1,a);
}
while(m--)
{
scanf("%d%d",&b,&a);
solve(b+n-1,a);
printf("%d\n",l[1]);
}
return 0;
}
相關文章
- Codeforces #245(div2)
- codeforces #198(div2)
- Codeforces Round#197 前三題
- Codeforces Round #470 div2 C
- Codeforces Round #FF(255) DIV2
- Codeforces #213 div2前三題
- codeforces 260 div2 A,B,C
- Educational Codeforces Round 171 div2(A~E)
- codeforces #215 div2前四題
- Codeforces Round #226 div2(待更新)
- codeforces #220 div2前三題
- Codeforces Round 980 div2 個人題解(A~D)
- Codeforces Round 979 div2 個人題解(A~E)
- Codeforces Rund 976 div2 個人題解(A~E)
- Codeforces Round 983 div2 個人題解(A~D)
- Codeforces Round #231 div2前三題
- codeforces round #201 Div2 A. Difference Row
- codeforces round #234B(DIV2) A Inna and Choose Options
- Codeforces Round 982 div2 個人題解(A~D2)
- Codeforces Rund 977 div2 個人題解(A~E1)
- codeforces round #234B(DIV2) B Inna and New Matrix of Candies
- codeforces round #234B(DIV2) C Inna and Huge Candy Matrix
- Codeforces #208 div2前兩題及思維風暴
- Indexes and Keys (197)Index
- topcoder SRM 592 DIV2 LittleElephantAndBooks
- topcoder SRM 593 DIV2 RaiseThisBarnAI
- topcoder 594 DIV2 foxandclassroomOOM
- topcoder SRM 593 DIV2 WolfDelaymasterAST
- topcoder SRM 591 DIV2 TheArithmeticProgression
- topcoder SRM 628 DIV2 BishopMove
- topcoder SRM 628 DIV2 BracketExpressionsRacketExpress
- 958-round Div2比賽
- Oracle 11G OCP 1Z0-053 197Oracle
- topcoder SRM 610 DIV2 TheMatrix
- Topcoder SRM 626 DIV2 SumOfPower
- topcoder SRM 624 DIV2 CostOfDancing
- topcoder SRM 625 DIV2 AddMultiply
- topcoder SRM 625 DIV2 IncrementingSequenceREMGse