思路分析
直接累计各元素绝对值即可 ## AC代码
#include<bits/stdc++.h> using namespace std; using ll=long long; const int MAXN=2e5+10; void solve(){ int n,ans=0; cin>>n; for(int i=0;i<n;i++){ int x; cin>>x; if(x>0)ans+=x; else ans-=x; } cout<<ans<<"\n"; } int main(){ ios::sync_with_stdio(0); int t; cin>>t; while(t--){ solve(); } }
|
# Problem B ##
思路分析 两种操作:去除一个元素,或者某个元素+1。 其实可以发现,\(sum\)%\(3\)结果只有\(0,1,2\). \(0:\)直接输出0即可。 \(1:\)要不删去一个元素(其取模结果为1),要不加2,所以可以用个\(flag\),看看有没有这样的元素存在。 \(2:\)要不删去一个元素,要不加1,无所谓,都是两次操作。
## AC代码
#include<bits/stdc++.h> using namespace std; using ll=long long; const int MAXN=1e5+10; void solve(){ int n,flag=0;cin>>n; ll sum=0; for(int i=1;i<=n;i++){ int x;cin>>x; if(x%3==1)flag=1; sum+=x; } if(sum%3==0)cout<<0<<"\n"; else if(sum%3==2)cout<<1<<"\n"; else{ if(flag)cout<<1<<"\n"; else cout<<2<<"\n"; } } int main(){ ios::sync_with_stdio(0); int t; cin>>t; while(t--){ solve(); } }
|
思路分析
坐牢的开始qwq,自己想得太复杂了,其实直接用快速幂枚举\(x,y\)即可(看了队里大佬的代码)。
这里去重有个小技巧,可以用\(set\),这样就可以不用写判断是否重复的条件(set可以直接去重),最后输出\(set.size()\)即可。 ## AC代码
#include<bits/stdc++.h> using namespace std; using ll=long long; const int MAXN=2e5+10; int quickpower(int a,int n){ int ans=1; while(n){ if(n&1)ans*=a; n>>=1; a*=a; } return ans; } void solve(){ int a,b,l;cin>>a>>b>>l; set<int> s; for(int x=0;quickpower(a,x)<=l;x++){ for(int y=0; quickpower(a,x)*quickpower(b,y)<=l;y++){ int num=quickpower(a,x)* quickpower(b,y); if(l%num==0){ s.insert(l/num); } } } cout<<s.size()<<"\n"; } int main(){ ios::sync_with_stdio(0); int t; cin>>t; while(t--){ solve(); } }
|
思路分析
看看样例,可以大胆猜测一下,先从小到大排序,可以发现,\(SmallElememt\)%\(BigElememt\)肯定不为0,那么这样贪心排序下来,如果可以得到结果不为0,满足题意,直接\(return\)即可。
但是,需要特判是否有相同的情况,只需要考虑\(a_0、a_1\)即可,后面是否连续无影响,如果\(a_0==a_1\),则不满足题意。 ## AC代码
#include<bits/stdc++.h> using namespace std; using ll=long long; const int MAXN=1e5+10; void solve(){ int n;cin>>n; vector<int>a(n); for(int i=0;i<n;i++)cin>>a[i]; sort(a.begin(),a.end()); if(a[1]!=a[0]){ cout<<"YES\n"; return; } for(int i=1;i<n;i++){ if(a[i]%a[0]!=0){ cout<<"YES\n"; return; } } cout<<"NO\n"; } int main(){ ios::sync_with_stdio(0); int t; cin>>t; while(t--){ solve(); } }
|
以后再补qwq