还是太菜了,一定抽时间把杭电能补的补完
目录
1007 Snatch Groceries(签到,四六级阅读题)
直接判断是否符合条件输出即可
- #include
- #define int long long
- using namespace std;
- const int N =5e5+10,mod=998244353;
- void solve()
- {
- string s,s1="";
- cin>>s;
- for(int i=0;i
- {
- if((s[i]>='0'&&s[i]<='9')||s[i]=='('||s[i]==')'||s[i]==','||s[i]=='-')
- s1+=s[i];
- }
- cout<
"\n"; - return ;
- }
- signed main()
- {
- int t;
- cin>>t;
- while(t--)
- solve();
- return 0;
- }
1003 Copy
思路:首先明确一件事,题目要求我们求异或和.如果一个数字被选中偶数次,那么在最终的异或和的贡献就为0,而为奇数则对结果贡献为本身.只含有01状态,所以我们想到可以采用bitset来表示这个区间内的数字被选取的情况,选取偶数次就为0,奇数次为1,每一位对应当前位置的数字是否被选择.
然后就是对于题目中1,2操作的模拟.如果正向模拟会发现很难处理,这个时候如果把操作反着进行,会发现思路:

每次我们对于某个位置进行2操作处理的话,那么这个位置的bitset值就会取反.如果是一操作的话,因为我们是倒着处理,那么完全可以把有原bitset中的r+1到N这一段进行向左(图中是向左,但是bitset相反)移动,直到r+1覆盖到 l 的位置,因为是倒着来的,所以我们后面的r+1到N其实是l到r这个区间后移得到的,那我们反着来前移就会返回上一步的状态,而且也不会影响结果,所以反着来模拟即可.我们把r+1到N和1到r这一段进行异或,为1的区间就表示这个点还是会被选中.
- #include
- using namespace std;
- const int N=1e5+10;
- bitset
f,bef,now; - int a[N];
- int op[N][3];
- void solve()
- {
- int n,m;
- f.reset();
- bef.reset();
- now.reset();
- cin>>n>>m;
- for(int i=1;i<=n;i++)
- cin>>a[i];
- for(int i=1;i<=m;i++)
- {
- cin>>op[i][0];
- if(op[i][0]==1)
- cin>>op[i][1]>>op[i][2];
- else
- cin>>op[i][1];
- }
- //已知取偶数次进行异或相当于没有取,所以想到bitset
- for(int i=m;i>=1;i--)
- {
- if(op[i][0]==1)
- {
- int l=op[i][1],r=op[i][2];
- bitset
temp; - temp.set();
- bef=f&(temp>>(N-r-1));
- //取得0-r这一段
- temp.set();
- now=f&(temp<<(r+1));
- //取得r+1-n这一段
- f=bef^(now>>(r-l+1));
- //看移动后相交区域
- }
- else
- {
- int x=op[i][1];
- f[x]=!f[x];
- }
- }
- int res=0;
- for(int i=1;i<=n;i++)
- if(f[i])
- res^=a[i];
- cout<
- return ;
- }
- signed main()
- {
- cin.tie(0);
- cout.tie(0);
- ios::sync_with_stdio(0);
- int t;
- cin>>t;
- while(t--)
- solve();
- return 0;
- }
1007 Snatch Groceries(签到,四六级阅读题)
直接判断哪些线段没有和其他线段相交即可
- #include
- #include
- using namespace std;
- const int N = 1e5 + 10;
- struct edge
- {
- int l,r;
- bool operator < (const edge & A)const{
- if(l == A.l) return r < A.r;
- return l < A.l;
- }
- }e[N];
- void solve()
- {
- int n;
- scanf("%d",&n);
-
- int ans = 0;
- for(int i=1;i<=n;i++)
- {
- scanf("%d%d",&e[i].l,&e[i].r);
- }
- sort(e+1,e+1+n);
- for(int i=1;i<=n;i++)
- {
- if((i + 1 <= n && e[i + 1].l > e[i].r) || i == n)ans ++;
- else break;
- }
- printf("%d\n",ans);
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- while(T--)solve();
- return 0;
- }
1009 ShuanQ(数学,思维)
思路:我们可以把式子转化一下变为:

由此可以知道m是p*q-1的一个质因子,又因为要满足m>=p且m>=q.所以我们直接用质因数分解来求出p*q-1的最大质因子,这个就是m的值,再check一下m和p,q的值即可
- #include
- #define int long long
- using namespace std;
- void solve()
- {
- int p,q,en;
- cin>>p>>q>>en;
- int m=p*q-1;
- for(int i=2;i*i<=m;i++)
- while(m%i==0)
- m/=i;
- if(m
- cout<<"shuanQ"<
- else
- {
- int ans=en*q%m;
- cout<
- }
- return ;
- }
- signed main()
- {
- cin.tie(0);
- cout.tie(0);
- ios::sync_with_stdio(0);
- int t;
- cin>>t;
- while(t--)
- solve();
- return 0;
- }
1012 Luxury cruise ship(思维)
思路:去年好像在cf上做过类似的题.我们先求出7,31,365的最小公倍数,因为三者互质,直接相乘即可.然后用n%lcm,整除lcm的部分我们用贪心去算,因为是7,31,365的公倍数,所以我们直接全部用365装就是最优解.然后剩下的部分也不大,直接三层for循环跑一下就行了(背包也可以,反正剩下部分不大,直接瞎搞)
- #include
- #define int long long
- using namespace std;
- const int N =5e5+10,mod=998244353;
- void solve()
- {
- int n,lcm=7*31*365;
- cin>>n;
- if(n>=lcm)
- {
- int temp=n/lcm;
- n%=lcm;
- int ans=1e18;
- for(int i=0;i*365<=n;i++)
- {
- for(int j=0;j*31<=n;j++)
- {
- if(n-i*365-j*31<0)
- break;
- if((n-i*365-j*31)%7==0)
- {
- ans=min(ans,i+j+(n-i*365-j*31)/7);
- }
- }
- }
- if(ans==1e18)
- {
- cout<<"-1\n";
- }
- else
- {
- ans+=temp*7*31;
- cout<
"\n"; - }
- }
- else
- {
- int ans=1e18;
- for(int i=0;i*365<=n;i++)
- {
- for(int j=0;j*31<=n;j++)
- {
- if(n-i*365-j*31<0)
- break;
- if((n-i*365-j*31)%7==0)
- {
- ans=min(ans,i+j+(n-i*365-j*31)/7);
- }
- }
- }
- if(ans==1e18)
- {
- cout<<"-1\n";
- }
- else
- {
- cout<
"\n"; - }
- }
- return ;
- }
- signed main()
- {
- int t;
- cin>>t;
- while(t--)
- solve();
- return 0;
- }
- //genius
-
相关阅读:
11.9 实现磁盘相关操作
ComponentSpace SAML Suite Crack
从 B 站出发,用 Chrome devTools performance 分析页面如何渲染
Impala字符串截取left、right、substr/substring
clang-前端插件-给各种无花括号的“块”加花括号-基于llvm15--clang-plugin-add-brace
volatile原理解析
Hadoop伪分布式环境搭建
面试题-React(十一):性能优化之PureComponent和memo
一步解决Logcat日志错误:read: unexpected EOF!
rxjs pipeable operators(下)
-
原文地址:https://blog.csdn.net/qq_49593247/article/details/126078504